| | |
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Autor | Správa |
---|
Registrovaný: 23.03.10 Prihlásený: 05.01.23 Príspevky: 7 Témy: 3 | Napísal dilong: 24.08.2017 12:12 | |
|
Ahojte, potrebujem poradit Robim si jednu webaplikaciu a chcel som pouzit foreach() namiesto while. Doteraz som si s while vystacil, ale rad by presiel na foreach() pre jednoduchost pracu s poliami apod. Narazil som vsak na problem s ktorym si neviem rady. Presedel som pri tom vela casu a problem som nenasiel. Mam jednoduchy kod ktory by mal bezproblemov fungovat ale nefunguje - foreach nevypise udaje z db: Kód: $query = "SELECT * FROM category ORDER BY cat_name"; $sql = mysqli_query($link, $query) or die(mysqli_error());
foreach ($sql as &$data){ echo "TEST ".$data["cat_name"]."</br>"; }
Skusal som to zapisovat hociako ale foreach nefunguje a neviem preco. Foreach mi funguje iba v kombinacii s while> Kód: while ($row = mysqli_fetch_array($sql)){ $rows[] = $row; }
foreach($rows as $row){ $id = stripslashes ($row['id']); $cat_name = stripslashes ($row['cat_name']); $cat_image = stripslashes ($row['cat_image']); echo "<a href='?id=$id' class='button'>".$cat_name."</a>"; }
Vopred dakujem za pomoc.
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | Napísal killer: 24.08.2017 12:24 | |
|
Máš nejaký špeciálny dôvod používať foreach namiesto while? while opakuje kód, kým podmienka v zátvorkách (v tvojom prípade mysqli_fetch_array) nie je bool(false) foreach opakuje kód pre každý element poľa (ty mu nedávaš pole, ale výsledok SQL dotazu, mysqli_query, cez ten ti iterovať nebude).
_________________ always is always wrong |
|
Registrovaný: 23.03.10 Prihlásený: 05.01.23 Príspevky: 7 Témy: 3 | Napísal autor témy dilong: 24.08.2017 12:39 | |
|
Specialny dovod nemam, z while som doteraz urobil co som potreboval. Pri studovani som vsak casto narazil ze programatori odporucaju foreach, kvoly jednoduchsej konkstrukcii a pre lahsiu pracu s poliami. Nie som skuseny programator a preto si rad necham poradit od skusenejsich. To je dovod zmeny Preto som to chcel vyskusat - ale nejde mi to. Normalne som na vypis pouzival jednoduchy zapis while Kód: while ($data = mysqli_fetch_array($sql, MYSQLI_BOTH)){ $id = $data["id"]; $cat_name = $data["cat_name"];
echo "Name: ".$cat_name."<br>"; }
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 24.08.2017 14:00 | |
|
konkrétne v prípade funkcie fetch musíš použiť while, kvôli rozdielnej syntaxi cyklov while a foreach: Kód: while(expression) { ... }
foreach(array as element) { ... }
Dôležité je vo while to expression. Vo while teda vieš spustiť akýkoľvek príkaz, ktorý sa evaluje do logickej hodnoty true/false. Vo foreach vieš použiť iba pole. A volanie funkcie je expression, nie pole. Preto sa nedá použiť foreach. Takže ak chceš iterovať cez pole, použi foreach. Ty ale žiadne pole nemáš, pretože funkcia mysqli_query nevracia pole. Za to funkcia mysqli_fetch_array vracia vždy jeden prvok poľa (vždy ďalší, až kým nepríde na koniec). Skús použiť funkciu mysqli_fetch_all, ktorá vracia pole a trochu si zjednodušíš život.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 23.03.10 Prihlásený: 05.01.23 Príspevky: 7 Témy: 3 | Napísal autor témy dilong: 24.08.2017 14:16 | |
|
Vďaka za vysvetlenie, vyskúšam to.
Naposledy upravil killer dňa 24.08.2017 14:17, celkovo upravené 1 | Necituj predchádzajúce príspevky! |
|
|
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Foreach - pomoc v PHP, ASP | 10 | 586 | 09.01.2011 12:43 walther | | JAVA, FOREACH CYKLUS v Assembler, C, C++, Pascal, Java | 2 | 598 | 25.08.2017 8:20 mitko | | Polia , príkaz foreach v PHP, ASP | 4 | 866 | 30.12.2011 11:51 shaggy | | Posledná hodnota v foreach v PHP, ASP | 2 | 392 | 31.03.2012 19:40 1daemon1 | | dve polia & foreach v PHP, ASP | 8 | 683 | 08.07.2009 16:03 Snacker | | C# foreach v DNS.GetHostAddresses v Technológia .NET | 2 | 455 | 12.01.2014 11:18 dany2281995 | | Else a If vo foreach() v PHP, ASP | 3 | 435 | 22.04.2011 19:12 Blackshadow | | Mikrofon nepracuje. v Ovládače | 5 | 538 | 28.12.2008 15:51 Skyro | | Nepracuje 3D zobrazenie v ATI/AMD grafické karty | 11 | 670 | 19.01.2010 21:45 kozzo | | scandisk zastane-nepracuje v Pevné disky a radiče | 3 | 508 | 22.03.2009 0:03 Roberbo | | Notebook nepracuje poriadne. v Notebooky a netbooky | 2 | 448 | 17.11.2018 8:48 shiro | | Notebook nepracuje ako niekedy v Notebooky a netbooky | 10 | 378 | 02.08.2013 16:31 jozkomracik | | Po zapojení novej RAM počítač nepracuje v Pamäte | 11 | 582 | 23.11.2013 23:47 Smith Wesson | | Potrebujem poradiť abgrejt maticnej nepracuje dobre strih v Základné dosky | 1 | 941 | 21.11.2007 18:31 OmeGa | | PC zapne ale potom nepracuje, AThlonXP 1900+ v AMD - Advanced Micro Devices | 11 | 726 | 12.06.2011 11:55 Semp | | i7 6700k - nepracuje na 100% pri renderingu. Prehrieva sa? v Intel - Integrated Electronics | 5 | 535 | 10.04.2017 16:30 kubinek17 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|