Probleme SQL dans une boucle php
Leenk
-
Leenk -
Leenk -
Bonjour,
je débute en php et j'ai un petit problème que je n'arrive pas à résoudre,
J'explique ce que je veux faire :
Je crée une page "admin" qui sert à voir des informations sur des pages crées précédemment, on pourra les afficher, les supprimer, les modifier, mon problème est pour la modification.
Chacune de mes pages peut contenir un maximum de 10 images, donc pour la modification je peux choisir dans un menu déroulant le nombre de page que je veux rajouter (si il y a déjà 3 images par exemple, le menu déroulant ira donc de 1 à 7). Mon problème est que lorsque je compte le nombre d'image enregistré dans ma base de donné pour une page précise ça marche, mais lorsque je fais une boucle pour passer toutes mes pages en revu et compter pour chacune d'entres elles le nombre d'images qu'elles comporte, le count sql ne se fait que pour la première page de la boucle, j'obtiens alors le même nombre pour chacune de mes pages ...
Voilà un extrait du code :
<?php
mysql_connect("", "", "");
mysql_select_db("");
//récupération des pages déjà crées
$pageExist = mysql_query("select * from Page");
while($page = mysql_fetch_array($pageExist)) //parcoure des pages existantes
{
//récupération du nombre de div image déjà crées
$reqCountPict = mysql_query("SELECT COUNT(*) FROM Image WHERE ID_PAGE=".$page['ID_PAGE'].";");
$nbPictExist = mysql_num_rows($reqCountPict);
...
for($t=1; $t<=(10-$nbPictExist); $t++) //création des options de la liste déroulante
{
echo "<option value=\"".$t."\">".$t."</option>";
}
...
}
mysql_close();
ici c'est donc la variable $nbPictExist qui prend la valeur du premier compte mais quand on repasse dans la boucle les fois suivantes, elle garde toujours la même valeur ...
Je vous remercie d'avance.
je débute en php et j'ai un petit problème que je n'arrive pas à résoudre,
J'explique ce que je veux faire :
Je crée une page "admin" qui sert à voir des informations sur des pages crées précédemment, on pourra les afficher, les supprimer, les modifier, mon problème est pour la modification.
Chacune de mes pages peut contenir un maximum de 10 images, donc pour la modification je peux choisir dans un menu déroulant le nombre de page que je veux rajouter (si il y a déjà 3 images par exemple, le menu déroulant ira donc de 1 à 7). Mon problème est que lorsque je compte le nombre d'image enregistré dans ma base de donné pour une page précise ça marche, mais lorsque je fais une boucle pour passer toutes mes pages en revu et compter pour chacune d'entres elles le nombre d'images qu'elles comporte, le count sql ne se fait que pour la première page de la boucle, j'obtiens alors le même nombre pour chacune de mes pages ...
Voilà un extrait du code :
<?php
mysql_connect("", "", "");
mysql_select_db("");
//récupération des pages déjà crées
$pageExist = mysql_query("select * from Page");
while($page = mysql_fetch_array($pageExist)) //parcoure des pages existantes
{
//récupération du nombre de div image déjà crées
$reqCountPict = mysql_query("SELECT COUNT(*) FROM Image WHERE ID_PAGE=".$page['ID_PAGE'].";");
$nbPictExist = mysql_num_rows($reqCountPict);
...
for($t=1; $t<=(10-$nbPictExist); $t++) //création des options de la liste déroulante
{
echo "<option value=\"".$t."\">".$t."</option>";
}
...
}
mysql_close();
ici c'est donc la variable $nbPictExist qui prend la valeur du premier compte mais quand on repasse dans la boucle les fois suivantes, elle garde toujours la même valeur ...
Je vous remercie d'avance.
A voir également:
- Probleme SQL dans une boucle php
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
2 réponses
Bonsoir
Si tu vérifie bien ton code tu verras que:
tu fait un $reqCountPict = mysql_query("SELECT COUNT(*) FROM Image WHERE ID_PAGE=".$page['ID_PAGE'].";");
donc $reqCountPict est une resource qui contien une ligne avec le nobre d'images
après tu fait $nbPictExist = mysql_num_rows($reqCountPict);
donc t'aura toujours come résultat 1 car mysql_num_rows retourn le nombre de lignes d'un résultat
pour avoir le bon résultat fais plutôt
$resCount=mysql_fetch_array($reqCountPict);
$nbPictExist=$resCount[0];
Si tu vérifie bien ton code tu verras que:
tu fait un $reqCountPict = mysql_query("SELECT COUNT(*) FROM Image WHERE ID_PAGE=".$page['ID_PAGE'].";");
donc $reqCountPict est une resource qui contien une ligne avec le nobre d'images
après tu fait $nbPictExist = mysql_num_rows($reqCountPict);
donc t'aura toujours come résultat 1 car mysql_num_rows retourn le nombre de lignes d'un résultat
pour avoir le bon résultat fais plutôt
$resCount=mysql_fetch_array($reqCountPict);
$nbPictExist=$resCount[0];