IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Insertion dans boucle foreach [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Insertion dans boucle foreach
    Bonjour à tous!

    Actuellement, je développe un jeu faisant appel à du php.
    Dans ce jeu, je dois récupérer les informations d'un utilisateur (liste d'amis) et j'insère ces informations dans une bdd.

    Voici le bout de code que j'utilise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach($friendlist['data'] as $friend)
    				{
    					$id =$friend['id']; 
    					$nom = $friend['name'];
     
    					//Insertion
    					$req = mysql_query("INSERT INTO amis VALUES('','$id','$nom')") or die(mysql_error());
     
    				}
    Cependant, ce code récupère les deux premiers amis de l'utilisateur, insère le premier ami et ensuite j'ai le message d'erreur suivant:
    "You have an error in your SQL syntax;...."
    Ce pour cela que j'aimerais avoir votre aide afin de résoudre mon problème.

    Merci d'avance .

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Fais Afficher l'erreur que tu reçois.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour!!

    Comment ça "fais Afficher l'erreur que je reçois"?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Points : 127
    Points
    127
    Par défaut
    bonjour,

    tu peux afficher ta requête à l'aide d'un echo puis de la copier/coller dans phpmyadmin, tu auras ainsi plus de détails sur l'erreur.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    ah d'accord.. Je vais ça de suite alors..

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Me revoilà!!

    Voici l'erreur qui a été renvoyée par phpmyadmin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO amis VALUES(Les_valeurs)' at line 1

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Points : 127
    Points
    127
    Par défaut
    hmmm, étrange le retour mysql.
    peux-tu nous donner l'echo de la requete ?

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bien sur.

    Voici la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "INSERT INTO amis VALUES('','$id','$nom')";
    Ensuite, je vais mon echo de $sql.
    Voici le résultat renvoyé(l'utilisateur n'ayant que deux amis):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO amis VALUES('','valeur1','valeur2')
    INSERT INTO amis VALUES('','valeur3','valeur3')
    ps: si ça peut aider, voici la description de la table dans laquelle je fais l'insertion:
    id = valeur auto-increment
    uid = l'id de l'ami
    nom_complet = le nom complet de l'ami

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Points : 127
    Points
    127
    Par défaut
    Etrange.
    j'ai crée une table identique à la tienne (même nom, mêmes colonnes) et j'ai exécuté ta première requête... qui s'est bien enregistrée.
    J'ai remarqué que dans tes requêtes il n'y a pas d'espaces entre le VALUES et la parenthèse, c'est peut-être ca.
    Peux-tu essayer d'exécuter uniquement ta première requête pour savoir ce qui se passe ( après avoir mis un espace entre VALUES et "(" ) ?

  10. #10
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Bonjour,

    Vu que tu as un id auto-incrémenté, tu peux faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "INSERT INTO amis VALUES('$id','$nom')";
    A+

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    peux-tu afficher le résultat de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    echo '<pre>';
    print_r($friendlist['data']);
    echo '</pre>';
    ?>
    et nous donner le message d'erreur complet (sans "...." !)
    Dernière modification par Invité ; 10/08/2011 à 17h11.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous!!

    Alors,

    Syl2095, j'ai essayé ta tachnique, mais ça ne fonctionne pas.
    J'ai eu le message suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Column count doesn't match value count at row 1
    .

    Anthony89, quand je fais la première insertion, cela fonctionne sans problème.
    Cependant, si je veux faire mes insertions comme dans la boucle, j'ai toujours le message d'erreur. Et ce, même en ayant mis l'espace comme tu me l'a suggéré.

    Jreaux62, j'ai fait ta manip'... et elle m'a affiché l'ensemble de l'utilisateur (avec id et nom). zéro message d'erreur.

    Pour le message d'erreur que j'ai, voici ce que m'affiche:
    - ma page web
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Sylvain Youngin'')' at line 1
    Sylvain Youngin étant le nom du deuxième ami récupéré.
    - phpmyadmin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO amis VALUES ('' , '455557529' , 'Sylvain Youngin')' at line 2

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    moi avec les id automatiques, je procède comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO amis (uid,nom_complet) VALUES ('valeur1','valeur2')
    Je ne cherche pas à remplir la colonne id.

  14. #14
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Problème de simple quote apparemment...
    Vérifie bien ce que tu rentres dans $nom.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    				foreach($friendlist['data'] as $friend)
    				{
    					$id = mysql_real_escape_string($friend['id']); 
    					$nom = mysql_real_escape_string($friend['name']);
    					//Insertion
    					$req = mysql_query("INSERT INTO amis (uid, nom_complet) VALUES('".$id."','".$nom."');") or die(mysql_error());
    				}

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    peux-tu afficher le résultat de : ...
    afficher print_f($friendlist['data']); nous permet de voir la structure et le contenu de l'array !!
    Citation Envoyé par jreaux62 Voir le message
    et nous donner le message d'erreur complet (sans "...." !)
    De l'erreur SQL ! pas de print_f($friendlist['data']); !!

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    jreaux62, j'ai fait la manip' avec le code que tu as mis et ça fonctionne.. Plus de messages d'erreur.

    Par contre, c'est print_f ou printf?? Parce qu'avec le , j'ai le message suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call to undefined function print_f() in

  18. #18
    Invité
    Invité(e)
    Par défaut
    Oups ! Mea culpa. C'est print_r() ou var_dump() (rien à voir avec printf()). désolé

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Oups ! Mea culpa. C'est print_r() ou var_dump() (rien à voir avec printf()). désolé
    Pas de souci ..

    Quand je disais que le code du print_() m'affichait l'ensemble des utilisateurs, je m'étais mal exprimé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    [0] => Array
            (
                [name] => nom_ami
                [id] => id_ami
            )
     
        [1] => Array
            (
                [name] => nom_ami
                [id] => id_ami
            )
    etc etc

    ps: je tiens à remercier tous ceux qui ont pris le temps de s'intéresser à mon post et à m'aider..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ODBC] ODBC Access+ requete insert dans boucle while
    Par gpaca dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 17/03/2010, 17h41
  2. php/sql insert dans un foreach
    Par kaking dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/10/2009, 10h45
  3. [2005] Data Flow dans boucle Foreach
    Par JB_paris dans le forum SSIS
    Réponses: 4
    Dernier message: 23/01/2009, 09h23
  4. Insérer puces (UL-LI) dans boucle foreach PHP
    Par RENAUDER dans le forum Langage
    Réponses: 1
    Dernier message: 21/01/2009, 12h18
  5. Problème commande do dans boucle foreach
    Par jchampen dans le forum Langage
    Réponses: 5
    Dernier message: 23/10/2008, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo