Imbriquer 2 boucle "while"
Bonjour, je veux simplement afficher des données de ma bd en utilisant des procédures stockées et pdo
Si JE N'UTILISE PAS LES PROCEDURES STOCKEES ET PDO => aucun problème pour imbriquer 2 While
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| $sql = "SELECT * FROM fiche_travail WHERE fitr_cloturer = 't'";
$result = mysql_query ($sql, $link);
while($myrow=mysql_fetch_array($result))
{
echo " Fiche numéro $myrow[idfichetravail] du $jour-$mois-$annee pour le véhicule ";
$sql2 = "SELECT * FROM vehicule WHERE idvehicule = '$myrow[idvehicule]'";
$result2 = mysql_query ($sql2, $link);
while($myrow2=mysql_fetch_array($result2))
{
echo "dont l'id est $myrow2[idvehicule]";
}
} |
Ce qui donne le bon résultat suivant :
Citation:
Fiche numéro 4 du 04-01-2010 dont l'id est 1
Fiche numéro 5 du 05-01-2010 dont l'id est 2
Fiche numéro 6 du 06-01-2010 dont l'id est 2
Fiche numéro 7 du 07-01-2010 dont l'id est 3
Maintenant, je remplace mes requêtes sql "classique" par le pdo comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $stmt = $conn->prepare("CALL FichesTraitees()");
$stmt->execute();
while($myrow = $stmt->fetch(PDO::FETCH_BOTH))
{
echo " Fiche numéro $myrow[idfichetravail] du $jour-$mois-$annee pour le véhicule ";
$idvehicule="$myrow[idvehicule]";
$stmt2 = $conn->prepare("CALL OneVehiculeById(?)");
$stmt2->bindParam(1,$idvehicule);
$stmt2->execute();
while($myrow2 = $stmt2->fetch(PDO::FETCH_BOTH))
{
echo "dont l'id est $myrow2[idvehicule]";
}
} |
Cette fois, le résultat est le suivant :
Citation:
Fiche numéro 4 du 04-01-2010 pour le véhicule
Fiche numéro 5 du 05-01-2010 pour le véhicule dont l'id est 2
Fiche numéro 6 du 06-01-2010 pour le véhicule dont l'id est 2
Fiche numéro 7 du 07-01-2010 pour le véhicule dont l'id est 3
La deuxième boucle n'est pas prise en compte lors du premier enregistrement
Et si je met une troisième boucle d'affichage (donc 3 éléments à afficher par ligne)
La première ligne : 1 élément s'affiche
La deuxième ligne : 2 éléments s'affiche
Toutes les autres lignes : tout est bon !!
Merci pour votre aide