Page 1 sur 1

Problème avec foreach et non while

Posté : 15 nov. 2011, 15:20
par Matthieu
Bonjour,

Je suis en train de faire un site, et lorsque je récupère les données depuis la base j'ai quelque problème.
$sql = 'SELECT * FROM monchefadit_quotes order by id;';
$result = mysql_query($sql, $dbconnect) or exit('Error SQL !<br>'.$sql.'<br>'.mysql_error());

$quotes = mysql_fetch_array($result);
Ici, si je fais un :
foreach ($quotes as $quote)
var_dump($quote);
J'ai une erreur car il me retourne qu'une ligne de ma table, alors que si j'utilise le while:
while ($quotes = mysql_fetch_array($result)){
echo $quotes["date"];
}
J'ai bien toute mes lignes de ma table... J'ai l'habitude de développer avec foreach (avec frameworks) mais là je ne comprends pas...

Re: Problème avec foreach et non while

Posté : 15 nov. 2011, 15:42
par stealth35
while est foreach c'est pas la même chose, tu comprends comment fonctionne le while ?

Re: Problème avec foreach et non while

Posté : 15 nov. 2011, 15:53
par Matthieu
Je sais que le foreach parcours un tableau.. Et je pense que le while permet de parcourir la base de donnée tant que c'est true ?

Re: Problème avec foreach et non while

Posté : 15 nov. 2011, 15:59
par stealth35
Je sais que le foreach parcours un tableau.. Et je pense que le while permet de parcourir la base de donnée tant que c'est true ?
le while continue de touner tant que l'expression est vrai, et a chaque appelle de mysql_fetch_* on va chercher une nouvelle ligne donc en gros
$result = mysql_query('...');
$ligne1 = mysql_fetch_assoc($result);
$ligne2 = mysql_fetch_assoc($result);
$ligne3 = mysql_fetch_assoc($result);
...
$ligneN = mysql_fetch_assoc($result);
quand y'a plus de résultat mysql_fetch_* renvoie false, donc l'expression dans le while vaut false et ça s’arrête

donc ce que t’essayes de faire avec ton foreach n'est pas possible nativement, et encore le plus logique aurai été de faire :
foreach ($result as $quote)
var_dump($quote);
mais c'est pas possible,

pourquoi t'utilises pas PDO ?

Re: Problème avec foreach et non while

Posté : 15 nov. 2011, 16:06
par Matthieu
Merci de m'avoir éclairé.

Pour le PDO je l'ai toujours "utilisé" mais jamais codé... Donc je vais regarder si c'est dans mes compétences lol

J'imagine que ce site pourra me fournir tout ce dont j'ai besoin :)
Merci encore de m'avoir accordé un peu de temps.

Re: Problème avec foreach et non while

Posté : 15 nov. 2011, 16:11
par Matthieu
Je ne trouve pas comment mettre Résolu, vu que je ne suis pas logué, je pense que se n'est pas possible ?

ps: si pour le PDO tu peux m'indiquer la voix s'il te plaît :oops:

Re: Problème avec foreach et non while

Posté : 15 nov. 2011, 16:15
par moogli
pas possible de mettre résolu en invité.

a tu bien compris comment fonctionne le while ? c'est pareil pour PDO.

a ceci près que PDO te propose de retourner tous le jeux de résultat dans un tableau que tu pourra parcourir avec foreach
http://www.php.net/manual/fr/pdostatement.fetchall.php


@+

Re: Problème avec foreach et non while

Posté : 15 nov. 2011, 16:17
par Matthieu
Merci encore...

Bonne journée

Re: Problème avec foreach et non while

Posté : 15 nov. 2011, 16:26
par stealth35
pas possible de mettre résolu en invité.

a tu bien compris comment fonctionne le while ? c'est pareil pour PDO.

a ceci près que PDO te propose de retourner tous le jeux de résultat dans un tableau que tu pourra parcourir avec foreach
http://www.php.net/manual/fr/pdostatement.fetchall.php


@+
pas besoin PDOStatement c'est un Traversable donc tu peux direct faire un foreach dessus pas besoin de while