Requete sql à l'intérieur d'une boucle [Résolu]

Signaler
Messages postés
7
Date d'inscription
samedi 29 mai 2004
Statut
Membre
Dernière intervention
10 février 2005
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Ah ben c'est cool alors :-)

Valide la reponse stp qu'on ferme ce thread .
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
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
Messages postés
7
Date d'inscription
samedi 29 mai 2004
Statut
Membre
Dernière intervention
10 février 2005

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" ...
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
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
Messages postés
7
Date d'inscription
samedi 29 mai 2004
Statut
Membre
Dernière intervention
10 février 2005

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
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
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
Messages postés
7
Date d'inscription
samedi 29 mai 2004
Statut
Membre
Dernière intervention
10 février 2005

J'ai trouvé... un oubli dans la synthaxe sql... je n'avais
pas mis auto_increment pour mon id qui est clé primaire ;)
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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.
Messages postés
7
Date d'inscription
samedi 29 mai 2004
Statut
Membre
Dernière intervention
10 février 2005

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 ;)