Problème de boucles imbriquées en PHP
Résolu/Fermé
hellnino
Messages postés
7
Date d'inscription
mardi 23 janvier 2007
Statut
Membre
Dernière intervention
8 février 2007
-
26 janv. 2007 à 15:56
hellnino Messages postés 7 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 8 février 2007 - 26 janv. 2007 à 17:38
hellnino Messages postés 7 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 8 février 2007 - 26 janv. 2007 à 17:38
A voir également:
- Problème de boucles imbriquées en PHP
- Easy php - Télécharger - Divers Web & Internet
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- \R php ✓ - Forum PHP
5 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
26 janv. 2007 à 16:30
26 janv. 2007 à 16:30
Bon, en fait, j'ai encore mieux pour faire ce que tu veux faire :)
Une seule requête !
Regarde déjà cette requête :
Si tu l'utilises dans ton delete :
Une seule requête !
Regarde déjà cette requête :
SELECT DISTINCT idAuteur FROM ecrireElle te renvoit tous les ID des auteurs qui ont effectivement écrit.
Si tu l'utilises dans ton delete :
DELETE FROM auteur WHERE idAuteur NOT IN ( SELECT DISTINCT idAuteur FROM ecrire )Une seule requête qui supprime tous les auteurs qui n'ont pas écrit. Le serveur PHP préfère, le serveur MySQL aussi, sans même parler de la personne qui lit ton code : tout bénèf :)
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
26 janv. 2007 à 16:04
26 janv. 2007 à 16:04
Ca ne va pas du tout !
Il ne faut pas bouclier en faisant des for, mais des while sur le résultat de tes deux premieres requetes comme suit :
Il ne faut pas bouclier en faisant des for, mais des while sur le résultat de tes deux premieres requetes comme suit :
function verif() { $lien=seConnecter(); $i=0; $j=0; $resultat69=executerRequeteBD($lien, "SELECT idAuteur FROM auteur" ); $resultat70=executerRequeteBD($lien, "SELECT idAuteur FROM ecrire" ); while ( $nblig690=mysql_fetch_array($resultat69) ){ $som=0; while ( $nblig700=mysql_fetch_array($resultat70) ){ if ($nblig690[$i]==$nblig700[$j]) $som++; } if ($som==0) $resultat80=executerRequeteBD($lien, "DELETE FROM auteur WHERE IdAuteur='$nblig690[$i]'"); //ligne 74 } }
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
26 janv. 2007 à 16:07
26 janv. 2007 à 16:07
Bonjour,
C'est tout simple :)
Ta fonction mysql_num_rows te dit que tu as X auteurs.
Ensuite, dans ta boucle, tu prends tous les auteurs, de 0 à X inclu. si compte, cela fait... X+1 auteurs en tout. Alors forcément, sur le dernier, il y a un problème !
Bref, tout ça pour dire que dans tes boucles for() (les deux), il ne faut pas mettre des <= mais des < stricts.
Voilà, bon courage pour la suite :)
Xavier
C'est tout simple :)
Ta fonction mysql_num_rows te dit que tu as X auteurs.
Ensuite, dans ta boucle, tu prends tous les auteurs, de 0 à X inclu. si compte, cela fait... X+1 auteurs en tout. Alors forcément, sur le dernier, il y a un problème !
Bref, tout ça pour dire que dans tes boucles for() (les deux), il ne faut pas mettre des <= mais des < stricts.
Voilà, bon courage pour la suite :)
Xavier
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
26 janv. 2007 à 16:10
26 janv. 2007 à 16:10
ha ben non.
Oubli ce que j'ai mis c'est inutile.
Oubli ce que j'ai mis c'est inutile.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
hellnino
Messages postés
7
Date d'inscription
mardi 23 janvier 2007
Statut
Membre
Dernière intervention
8 février 2007
1
26 janv. 2007 à 17:38
26 janv. 2007 à 17:38
Problème résolu!!Merci a Reivax962,ta première remarque était juste mais il y avait encor d'autres problèmes aloprs que la seconde marche parfaitement et est beaucoup plus simple^^.Merci aussi a kij_82.