[ 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 | 3
NapísalOffline : 24.08.2017 12:12 | foreach() nepracuje

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: 12446
Témy: 38 | 38
NapísalOffline : 24.08.2017 12:24 | foreach() nepracuje

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 | 3
Napísal autor témyOffline : 24.08.2017 12:39 | foreach() nepracuje

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 | 3
NapísalOffline : 24.08.2017 14:00 | foreach() nepracuje

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 | 3
Napísal autor témyOffline : 24.08.2017 14:16 | foreach() nepracuje

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!


 [ Príspevkov: 5 ] 


foreach() nepracuje



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 Backend

10

685

09.01.2011 12:43

walther

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

JAVA, FOREACH CYKLUS

v Backend

2

732

25.08.2017 8:20

mitko

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

Polia , príkaz foreach

v Backend

4

940

30.12.2011 11:51

shaggy

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

dve polia & foreach

v Backend

8

769

08.07.2009 16:03

Snacker

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

Posledná hodnota v foreach

v Backend

2

442

31.03.2012 19:40

1daemon1

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

Else a If vo foreach()

v Backend

3

496

22.04.2011 19:12

Blackshadow

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

C# foreach v DNS.GetHostAddresses

v Backend

2

558

12.01.2014 11:18

dany2281995

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

Mikrofon nepracuje.

v Ovládače

5

601

28.12.2008 15:51

Skyro

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

Nepracuje 3D zobrazenie

v AMD grafické karty

11

753

19.01.2010 21:45

kozzo

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

scandisk zastane-nepracuje

v Pevné disky a radiče

3

570

22.03.2009 0:03

Roberbo

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

Notebook nepracuje poriadne.

v Notebooky a netbooky

2

516

17.11.2018 8:48

shiro

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

Notebook nepracuje ako niekedy

v Notebooky a netbooky

10

446

02.08.2013 16:31

jozkomracik

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

Po zapojení novej RAM počítač nepracuje

v Pamäte

11

678

23.11.2013 23:47

Smith Wesson

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

PC zapne ale potom nepracuje, AThlonXP 1900+

v AMD

11

816

12.06.2011 11:55

Semp

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

Potrebujem poradiť abgrejt maticnej nepracuje dobre strih

v Základné dosky

1

1055

21.11.2007 18:31

OmeGa

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

Mysql na Xampp nepracuje ak nie je pripojený net

v Sieťové programy

0

372

11.02.2012 17:01

blazej44800



© 2005 - 2026 PCforum, edited by JanoF