Probleme boucle
j'ai fais une requete insert into dans une boucle mais elle ne s'effectue qu'une fois es-normal?
voici mon code
$z=0;
while($z<$nbmot){
mysql_query('INSERT INTO mot VALUES("'.$mot[$z].'","'.$donnees['id'].'")'); // Requête
$z++;
}
merci d'avance
Configuration: Windows XP Internet Explorer 6.0
25 réponses
Le fil porte sur une requête INSERT INTO exécutée dans une boucle PHP qui ne s’effectue apparemment qu’une seule fois, malgré une structure while censée répéter l’insertion pour chaque élément. Les réponses soulignent la nécessité de vérifier le nombre de passages et les variables liées ($nbmot, $mot[$z], $donnees['id']), de dépanner avec des échos ou mysql_error et d’arrêter les suppositions. Des explications évoquées incluent que le test du $nbmot ou de la taille du tableau peut être erroné, et que des vérifications concrètes permettent de confirmer si la boucle parcourt bien toutes les entrées.
-
oui tu va raison,tu va vois que t'es un pro,
je te remercie encore.
Pour problème résolu j'ai vidé mes cookies et donc je peut pu cocher, désoler.
bonne journée -
ContributeurDonc je n'avais pas tort, pas d'erreur dans ton code ! :D
Content que tu aies trouvé ton problème !
Bon courage pour la suite!
A bientôt
PS : Pense à cocher "problème résolu" ;) -
Voila j'ai fini par trouver la solution.
Mon code est juste si jamais sa intéresse quelqu'un,en fait j'avais beau définir dans ma base de données que id n'était pas primary key, elle le resté toujours.
Merci de votre aide. -
bonjour mon probleme n'est toujours pas résolu si quelqu'un a une idée?
-
c'est sa elle met juste le premier mot dans la table, a ni rien comprendre.
Je te remercie de m'avoir aidé.
Meci t'un pro en php!
Encore merci d'avoir passé du temps a m'aider.
Et l'important c'est d'avoir essayé des que je trouve je post!
bonne soirée -
ContributeurC'est bien ce que je disais, je suis loin d'être un pro du PHP :s
Je n'ai pas trouvé d'erreur dans ton code..
Essaie dans une page de test, de faire ta requete insert plusieurs fois de suite.
Mais la première fois, la requête s'execute comme tu veux?
Elle met le 1er mot dans ta base?
Je suis désolé mais là je ne vois pas :s -
je te remercie vraimment beaucoup
-
<?php
if ((isset($_POST['nom']))&&(isset($_POST['liste']))&&(isset($_POST['mail']))) // Si la variable existe
{
$question =isset($_POST['quest']) ? $_POST['quest'] : '';
$question=addslashes($question);
$nom =$_POST['nom'];
$nom=addslashes($nom);
$theme=$_POST['liste'];
$mail=$_POST['mail'];
$mail=addslashes($mail);
$mot=split(" ",$question);
$nbmot = count($mot);
}
else // La variable n'existe pas encore
{
$question = ""; // On crée des variables vide
$nom = "";
$mail="";
}
if (($question !="")&&($nom != "")&&($mail !="")) // Si quelque chose est saisie
{
// On execute les requetes
mysql_connect("localhost", "identi", "mtpasse"); // Connexion à MySQL
mysql_select_db("bdt"); // Sélection de la base intranet
$reponse = mysql_query('INSERT INTO faq VALUES("","'.$nom.'","'.$mail.'","","'.$question.'"," ","'.$theme.'","'.$question.'","") ') or die(mysql_error()); // Requête SQL
echo'<p class="Style15">Votre question vient d\'être ajoutée. </p>';
$reponse2= mysql_query('select id from faq where question="'.$question.'"') or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse2) )
{
$z=0;
while($z<$nbmot){
echo 'le nomre de mot est '.$nbmot;
mysql_query('INSERT INTO mot VALUES("'.$mot[$z].'","'.$donnees['id'].'")'); // Requête
$z++;
}
}mysql_close(); // Déconnexion de MySQL
} -
ContributeurJe suis loin d'être un pro du PHP mais on peut toujours essayer ^^
Vas-y envoies moi ton code. -
es que je pe te mettre la totalité de mon code pour voir si tu vois une erreur?
-
ContributeurGrâce à tes echo, tu as vérifié que ta boucle se fait bien le bon nombre de fois?
Je ne comprends vraiment pas pourquoi ce code fonctionne pour moi et pas pour toi ... -
juste le nbmot
décidement c'est vraiment trés énigmatique tout cela -
ContributeurC'est quoi qui marche très bien?
Ton insert ou juste le $nbmot? -
Oui j'ai fais un echo et cela marche trés bien
je te remercie de m'avoir répondu -
ContributeurEt bien pour moi les deux boucles fonctionnent très bien.
Tu as testé le $nbmot que tu récupères?
C'est la seule chose que j'ai qui diffère avec ton code (moi pour le test je l'ai définie manuellement à 5 ) -
non toutes mes tables correspondent est mes champ aussi
-
la premiere boucle s'effectue tant de fois que ce qui a était rentré dans le champ existe
la deuxième dois s'effectuer autant de fois qu'il y a de mot dans le champ de saisie -
ContributeurLe problème doit venir de la concordance entre ton PHP et ta base de données.
-
je vien de retester la boucle chez moi elle ne fonctionne pas même sans l'autre
-
ContributeurBon je viens de tester tes 2boucles imbriquées et elles fonctionnent!
J'ai bien eu l'insert dans la table le bon nombre de fois.
Je ne vois pas d'où peut venir ton problème ...
EDIT : ta boucle de ta requête d'insert se fera autant de fois que tu as d'id dans ton SELECT, c'est ce que tu veux?
- 1
- 2