Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 5 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.03.10
Prihlásený: 05.01.23
Príspevky: 7
Témy: 3
Príspevok NapísalOffline : 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.


Offline

Správca fóra
Správca fóra
foreach() nepracuje

Registrovaný: 08.08.09
Príspevky: 12449
Témy: 39
Príspevok NapísalOffline : 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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.03.10
Prihlásený: 05.01.23
Príspevky: 7
Témy: 3
Príspevok Napísal autor témyOffline : 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>";
 }


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 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!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.03.10
Prihlásený: 05.01.23
Príspevky: 7
Témy: 3
Príspevok Napísal autor témyOffline : 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!


Odpovedať na tému [ Príspevkov: 5 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Foreach - pomoc

v PHP, ASP

10

586

09.01.2011 12:43

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. JAVA, FOREACH CYKLUS

v Assembler, C, C++, Pascal, Java

2

598

25.08.2017 8:20

mitko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Polia , príkaz foreach

v PHP, ASP

4

866

30.12.2011 11:51

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Posledná hodnota v foreach

v PHP, ASP

2

392

31.03.2012 19:40

1daemon1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. dve polia & foreach

v PHP, ASP

8

683

08.07.2009 16:03

Snacker Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C# foreach v DNS.GetHostAddresses

v Technológia .NET

2

455

12.01.2014 11:18

dany2281995 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Else a If vo foreach()

v PHP, ASP

3

435

22.04.2011 19:12

Blackshadow Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mikrofon nepracuje.

v Ovládače

5

538

28.12.2008 15:51

Skyro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nepracuje 3D zobrazenie

v ATI/AMD grafické karty

11

670

19.01.2010 21:45

kozzo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. scandisk zastane-nepracuje

v Pevné disky a radiče

3

508

22.03.2009 0:03

Roberbo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Notebook nepracuje poriadne.

v Notebooky a netbooky

2

448

17.11.2018 8:48

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Notebook nepracuje ako niekedy

v Notebooky a netbooky

10

378

02.08.2013 16:31

jozkomracik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Po zapojení novej RAM počítač nepracuje

v Pamäte

11

582

23.11.2013 23:47

Smith Wesson Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Potrebujem poradiť abgrejt maticnej nepracuje dobre strih

v Základné dosky

1

941

21.11.2007 18:31

OmeGa Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PC zapne ale potom nepracuje, AThlonXP 1900+

v AMD - Advanced Micro Devices

11

726

12.06.2011 11:55

Semp Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. i7 6700k - nepracuje na 100% pri renderingu. Prehrieva sa?

v Intel - Integrated Electronics

5

535

10.04.2017 16:30

kubinek17 Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra