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 :

Syntaxe insertion variable dans requete SQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 110
    Points : 73
    Points
    73
    Par défaut Syntaxe insertion variable dans requete SQL
    Bonjour,
    J'ai un problème de syntaxe et je tourne en rond. Merci à celui ou celle qui pourra m'aider. Voici le problème

    J'ai une table 1 (tab1) avec les champs id1,nom pour info id1 est unique
    Exemple :
    1 toto
    2 tata
    3 titi
    J'ai une table 2 (tab2) avec les champs id2,id1,valeur pour info id2 est unique mais je peux avoir plusieurs enregistrement avec id1
    Exemple :
    1 1 10
    2 1 20
    3 2 5
    4 1 10
    5 3 10
    6 3 40

    Je souhaite lire tous les enregistrements de ma table 1 un par un puis pour chaque enregistrement, lire la table 2 et faire une somme du champs valeur
    pour afficher les informations issues des 2 tables. Dans mon exemple cela donnerait
    1 toto 40
    2 tata 5
    3 titi 50

    Avec le script indiqué ci-dessous je n'obtiens que :

    1 toto
    2 tata
    3 titi

    Je suppose qu'il y a un problème avec mon WHERE à moins que cela ne vienne de mon script.
    Pour info je suis en train de passer en SQLI et j'apprends tout seul.
    Merci encore pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $requete = mysqli_query($con,"SELECT id1,nom FROM tab1 ");
    while($reponse = mysqli_fetch_array($requete)) {
    $id1_recuperee = $reponse['id1'];
    $nom_recupere = $reponse['inom'];
    $requete2 = mysqli_query($con,"SELECT SUM(valeur) as valeur_totale FROM tab2 WHERE id1 ='".$id1_recuperee."' GROUP BY BY id1 ");
    $reponse2 = = mysqli_fetch_array($requete2);
    $valeur = $reponse2['valeur_totale'];
    echo $id1_recuperee;
    echo $nom;
    echo $valeur;
    }

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Bonjour,

    je crois qu'il y a confusion dans les id.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT SUM(valeur) as valeur_totale FROM tab2 WHERE id2 ='".$id1_recuperee."' GROUP BY BY id2 "

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 110
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    Non, il n'y a pas de confusion.
    Je dois absolument avoir tab2.$id1 = $id1_recuperee
    Le problème est que je ne suis pas très à l'aise avec les " et les '

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 110
    Points : 73
    Points
    73
    Par défaut
    Après avoir fait d'autres recherches et d'autres tests j'ai trouvé la solution (enfin celle qui solutionne mon problème)
    Je laisse le code trouvé pour ceux qui seraient dans le même cas que moi sachant qu'il y a peu être des modifications inutiles par rapport à mon premier script mais je laisse le soin aux plus courageux (et plus puristes) de dire ce qui serait le mieux.

    Bonne fin de journée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $requete1 = "SELECT id1,nom FROM tab1 ";
    $requete1b = = mysqli_query($con,$requete1);
     
    while($reponse = mysqli_fetch_array($requete1b, MYSQLI_BOTH)) {
     
    $requete2 = 'SELECT SUM(valeur) as valeur_totale FROM tab2 WHERE id1 ="'.$id1_recuperee.'" GROUP BY id1 ';
    $requete2b = mysqli_query($con,$requete2);
     
    unset($valeur);
    WHILE ($reponse2 = = mysqli_fetch_array($requete2b) ) { $valeur = $reponse2['valeur_totale']; }
     
    $id1_recuperee = $reponse['id1'];
    $nom_recupere = $reponse['inom'];
     
    echo $id1_recuperee;
    echo $nom;
    echo $valeur;
    }

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    si id1 est une chaine de caractères cela me semble bon, si c'est un nombre il faut supprimer les apostrophes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT SUM(valeur) as valeur_totale FROM tab2 WHERE id1 =".$id1_recuperee." GROUP BY BY id1 "
    Avez-vous essayé votre requête directement dans MySQL (en remplaçant ".$id1_recuperee." par 1 par exemple) ?

    Edition : nos messages se sont croisés.

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

Discussions similaires

  1. variable dans requete SQL pour delphi
    Par socooooool dans le forum Bases de données
    Réponses: 9
    Dernier message: 25/01/2013, 11h27
  2. [MySQL] variable 'matable' en php dans requete sql insert
    Par Vortexia dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 08/03/2012, 13h28
  3. variable dans requete sql
    Par xian21 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/01/2009, 12h14
  4. [Debutant] Variables dans requete SQL
    Par Freygolow dans le forum C#
    Réponses: 11
    Dernier message: 21/05/2008, 09h14
  5. variable dans requete syntaxe
    Par krassi dans le forum Requêtes et SQL.
    Réponses: 18
    Dernier message: 02/03/2007, 16h49

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