Requete sql à l'intérieur d'une boucle

Résolu
Nactarus
Messages postés
7
Date d'inscription
samedi 29 mai 2004
Statut
Membre
Dernière intervention
10 février 2005
- 29 janv. 2005 à 10:34
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
- 30 janv. 2005 à 11:01
Salut, je fais une code qui ouvre un répertoire, lis les fichiers qui s'y trouvent et inscrit leur nom dans une base de donnée.



Mon problème : le script n'inscrit que le premier fichier lu et pas les autres.

Mon code :

$id = Connexion();

$handle=opendir("album_photo/$name/");

while ($file = readdir($handle)) {

if ($file !== "." && $file !== ".."){

$sql = "INSERT INTO ".$name."_photo (photo_name)"

."VALUES ('$file');";

mysql_query($sql, $id);

}

}

closedir($handle);



merci pour votre aide ;)

9 réponses

malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
30 janv. 2005 à 11:01
Ah ben c'est cool alors :-)

Valide la reponse stp qu'on ferme ce thread .
3
tucsoufle
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
29 janv. 2005 à 11:10
salut,

ton code me semble bon a part peut etre le ; sur cette ligne ."VALUES ('$file');";

celui avant les guillemets, il ne sert a rien, essai ca : ."VALUES ('$file')";




mais autrement ta boucle while est bonne, ca me semble correct


Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
Nactarus
Messages postés
7
Date d'inscription
samedi 29 mai 2004
Statut
Membre
Dernière intervention
10 février 2005

29 janv. 2005 à 11:14
J'avais essayé sans mais ca ne change rien..

Penses-tu qu'il soit possible que MYSQL ne puisse pas exécuter ces requetes assez rapidement?

La boucle est peut être "trop rapide" ...
0
tucsoufle
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
29 janv. 2005 à 11:24
euh non ce n'est surement pas une question de rapidite



pour etre sur a 100% que ton code fonctionne, je viens de le tester

...et il marche trés bien donc ???

est ce que tu est sur qu'il n'y a pas qu'un seul fichier dans ton dossier !!!



autre remarque qui ne change peut etre rien mais separe les variable de tes chaine de caractere

comme ça :


$id = Connexion();

$handle=opendir("album_photo/".$name."/");

while ($file = readdir($handle)) {

if ($file !== "." && $file !== ".."){

$sql = "INSERT INTO ".$name."_photo (photo_name)"

."VALUES ('".$file."');";

mysql_query($sql, $id);

}

}

closedir($handle);

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nactarus
Messages postés
7
Date d'inscription
samedi 29 mai 2004
Statut
Membre
Dernière intervention
10 février 2005

29 janv. 2005 à 11:30
ecoute je ne comprends pas... moi il ne m'en insère meme plus un seul... :s je vas continuer à chercher merci pour ton aide
0
tucsoufle
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
29 janv. 2005 à 11:51
peut etre que tu devrais procéder par étapes

essai d'abord ton script sans utiliser ta variable $name, écrit une valeur en dur tout d'abord

et là, si ca marche, tu fait ton script avec une variable



par contre, dans la maniere dont tu écrit ta requete, ca voudrait dire
que tu utilise une table pour chaque dossier, et dans chaque table, un
seul champ, c'est ton choix mais ce ne serait pas plus clair si tu ne
prenait qu'une seul table

...enfin ca depend de ce que tu veut faire derriere aussi, c'est sur

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
Nactarus
Messages postés
7
Date d'inscription
samedi 29 mai 2004
Statut
Membre
Dernière intervention
10 février 2005

29 janv. 2005 à 12:14
J'ai trouvé... un oubli dans la synthaxe sql... je n'avais
pas mis auto_increment pour mon id qui est clé primaire ;)
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
29 janv. 2005 à 12:14
Hello,

pourquoi if ($file !== "." && $file !== ".."){
et pas != ? Ce ne sont pas des objets.

Ensuite, insert into ne cree pas de tables...tu as une table deja cree pour chaque $name ?

Ceci dit, fait un echo de $file, dans ta boucle, tu en auras le coeur net.
0
Nactarus
Messages postés
7
Date d'inscription
samedi 29 mai 2004
Statut
Membre
Dernière intervention
10 février 2005

29 janv. 2005 à 12:38
une erreur pour le !== avait pas vu !

oui j'ai une table pour chaque name... je pensais à minimiser le nombre
d'enregistrement dans la table des noms dans un but de minimisier le
tps de recherche...



Tout fonctionne parfaitement maintenant ;)
0