Hirdetés
-
Friss előzetesen a Destiny 2: The Final Shape
gp Érkezik az utolsó nagy kiegészítő, azonban a fejlesztők szerint ettől még nem lesz vége a franchise-nak.
-
AMD Radeon undervolt/overclock
lo Minden egy hideg, téli estén kezdődött, mikor rájöttem, hogy már kicsit kevés az RTX2060...
-
Május 7-én lesz az új iPadek bemutatója
ma Online termékbemutatót tart az Apple május 7-én, a közvetítésen iPadek és hozzájuk tartozó kiegészítők lesznek a téma.
Új hozzászólás Aktív témák
-
instantwater
addikt
Minden hónapban felvesznek valami mid és junior közti fejlesztőt, és mindemellett senkit nem rugnak ki.
Egyszerűen nem értem, hogy hogy a fenébe van bevétele a cégnek, ha egyfolytában valami elromlik, és kézi rásegítéssel kell átrugdalni a rendszert a hétvégéken.
A túlórát le lehet csúszni, ritkább esetekben kifizetik előzetes megegyezés alapján.
A foreign key ismeretlen fogalom, de bekapcsolni sem lehet, mert annyira alacsony minőségű az adat, hogy a foreign táblában van rengeteg olyan rekord amihez a forrástáblában nincs adat, így FK kilőve.
Indexek voltak 1-1 oszlopon, de jellemzően 3-4 oszlopos WHERE feltételek vannak a lekérdezésekben.
Csináltam 3-4 oszlopos indexet, erre kiderült, hogy az adatbázis mező az varchar, de a rendszer integerként küldi az értéket a queryben. Ekkor az adatbázisnak castolni kell többmillió rekordot integerre, hogy le tudja futtatni a lekérdezést.
Castolással 30 mp, castolás kényszerítése nélkül helyesen stringként használva a mezőt a queryben lefut ugyanaz 300 ms alatt.Van egy olyan agyrém, hogy minden kliensnek (cégek) van egy külön táblája , amiben minden van. Az ügyfelektől kezdve a rendelésekig minden.
És van kb 200 (!!!) ilyen tábla.
Skálázhatósági mennyország.De a főnök már Kubernetesről álmodik .
Mondanom sem kell, bevallja magáról, hogy nem tech szakember, nem ért hozzá, csak ömlik belőle a megvalósíthatatlan ötletek sorozata.Mondtam neki, hogy minimum 6-12 hónap amit kér, de van egy nagydumás kolléga aki eladja a főnöknek a szép álmokat. Mindent megigér péntekre és hónap végére. Minden héten péntekre és minden hónap végére, amiből soha nincs semmi kézzelfogható vagy használható eredmény.
És amikor mondom, hogy egy kamugép az ürge, még engem néz hülyének a főnök.Tuti bestseller lenne az a könyv, ha megírnám
[ Szerkesztve ]
-
coco2
őstag
válasz instantwater #20301 üzenetére
Attól függően, hogy mekkora az a cég, szó lehet különféle dolgokról. Példa. Hallottam már sütödéről, amelyik direkt tartja alacsonyan a profitot, mert ha valaha megnő, nyakára mászik a tolvaj banda a polgármesteri hivatalból, és elveszik tőle. És az még csak egy viszonylag kicsi cég egyszerű ok-okozati összefüggésekkel.
A kubernetesről egyébként nem tudom, mennyire vakítja a népeket. Én ránéztem doksikra, és rendszerszintű konténereket kezel. Ha nekem adat alapú a felépítésem, kb semmire kell. Akár hátrébb vagyok vele, mint előrébb. De aki brossúra dumákat olvas naphosszat, biztos máshogy látja.
[ Szerkesztve ]
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
coco2
őstag
válasz instantwater #20303 üzenetére
B2B üzletek még mindig felelősségbiztosítással futnak? Vagy azt már hátra hagyta a világ?
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
pigmeus
tag
Sziasztok, akkor próbálkozok itt is hátha PHP-t kezdtem el tanulni, de az OOP részét sajnos nem igazán vágom és egy feladatot kéne átfordítanom. Sajnos full kezdő vagyok.
Keresés funkció átírásában kérnék segítséget, meg a többiben is majd.
Ez a lekérdezés fut le
<script>
$(function(){
$(".search_text").keyup(function(){
var text = $(this).val();
if(text != ""){
$.ajax({
url: "fetch.php",
type: "post",
dataType: "text",
data: {search:text},
success: function(data){
$(".result").html(data);
} })
}
else{
$(".result").html('');
} }) })</script>majd a fetch.php az alábbi fut le, ahol eltárolom majd megjelenítem az adatokat.
$search = mysqli_real_escape_string($con, $_POST["search"]);
$sql = "SELECT * FROM termekek WHERE nev LIKE '%".$search."%'";
$result = mysqli_query($con, $sql) or die('Error querying database.'); //
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_array($result)){
$id = $row["id"];
Itt abban akadtam el, hogy érdemes e a mysqli_real_escape_string-et erőltetni, illetve hogyan tudom OOP segítségével eltárolni majd megjeleníteni az adatokat. -
coco2
őstag
válasz pigmeus #20306 üzenetére
Ezt a mákos tésztát szét kellene válogatni. A javascript-nek van külön topic-ja. A php-s oldalra az tartozik, amikor a php scrit elindul szerver oldalon. A webezés szépségei ugye. Külön a html, külön a javascript, külön a php.
Az "OOP-val megoldani" dologról biztos nem könnyű fiatalon leszokni, amikor valaki suliban összetalálkozik élete első beadandójával, és még misztikus fellegekben kergeti a fogalmakat. Próbáld megérteni, hogy az OOP pusztán egy keret szervezési ajánlás, és a hozzá tartozó szintaktikák, ahogyan a kód egészét formázod. Azon túl semmi más. A script attól függetlenül működik (vagy nem működik), hogy követed-e annak az ajánlásnak az utasításait. A tanárod talán nem fogadja el máshogyan a beadandót, de maga a számítógép rá se tojik arra a körülményre, és a scriptedet a számítógép futtatja, nem az előítéletes szaktanárod.
A mysqli::real_escape_string -re példát a php.net website-on találsz. Jegyezd fel magadnak azt a php.net website-ot, mert nagyon sűrűn fogsz ott doksikat olvasgatni.
Ez a sor:
while($row = mysqli_fetch_array($result)){
egy változóba rakja be az adatokat. És ott vannak.Megjelenítéshez pld:
echo $id."<br>";
vagyvar_dump($row);
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
coco2
őstag
válasz instantwater #20309 üzenetére
A célzást mindössze az alapok megértésének a fontosságára, és a fogalmazási stílusra irányítottam. Nem javasoltam neki olyat, hogy dobja sutba az oop-t. Egyébként én a mysqli::real_escape_string() helyett jobb szeretem a mysqli_real_escape_string()-et. És azt is be lehet rakni oop keretekbe
A mysqli_-vel nem tudom, mi bajod. A mysql_ ment ki a divatból a 7-es php-val, nem a mysqli_. A mysqli_ köszöni szépen, remekül megvan. És itt egy performance teszt a hitviták rövidrezárására.
A stresszesebb cégeknél gyaníthatóan a felelősségbiztosítási pénzre megy a játék. De ha nem tud arra rálátásod lenni sehogyan, akkor persze nincs mit tenned vele.
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
instantwater
addikt
Csupán annyi a bajom vele, hogy a parameter binding sokkal kevésbé macerás mint escapelt stringeket összefűzögetni.
[link]Az EMULATE_PREPARES pedig nem véletlenül nincs bekapcsolva alapból.
Az numeric értékeket stringként küldi el az adatbázisnak, így az összes numeric index megy a kukába.[ Szerkesztve ]
-
RedHarlow
aktív tag
Sziasztok, egy a DB-ben számként elmentett adatnál a megjelenítésénél mivel tudom elérni, hogy pénz formátumban jelenjen meg?
'.$row['PRICE'].' Ft
Tehát, ez helyett:
17649973 FtEzt szeretném:
17 649 973 Ft[ Szerkesztve ]
-
instantwater
addikt
-
pigmeus
tag
érzem én, hogy ez már fájdalmas lesz, meg nem olyan egyszerű, ahogy ezt előadták.
Ha rossz helyen kopogtatok szóljatok nyugodtan. Persze jobb lenne az alapokat még jobban megérteni, de most ez van, aztán az is lehet, hogy ez kb full egyszerű, csak én vesztem el valahol
Javascript, ebben az esetben annyiból kell, hogy eltárolja a keresett szót POST-al és majd a result-tal megjelenítem az eredményt. Ezután pedig órán úgy csináltuk, hogy egy másik .php oldalon a search-re lefut a keresés, találat esetén echo-val megjeleníti vagy kiírja, hogy nincs találat az adatbázisban.
És ezt a keresés funkciót kell átírni ~"OOP"-ra. Ami az én értelmezésem szerint ez a pár sor lenne:
$search = mysqli_real_escape_string($con, $_POST["search"]);
$sql = "SELECT * FROM termekek WHERE nev LIKE '%".$search."%'";
$result = mysqli_query($con, $sql) or die('Error querying database.'); //
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_array($result)){
$id = $row["id"];
Amit előadtak "php OOP"-ként, jelenleg így néz ki pár példa alapján pár sorban, hogy kb mit várnak vissza:
<?php
public function show_termek($id){
$dbCon = parent::connect();
$res=$dbCon->prepare("SELECT id,nev,ar,cikkszam FROM termekek WHERE id=?");
$res->bindParam(1,$id);
$res->execute();
$termek =$res->fetchAll();
return $termek; }Fenti sort pedig így hívom meg és jelenítem meg az adatbázist:
<?php
if(isset($_GET['termekid'])){
$termekid = $_GET['termekid'];
$termek = $sql->show_termek('$termekid');
foreach($termek as $kuls =>$ertek){
echo" ".$ertek[0]." "} -
RedHarlow
aktív tag
Köszönöm!
Még egy kérdésem lenne, szeretnék kilistázni adatokat teljes hónapra, azonban az egyik db táblámban csak akkor jön létre sor ha van tényleges adat. A weboldalon azonban szeretném ha ezen tábla esetében is látszódna minden napra adat. Tudtok erre valami egyszerű megoldást? Ti hogy oldanátok meg? Én is gondolkoztam megoldásokon de szerintem nagyon túlbonyolítom az egész már fejben.
tehát a db így néz ki mondjuk:
Jan 1 2500 FT 14 db
Jan 3 5000 FT 1 db
Jan 4 2500 FT 1 dbés azt szeretném, hogy így nézzen ki a tábla az oldalamon:
Jan 1 2500 FT 14 db
Jan 2 0 Ft 0db
Jan 3 5000 FT 1 db
Jan 4 2500 FT 1 db -
sztanozs
veterán
válasz RedHarlow #20315 üzenetére
Vagy adatbázis-oldalon csinálsz egy join-t, vagy kód oldalon ellenőrzöd, hogy az adott sor létrejön-e.
Adott hónapra SQL-lel:
set @year = 2021, @month = 1;
SELECT
a.Date,
IFNULL(b.osszeg, 0),
IFNULL(b.darabszam, 0)
FROM (
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(CONCAT(@year,'-',@month,'-',n)),'%Y-%m-%d') AS Date
FROM (
SELECT (((b4.0 << 1 | b3.0) << 1 | b2.0) << 1 | b1.0) << 1 | b0.0 AS n
FROM
(SELECT 0 UNION ALL SELECT 1) AS b0,
(SELECT 0 UNION ALL SELECT 1) AS b1,
(SELECT 0 UNION ALL SELECT 1) AS b2,
(SELECT 0 UNION ALL SELECT 1) AS b3,
(SELECT 0 UNION ALL SELECT 1) AS b4 ) t
WHERE n > 0 and n <= DAY(LAST_DAY(CONCAT(@year,'-',@month,'-',1)))) AS a
LEFT JOIN (
-- a te lekérdezésed itt kezdődik
SELECT
datum,
osszeg,
darabszam
FROM valami_tabla
-- a te lekérdezésed itt végződik
) b
ON a.Date = b.datum
ORDER BY a.Date[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Taci
addikt
Sziasztok!
Adott egy adatbázis, aminek a tartalmát eredetileg csak 1 db JS-függvénnyel elérve írattam ki (PHP használatával).
Ott bőven elég volt awhile($row = $result->fetch_assoc())
, mert ugye egyesével kiszedett minden sort belőle addig, amíg el nem fogyott. Tökéletesen megfelelt a célnak.Viszont kénytelen voltam módosítani úgy, hogy az első (eredeti) JS-függvény már csak az első pár sort írja ki (jelenleg 4-et), aztán a második (új) JS-függvény feladata pedig az lenne, hogy ahol az első függvény abbahagyta (a példánál maradva ugye az 5. jönne), onnan folytassa a kiírást (szintén 4-esével).
(Infinity scroll-t akarok használni, és ahhoz az kell, hogy előbb legyen annyi elem a képernyőn, hogy lehessen scrollozni (túlnyuljon a kijelzőn - erre állítottam be 4-et, mert az bőven kitölti majdnem 2szer is), aztán jön a 2. szkript, ami pedig a scrollozás mértékében fűzi hozzá a további tartalmat.)Így kétszer is megvan hívva ugyanaz a PHP fájl/kód, ezért jelenleg természetesen előröl kezdi a számozást, tehát a 0. elemtől, kiírja az első 4-et az első függvény miatt, aztán jön az infinity scrollozós szkript, és az is az első 4 elemet írja ki. Aztán scrollozok tovább, és újra az első 4-et.
Nem tudom, hogyan lehetne megoldani, hogy ahol az 1. függvény abbahagyta, onnan folytass a 2. Semmi tapasztalatom nincs ebben.
Keresgéltem, amit találtam, és talán ezt megoldaná az a PHP Session, viszont még a példakódban a példaoldalon sem működik (pedig egy nagyon jó és megbízható oldal, de ez már korábban sem működött nálam), így nem is implementáltam.
Gondoltam rá, hogy esetleg cookie-t kellene használni, de egyrészt sosem használtam még (ez nem gond, megtanulom), másrészt biztosan van egy egyszerűbb megoldás is erre.Remélem, nem túl bonyolultam írtam le, és főleg azt, hogy tudtok segíteni.
Biztos nagyon egyszerű a dolog, csak én nem látom már azt sem, ami a szemem előtt van.Köszönöm!
Még talán az
Include
-ra nézek rá.[ Szerkesztve ]
-
pelyib
tag
Pagination, erre keress.
Legegyszerubb ha client kezeli hogy mit szeretne megmutatni. Tudod, hanyadik oldalt kered, ott a limit (hany elem kell) is, ezeket query parameter-ben (GET) elkuldod (altalaban limit es offset neven).
Server oldalon meg ertelemszeruen beilleszted oket a querybe. -
sztanozs
veterán
Belerakod, hogy honnan mennyit szedjen és ezt át is adod:
SQL query végére becsűröd, hogy:
LIMIT $offset, $len
és csaak annyit kérsz le és onnan, ahonnan kell, csak kell egy prepare persze még bele...Persze lehet menni session irányba, de a HTTP alaptézise, hogy minden lekérdezés független, tehát a szerver és kliens között nem szükségszerűen van "shared data".
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Taci
addikt
válasz pelyib #20318 üzenetére
Igen, néztem, de sajnos nem járható út. Kb. úgy képzeld el az oldalt, mint a Facebook-feed-et, egymás alatt "ömlesztve" a tartalom (nyilván szűrve és rendezve). Ezt sajnos nem tudom oldalakba szedni.
@sztanozs:
Köszönöm, már nézem is. Most hirtelen legjobb leírásnak példákkal ezt az oldalt találtam:
https://www.sqltutorial.org/sql-limit/
Ha elakadnék, és nem bánjátok, még kérdeznék.Köszönöm!
Illetve máris kérdeznék:
"csak kell egy prepare persze még bele"
Ez a rész pontosan mi és mire kell? Ez lenne az?
https://www.w3schools.com/php/php_mysql_prepared_statements.asp[ Szerkesztve ]
-
sztanozs
veterán
Ezt sajnos nem tudom oldalakba szedni.
Dehogynem. Pontosan ezt szeretnéd, első oldal betöltése (results 1-4), görgetéskor második oldal betöltése (results 5-8), stb... Csak nem új oldalba jeleníted meg, hanem hozzácsapod egy DIV-hez.[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Taci
addikt
válasz sztanozs #20319 üzenetére
kell egy prepare persze még bele
Ahh, annyit szenvedtem vele, hogy végig hibaüzenetet dobott (Call to a member function bind_param() on bool), mert nem tetszik neki a lekérdezés. De nem tudtam rájönni, mi a baja, mert adatbázisban futtatva (és a "?" paramétereket átírva persze) tökéletesen futott.
Aztán így 2 óra szenvedés után végül arra jutottam, hogy teljesen lecsupaszítom és visszakövetem a kódot, és végül rájöttem, hogy táblát nem lehet paraméterezni, azon halt el végig...
"SELECT * FROM ? ORDER BY ? DESC LIMIT ? OFFSET ?"
Ott FROM utáni paraméternél csúszott el. De így végre megvan.De így összerakva már működik az infinity scroll-szerű megoldásom is. Így már ezt el tudom tenni, hogy oké, van egy működőképes változatom (erre a kérdéskörre), így nézhetem a pagination-t, és ha azzal nem menne (valamiért), akkor erre vissza tudok állni.
Milliószor akartam írni, segítséget kérni (ebben a prepare-es elakadásban is), de örülök, hogy végül nem tettem, és magamtól találtam rá a megoldásra, így sokkal jobb tapasztalat.
Köszönöm az iránymutatásotokat!
-
Taci
addikt
válasz sztanozs #20321 üzenetére
Ezt találtam eddig a legjobb példának, ami alapján remélhetőleg meg tudom csinálni a saját változatomat:
https://codepen.io/timseverien/pen/XXYaZe -
Taci
addikt
Lenne ismét egy kérdésem, ami a tapasztalatlanságomból ered.
Nyilván mind a pagination-nek és az infinite scroll-nak is át kell adnom, hogy mennyi elemmel fog dolgozni, hogy feleslegesen már ne próbáljon meg sorokat betölteni, ha egyszer elfogytak.
Jelenleg a php kódban csak annyi van, hogy
if ($result->num_rows > 0) {
// a tartalom megjelenítése
} else {
echo "Elfogytak az elemek."; // random szöveg csak magamnak
}
A JS függvény pedig újra és újra visszatér, hogy (jelenleg négyesével) betöltse az új sorokat. Egy idő után viszont elfogynak, viszont a JS függvény ilyenkor is kapcsolatot létesít, megtörténik az SQL lekérdezés is - szóval ez már csak forráspazarlás. (Még ha szemmel ez nem is látszódik, ha remarkolom az "Elfogytak az elemek" echo-t.)
Így hát arra gondoltam, hogy ha már a JS pont ezt a PHP kódot hívja meg, amiben az SQL lekérdezés is van, így át tudom adni neki, hogy a lekérdezésben mennyi sor szerepel, így a JS-ben be tudom állítani, hogy ha a végére ért, akkor ne kérdezzen többször.
Na igen ám, viszont a lekérdezésbe ugye belekerült a LIMIT is (jelenleg "LIMIT 4"), így a sorok számára mindig 4-et ad vissza (kivéve, amikor már nincs annyi benne vagy teljesen elfogytak belőle).
$sql = "SELECT * FROM table ORDER BY order_by DESC LIMIT x OFFSET y";
(csak a példa kedvéért így írva most, mert amúgy prepare-rel van)Szóval ezt hogyan lehet szépen és hatékonyan megoldani?
"Tudja" ez a lekérdezés, hogy eredetileg milyen sorokat tartalmazott, mielőtt alkalmazta volna a LIMIT-et és a többit?
Ki lehet belőle szedni valahogy csak aSELECT * FROM table
értékét?Vagy mindenképp kell egy külön lekérdezés?
Már erre esetre is megvan a tervem, csak hátha van erre valami egyszerűbb, jobban bevált módszer. Mert ha máshogy nem, akkor megcsinálom a külön lekérdezést, és csak akkor újra futtatom le újra (ezt a külön lekérdezést az eredeti, "szűretlen" méretről), ha a "table" értéke változik. A többi nem fog változni, a table viszont elég gyakran.Köszi!
[ Szerkesztve ]
-
instantwater
addikt
Küldd le a lekérdezés maximum számosságát (SELECT COUNT(id) FROM table ...) is a kliensnek, így az tudni fogja mikor ért a végére.
Vagy a kliens csak egy oldalszámot küldjön, és te kiszámolod a limitet és offsetet szerveroldalon, és még leküldöd azt is, hogy van e tovább.
Vagy egyszerűen csak küldj le egy üres tömböt, ha a végére ért, így tudni fogja, hogy ne kérjen többet.
Esetleg a stackoverflowon is nézz körül ötletekért infinite scroll és pagonation témában.
[ Szerkesztve ]
-
Taci
addikt
válasz instantwater #20326 üzenetére
Köszönöm a gyors és hasznos választ! Kialszom magam, és holnap munka után újra nekiülök, átnézek minden lehetőséget.
-
Weareus
addikt
Üdv.
Nem kifejezetten programozós kérdés, de idevágó és élő szövegszerkesztős topikot nem találtam.
Meg ugye lehet, hogy amit szeretnék, azt valami makróval v. mivel lehetne megoldani.
Vannak szólistáim txt-ben.
Lexikonok címszavai (rejtvényhez)
1. Lehetséges ezeket txt-ben sorba rendezni? (abc)
2. Az összes nagy betűt le kellene cserélni kis betűre.
3. A kétszer, ill. többször előforduló azonos kifejezéseket törölni kellene valahogy úgy, hogy csak egyszer maradjon meg. (Ne legyen felesleges ismétlődés)Pl.
Kiss Géza
Kiss Géza
Kiss István
Apponyi Alberthelyett ilyen legyen:
apponyialbert
kissgéza
kissistvánTudom, hogy copy-paste-val wordbe rakva pl a sorba rendezés és a kisbetű-nagybetű cserebere megoldható, de sajnos a szólista méretéből adódóan a gépem képtelen ekkora állományt megfelelően wordbe beilleszteni, megjeleníteni és kezelni.
(Open wordom van, bár ez mindegy).[ Szerkesztve ]
Soul of the mind, key to life's ether. Soul of the lost, withdrawn from its vessel. Let strength be granted, so the world might be mended. So the world might be mended.
-
Weareus
addikt
Azt elfelejtettem írni, hogy a wordpad nevű alkalmazást használom. Ez eléggé fapados, viszont cserébe megfelelő sebességgel kezel ekkora állományt.
Soul of the mind, key to life's ether. Soul of the lost, withdrawn from its vessel. Let strength be granted, so the world might be mended. So the world might be mended.
-
coco2
őstag
válasz Weareus #20328 üzenetére
Kicsi betű konverzió strtolower(). Amivel problémád lehet, azok az ékezetes betűk. Lehet, hogy azt nem mindig korrekten fogja csinálni.
Space-eket kivágni nem említetted külön pontban, de van rá str_replace(). Jellemzően lecseréled a space-eket üres stringre, ahogy ott példát is találsz "ll" -> "" cserére a lapon.
A többször előforduló kifejezések mennyiségtől függően lehetségesen cpu igényes művelet lesz php-ban, de a kód maga egyszerű. Létrehozol egy asszociatív tömböt, és beadod a stringeket kulcsnak. Rájuk raksz mondjuk egy boolean értéket, bármi. Ha vannak is dupla stringet, önmagukat fogják felülírni, hibaüzenet nem lesz belőle. Csak ciklusban pakolsz befele mindent. Ha végeztél, legyűjtöd a tömb kulcsait, van rá array_keys().
Az abc sorbarendezéssel megint csak lesz egy olyan bajod, mint a kicsi betű konverzióval. Az ékezetes betűket nem fogod tudni egyszerű megoldással sorolni be. Például hogy egy "e" után jöjjön az "é", és utána az "f". Helyette ascii kód szerint az "é" messze a "z" után fog kerülni. Ha a magyar abc szerinti rendezés fontos, építened kellene egy új karakter táblát minden előforduló karakter kóddal, és magadnak csinálni a rendezéshez a vizsgálatot. Az ilyesmit C-ben lenne jobb, nem php-ban. Pláne, mint hogy írod, mennyiségről lenne szó. De ahogy tetszik. Ha megteszi ékezetek nélkül is, van rá mezei sort(). Tömb elemeit szedi sorrendbe.
Kellemes szórakozást.
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
Taci
addikt
Sikerült megoldani, köszönöm!
Viszont lesz még egy kérdésem ezzel kapcsolatban, de azt egy külön kommentben tenném majd fel, mert egy picit hosszabb.
Itt viszont még megkérdezném ezt:
Van több elem a lapon (0-tól végtelenig), és mindegyik bejegyzésnek van egy időpontja, amivel számolnom kell. Szeretném mindegyiknél pontosan kijelezni, hogy mennyi ideje lett bejegyezve. Ez a számolás már nagyon szépen megvan PHP-ben végig vezetve. Viszont fix időponttal számol, amikor betöltődik az oldal, azt veszi "most"-nak, azzal számol, azt jelzi ki.
Viszont szeretném az aktuális időhöz igazítani (elég a kliens ideje, nem kell time server).
Így arra gondoltam, hogy miután kijelzi az időpontot a PHP kóddal, utána simán csak futtatok egy JS szkriptet, és másodpercenként emelem az időpontot 1 mp-cel. És így úgy-ahogy meg is vagyok, az ebben lévő pontatlanság bőven megfelel a célnak. (De időközben rájöttem, hogy az egész formázós PHP kódot kell hogy futtassam külön újra és újra...)Találtam is egy egyszerű példát ehhez, amivel tudok dolgozni:
https://www.w3schools.com/js/tryit.asp?filename=tryjs_setinterval2Szépen is működik, csak előjött egyből az a gond, hogy csak az első elemnél csinálja meg ezt a frissítést (és a saját kódomban csak a következő 4 elem betöltése után indul el, első betöltésre nem - de ez majd kifilózom logokkal, hogy miért) , az összes többinél már nem.
Tehát ha a példakódban pl. még pár sorba beszúrom hogy<p id="demo"></p>
, akkor is csak az elsőnél történik meg a frissítés, ott fut le a szkript.
Pedig azt szeretném, hogy több helyen is lefusson, bárhol, bármikor.Rátaláltam az infóra, hogy HTML-ben az ID-knak egyedinek kell lenniük, így a fenti példakódnál csak az első "demo" ID-t használja, utána már nem valid. A getElementById így nem jó. Esetleg valami más getElementBy?
Hogyan tudom ezt megcsinálni, hogy az összes bejegyzésnél fusson a szkript, ugyanaz a szkript, de persze mindegyiknél a saját adatokkal?Köszönöm!
-
Weareus
addikt
Szuper, rá is lesek holnap v. még ma este. Ha valami nem megy, még kérdezek.
[ Szerkesztve ]
Soul of the mind, key to life's ether. Soul of the lost, withdrawn from its vessel. Let strength be granted, so the world might be mended. So the world might be mended.
-
Taci
addikt
document.querySelectorAll
lesz valószínűleg a barátom.
https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_document_queryselectorall_class -
Taci
addikt
Azt mondjátok meg, kérlek, hogyan lehet PHP-ből adatot átadni JS-nek?
Adott egy JS, amiben egy XMLHttpRequest-tel adatot küld a szervernek, és válaszként (this.responseText) megkapja a megjelenítendő HTML kódot.
Ugyanebben a PHP fájlban generálódik a tegnap tanácsolt módon a lekérdezett adat sorainak mennyisége is.
$number_of_query_items = $result_count->num_rows;
Ezzel az adattal kellene az említett JS-ben számolni, átadni a JS-ben szereplő változó értékének:var numberOfQueryItems;
Viszont nem tudom, hogyan kell átvinnem PHP-ből JS-be. Az XMLHttpRequest miatt átmegy sok adat, de nem tudom, hogy abból kellene-e valahogy kihalásznom ennek a változónak az értékét, vagy arra egy külön XMLHttpRequest-et indítani?
Nagyon nem találom a helyes választ rá, és ez megakasztott.
PHP-ben a változó, amit át kellene adni JS-nek:
$number_of_query_items = $result_count->num_rows;
JS-ben a PHP kóddal kommunikáló rész (leegyszerűsítve):
var numberOfQueryItems = 0;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (this.readyState==4 && this.status==200) {
document.getElementById("output").innerHTML=this.responseText;
}
}
xmlhttp.open("GET","frontend.php?q=" + valtozo,true);
xmlhttp.send();
Ezen a kódon keresztül kellene? Vagy más módja van ennek?
Az kellene, hogy a PHP kódban szereplő
$number_of_query_items
értékét megkapja a JSvar numberOfQueryItems
változója.Hogyan tudom ezt elérni?
Köszönöm!
-
coco2
őstag
Xhr-el tipikusan nem html-t küldünk, hanem json-t. Van json_encode() kukucs rá php.net site-on. Csinálsz egy asszociatív tömböt php alatt, annak lehetnek mindenféle változói, azokba belerakod az értékeket. Akár egész weblapot is leküldhetsz. Azzal az a trükk, hogy fogod az egész weblap stringet, és base64 encode-olod. Máris nem kell vacakolni nyamvadt escape-eléssel. Hátulütőként hosszabb lesz a string, de ha nem bandwidth-heavy az alkalmazás, bőven elfér. Mellé mindenféle változót is bele rakhatsz a json-ba. Kliens oldalon szétpakolod az értékeket, kikódolod a base64-et, helyre rakod a html-t is. És minden happy.
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
pelyib
tag
Ahogy coco2 irja valtsal at JSON valaszra szerver oldalon. PHP ne generaljon HTML-t csak adja vissza a nyers adatot, JS meg ugy jeleniti meg ahogy akarja.
Eltelt ido kiirasahoz meg inkabb hasznalj egy JS lib-t, pl: https://momentjs.com/ "Relative Time" (tud magyarul is).
-
instantwater
addikt
-
coco2
őstag
válasz instantwater #20337 üzenetére
Nyers xmlhttp-t nem használ már senki kb 15 éve.
Khm.. én éppen használni készülök vadi új projecthez Nagyon ciki?
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
Taci
addikt
@coco2, pelyib, instantwater: Köszönöm szépen a tanácsokat!
Van minek utána néznem... Igazából 0-ról kezdtem már egyből ezzel az ötlettel, amit próbálok megvalósítani, és a w3schools oldaláról kezdtem tanulni. Ha valami probléma jött fel, elsőnek ott kerestem választ, aztán Stackoverflow, aztán Google, aztán itt.
De elég sok mindent át kell írnom akkor ezek szerint.
Ez a Moment.js nagyon hasznosnak tűnik, ugyanezt programoztam le PHP-ben, csak ott azzal bajlódtam a végén, hogy folyamatosan frissítse az adott elemen az időt (ahogy írtam is lejjebb). De ezzel egyszerűbb lesz sokkal, úgy látom.Az axios alatt gondolom, ezt értitek: https://github.com/axios/axios Még csak soha nem is hallottam róla (ami nem meglepő, kb. 2 hónapja írtam először HTML kódot is... ). Remélem, hamar rájövök, hogyan tudom a mostani kódot átírni úgy, hogy ezzel működjön.
Ha jól értem, akkor ehelyett:var numberOfQueryItems = 0;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (this.readyState==4 && this.status==200) {
document.getElementById("output").innerHTML=this.responseText;
}
}
xmlhttp.open("GET","frontend.php?q=" + valtozo,true);
xmlhttp.send();
kell valami ilyesmire átírnom:
const axios = require('axios');
// Make a request for a user with a given ID
axios.get('/user?ID=12345')
.then(function (response) {
// handle success
console.log(response);
})
.catch(function (error) {
// handle error
console.log(error);
})
.then(function () {
// always executed
});
Aztán akkor még át kell írnom azt is, hogy a szerver asszociatív tömbben küldje át a megjelenítendő weblaprész adatait, plusz az egyéb változókat, amire szükség van.
https://www.w3schools.com/php/func_json_encode.asp
https://www.w3schools.com/php/func_json_decode.asp
Mondjuk még nem igazán látom át, a mostani kódból hogyan kell a kívánt eredményt létrehozni, de remélem, rájövök. (Ha esetleg mégsem, kérdezek majd. Bár nem szeretek, csak ha nagyon muszáj.)Nem egy pár órás munka (nekem), de remélem, boldogulni fogok.
Köszönöm a tanácsokat még egyszer!
[ Szerkesztve ]
-
coco2
őstag
válasz instantwater #20339 üzenetére
Mínusz egy sdk a tech stack-ből, amit ha elmicsodálnak, független vagyok tőle.
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
instantwater
addikt
Igen, erre az axiosra gondoltam.
Ha beledobsz még valami bundlert is a képletbe, mondjuk webpack, (de azt hiszem az helyett is van már valami más ajáblott) akkor még szebb lehet a kód. Then és catch helyett könnyebben kezelhető async/await is haszálható.Ajánlom figyelmedbe a JavaScript topikot, ott többet tudnak segíteni JS témában.
A w3wchools helyett inkább a Mozilla Developer Network és a php.net ajánlott.
[ Szerkesztve ]
-
instantwater
addikt
Ha szeretsz sajtreszelővel .........
Pontosan az elmicsodálástól véd egy megfelelően használt composer.lock és package-lock.json.
A megfelelő alatt azt értem, hogy paranccsal installálsz új packaget, nem kézzel szerkeszted a jsont, és mindig az install módot használod az update helyett és akkor a lockfileból dolgozik, és nem lesz elmicsodálva.
-
coco2
őstag
válasz instantwater #20344 üzenetére
SPA/API-t bütykölök. A lap annyira igénytelen, hogy a legegyszerűbb framework is az ágyúval verébre esete.
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
coco2
őstag
válasz instantwater #20346 üzenetére
Nem szeretem azt a szintaktikát, amit azok nyomnak.
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
Taci
addikt
Akár egész weblapot is leküldhetsz. Azzal az a trükk, hogy fogod az egész weblap stringet, és base64 encode-olod.
Ebben kérnék most segítséget.Adott egy PHP kód, amiben megtörténik a lekérdezés az adatbázisból. Ez a PHP kód require-rel behúz egy külső HTML fájlt (
require 'feed_item.html';
) , amiben vannak PHP kódrészletek, oda tölti be a lekérdezésből származó adatokat. Aztán ez az egész megy (jelenleg) a kliensnek megjelenítésére.Hogyan tudom ezt a lerkédezésből származó kóddal feltöltött, külső fájlból behúzott HTML kódot asszociatív tömbbe rakni?
Maga a tömb:
$website_data = array();
$number_of_query_items = $result_count->num_rows;
$website_data['numberOfQueryItems'] = $number_of_query_items;
//$website_data['content'] = ide jönne az adatbázisból feltöltött html kód
$website_data_json = json_encode($website_data);
Köszönöm!
-
coco2
őstag
amiben vannak PHP kódrészletek
Na ezt nem így.
A betöltött file az vagy tisztán html, vagy tisztán php class, ami legyártja a html stringet. Html-t betölteni, amiben vannak php részletek, az egy kicsit php3-as világ, és ideje lenne leszokni róla. Php 7+ idők vannak. Ha valami 10+ éves legacy project-et örököltél meg, akkor most jött el az ideje az újraírásnak, amit bizony megnyertél. Gratulálok
Ha tisztán html a lap (szerver oldali script értelemszerűen nem lehet benne), file_get_contents()-el behúzod, kódolod base64_encode()-al, és ott a text stringed, ami 7 bites kapcsolaton is háborítatlanul megérkezik.
Ha tisztán php kódod van, azzal rakod össze a stringet, és nem file_get_contents()-el húzod be, a többi ugyan az.
JS oldalon van atob().
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
Taci
addikt
Nem örököltem meg semmit. Volt egy ötletem (weboldalra), elkezdtem hát nulláról tanulni, mit-hogyan kell megcsinálni, így jutottam ide. Szóval igazából amiket írtok, az nekem teljesen ismeretlen, úgy olvasok utána mindennek.
Ez a betöltött fájl amúgy eredetileg php volt (az is még eredetileg a "fő php" kód része, de gondoltam, "szebb" külön szedve, ezért jött a required), viszont minden sort
echo '
-val kezdtem (és';
-vel zártam) aztán később olvastam, hogy az úgy nem "szép", szóval maradt a html kód, és ahova adatbázisból kellett érték, oda került csak bele a html kódok közé a php kód (<?php
és?>
közé). Aztán mivel így már igazából html kód lett, átneveztem .php-ről .html-re.
Itt a leírásod alapján akkor nem jó a file_get_contents(), hiszen van benne szerver oldali (php) szkript.Na de próbálok utánaolvasni mindennek, amit írtál, és megnézni, ezt én hogyan tudom megoldani "nálam".
Köszönöm.
Új hozzászólás Aktív témák
- Samsung Galaxy S24 Ultra 12/512gb, Titánszürke, 1 hetes, csak kipróbált, 3 év garanciával, eladó!
- HP ENVY x360 15-fh0755ng Convertible - ÚJ - 15,6" notebook - Ryzen 5, 16GB, 512SSD, Win11
- Iphone 12 64GB független 94% akku
- HP PROBOOK 450 G9 (6A150EA) - ÚJ - 15,6" FullHD IPS üzleti notebook - i3-1215U, W11pro
- fehér RTX3060Ti Gamer PC Intel i5-11400F, Zotac Gaming RTX3060Ti 8GB, 16GB Corsair RAM, vízhűtés!