Salut !
Je voulais savoir s'il était possible de mettre plusieurs conditions dans une boucle Do - While :
par exemple :
do{
echo $a" - ".$b;
}
while($a > 0 ET $b > 1);
Cela est-il possible ? si oui avec quelle syntaxe ?
Merci ;)
Je vais essayé de répondre au fur et a mesure des problème que je trouve
(Petit problème je n'ai pas bcp d'afinité avec PDO)
1) Premièrement tu devrais sortir la premier "$data = $req->fetch();" du do car il fait te l'executer une foi ensuite a la fin du while il va te l'executé (vu qu'il est dans la condition) puis te le réexécuté vu qu'il est au debut du do donc met la premiere $data = $req->fetch(); juste avant le " do {"
2) J'aimerai savoir ou et comment est initialiser les variables: $numPage et $perPage
Bien sure, dans chaque condition tu peux en mettre plus d'une (que ce soit pour les boucles ou les if/else
pour ET logique, utilise && ou AND
pour le ou logique, utilise || ou OR
C'est valable pour la plupars des langage
EDIT:
chaque condition retourne 1 si elle est confirmé ou 0 si elle ne l'est pas
Ensuite avec des opérateur logique (AND ou OR) une nouvelle valeur est retourné:
1 AND 1 = 1
1 AND 0 = 0
0 AND 0 = 0
0 AND 1 = 0
1 OR 1 = 1
1 OR 0 = 1
0 OR 0 = 0
0 OR 1 = 1
il existe aussi l'operateur inverse: ! :
!1 = 0
!0 = 1
Si a la fin de toute ses oppération, ne nombre (binair) 1 est retourné, alors ce qui suivra l'accolate sera exécuté sinon ça passera a la procédure suivante
Je n'ai pas tout compris mais bon. Sauf que cela ne fonctionne pas sur mon script, a moins que le problème ne vienne d'autre part ..
Grossièrement : j'ai une page qui affiche mes articles, (requête SQL, et parcourue dans un Do - While pour les afficher) et en bas de chaque article il y a "Commenter ($nbComm)" $nbComm étant variable selon le nombre de commentaires de l'article en question.
Mon problème est que seule le dernier article posté s'affiche, ensuite PDO m'affiche une erreur :
Fatal error :
Uncaught exception 'PDOException' with message 'SQLSTATE[42000]:
Syntax error or access violation:
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY date DESC' at line 1' in C:\Program Files\wamp\www\boutique\index.php:156 Stack trace:
Le problème vient de ta requète
Es tu sure d'avoir bien incrémenté chaque variable de la bonne façon?
(parce que dans l'exemple que tu a montré soit tu ne rentre jamais dans la boucle soit tu fait une boucle infinie)
A mon avis ta requete SQL doit utiliser une des variable utiliser dans la condition qui doit etre mal utiliser
Peux tu montrer ton code?
Attention code assez long ^^ [code]<?php do{
$data = $req->fetch(); $id = $data['id']; $sqlnbc = " SELECT COUNT(comm) AS nbComm FROM comments WHERE news_id = $id"; $reqnbc = $DB->query ($sqlnbc); $datanbc = $reqnbc->fetch(); $nbComm = $datanbc['nbComm']; $contenu = stripslashes($data["contenu"]); $contenu = htmlentities($contenu, ENT_NOQUOTES, 'UTF-8'); $conv = array( '[b](.*?)[\/b]' => ' $1', '[i](.*?)[\/i]' => '$1', '[u](.*?)[\/u]' => '<u>$1</u>', '[img](.*?)[\/img ]' => ' ', '[url=([^]]*)](.*)[\/url]' => ' $2' ); foreach($conv as $k=>$v) { $contenu = preg_replace('/'.$k.'/',$v, $contenu); } $contenu = nl2br($contenu); echo "
"; echo "
{$data["titre"]}Posté le ".date("d/m/Y - G:i",strtotime($data["date"]))."
"; echo "
{$contenu}
Voir l'article Commenter ({$datanbc['nbComm']})
"; echo "
"; } while($data = $req->fetch()); ?> [/code] ma requête : [code] $req_news = $DB->prepare ("SELECT * FROM news ORDER BY date DESC LIMIT ".(($numPage-1)*$perPage).",$perPage") or die (print_r($DB->errorInfo())); $req_news->execute(); [/code] Voila, si tu résous mon problème tu sauve ma journée ;)
J'ai tr'ouver par mes propres moyens, après des tests, effectivement il fallait sortir le fetch du do.
Merci en tout cas :)