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 :

Probleme de requete [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut Probleme de requete
    Bonjour,

    J'ai un coucis pour crer une requete j'ai 2 tables, la table production pour laquelle j'inserre les quantités produite et la table rec qui sont les enregistrement avec les informations tel que les equipes, la date et les défauts etc ... et qui est lier au champs id de production c'est a dire production.id = rec.idprod.



    Je cherche a faire le total des quantitées et a reprendre la quantité fabriqué

    voici ma requete :

    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
    $result = mysql_query("SELECT * FROM defaut WHERE idligne = '$_POST[ligne]' ") or die(mysql_error());
     
    while ($d=@mysql_fetch_array($result)) {
    echo "$d[nom]<br>";
     
    //somme des défauts pour la ligne choisie
    $result2 = mysql_query("SELECT SUM(quantitedef) as somme_quantitedef, idprod  FROM rec WHERE idligne = $d[idligne]   $Requipe AND iddefaut =$d[id]  AND date_atelier>='$date_debut' AND date_atelier<='$date_fin' ") or die(mysql_error());  
    $c=mysql_fetch_array($result2); 
    echo "<input type=\"text\" value=\"$c[somme_quantitedef]\" size=\"27\"><br>"; 
    } 
     
    //ici je voudrais reprendre la quantité produite mais cela ne marche pas
    $idprod = $c['idprod']; 
    $result = mysql_query("SELECT prod FROM production WHERE id=$idprod") or die(mysql_error()); 
    $d=mysql_fetch_array($result); 
     
    echo "<b>Quantité fabriquée: </b><br> <input type=\"text\" value=\"$d[prod]\" size=\"27\"><br>";
    Voici mes tables :

    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
    20
    CREATE TABLE `production` (
      `id` int(2) NOT NULL auto_increment,
      `idligne` int(2) NOT NULL default '0',
      `prod` int(10) NOT NULL default '0',
      `equipe` char(2) NOT NULL default '',
      `date_atelier` date NOT NULL default '0000-00-00',
      PRIMARY KEY  (`id`)
    )  ;
     
     
    CREATE TABLE `rec` (
      `id` int(2) NOT NULL auto_increment,
      `idligne` int(2) NOT NULL default '0',
      `quantitedef` int(100) NOT NULL default '0',
      `date_atelier` date NOT NULL default '0000-00-00',
      `equipe` varchar(200) NOT NULL default '',
      `idprod` int(10) NOT NULL default '0',
      `iddefaut` int(50) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ;
    merci de votre aide

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    2 questions

    normal que ta 2eme requête soit sortie du while?


    je comprend pas trop cette structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ... WHERE idligne = $d[idligne]   $Requipe ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    Bonjour,

    Merci de la réponse,

    pour la requete
    $result = mysql_query("SELECT prod FROM production WHERE id=$idprod") or die(mysql_error());

    C'est normal qu'elle soit sortie du while car la requete avant affiche tout les défaut appartenant a une ligne de fabrication et la dernier requete est sortie du while pour faire apparaitre la quantité fabriquée

    Pour le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE idligne = $d[idligne]   $Requipe ...
    dans le code avant j'ai un choix et cette variable est égal a ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Requipe = "AND equipe = '$_POST[equipe]'" ;

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    est ce que cette requete là renvoie un resultat ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $result2 = mysql_query("SELECT SUM(quantitedef) as somme_quantitedef, idprod  FROM rec WHERE idligne = $d[idligne]   $Requipe AND iddefaut =$d[id]  AND date_atelier>='$date_debut' AND date_atelier<='$date_fin' ") or die(mysql_error());  
    $c=mysql_fetch_array($result2); 
    echo "<input type=\"text\" value=\"$c[somme_quantitedef]\" size=\"27\"><br>"; 
    }

    test le dans une console mysql pour voir le resultat.
    suggestion: je me demande pourquoi tu ne fais pas la requete en une seule fois? en faisant une jointure entre tes tables. Pour cela, je crois qu'il va te falloir ajouter des contraintes de type clé etrangère dans tes tables.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    Bonjour,

    J'ai bien un résultat avec cette requete les different enregistrement s'affiche dans mes input

    Oui je pense qu'il faut faire une jointure mais je ne sais pas comment faire cela

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    Citation Envoyé par fabien14 Voir le message
    Bonjour,

    J'ai bien un résultat avec cette requete les different enregistrement s'affiche dans mes input

    Oui je pense qu'il faut faire une jointure mais je ne sais pas comment faire cela
    fait un echo de ta variable $idprod pour voir son contenu


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $idprod = $c['idprod']; 
    echo "valeur de idprod=$idprod";

    ou bien tu copies ta requete et l'execute sous phpmyadmin comme suit

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //ici je voudrais reprendre la quantité produite mais cela ne marche pas
    $idprod = $c['idprod']; 
    $req="SELECT prod FROM production WHERE id=$idprod"
    echo "Requete=".$req;
    

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    bonjour,

    J'obtiens une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mélanger les colonnes GROUP (MIN(),MAX(),COUNT()...) avec des colonnes normales est interdit s'il n'y a pas de clause GROUP BY

    voici mon code complet :

    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
    20
    //choix de la ligne :
    $result = mysql_query("SELECT * FROM defaut WHERE idligne = '$_POST[ligne]' ") or die(mysql_error());
    while ($d=@mysql_fetch_array($result)) {
    echo "$d[nom]<br>";
     
     
    // on affiche tous les défaut pour la ligne choisie si dessus et dans les input on affiche la somme de ceux ci
    $result2 = mysql_query("SELECT SUM(quantitedef) as somme_quantitedef, idprod  FROM rec WHERE idligne = $d[idligne]   $Requipe AND iddefaut =$d[id]  AND date_atelier>='$date_debut' AND date_atelier<='$date_fin' ") or die(mysql_error());  
    $c=mysql_fetch_array($result2); 
    echo "<input type=\"text\" value=\"$c[somme_quantitedef]\" size=\"27\"><br>"; 
    } 
     
    //ici je voudrais récuperer la valeur idprod afin de me resertir dans la requete ci dessous
    $idprod = $c['idprod']; 
     
    // j'affiche  la quantité dans le champs
    $result3 = mysql_query("SELECT prod FROM production WHERE id=$idprod") or die(mysql_error()); 
    $d=mysql_fetch_array($result3); 
     
    echo "<b>Quantité fabriquée: </b><br> <input type=\"text\" value=\"$d[prod]\" size=\"27\"><br>";

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    lorsque dans une requete sql tu utilises une fonction d'agregation (avg, sum,...) et tu selectionnes d'autres colonne de ta table, tu es obligé de faire un group by et de tous les champs apparaissant dans ton select.
    essai ceci
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // on affiche tous les défaut pour la ligne choisie si dessus et dans les input on affiche la somme de ceux ci
    $result2 = mysql_query("SELECT SUM(quantitedef) as somme_quantitedef, idprod  FROM rec WHERE idligne = $d[idligne]   $Requipe AND iddefaut =$d[id]  AND date_atelier>='$date_debut' AND date_atelier<='$date_fin'  group by idprod  ") or die(mysql_error());  
    $c=mysql_fetch_array($result2); 
    echo "<input type=\"text\" value=\"$c[somme_quantitedef]\" size=\"27\"><br>"; 
    }

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    Merci ca a l'air de fonctionner

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

Discussions similaires

  1. probleme de requete
    Par doudou1 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/04/2004, 13h42
  2. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45
  3. PROBLEME DE REQUETE IMBRIQUEE
    Par fleuve007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/12/2003, 15h33
  4. probleme de requete
    Par LineLe dans le forum ASP
    Réponses: 8
    Dernier message: 17/09/2003, 16h47
  5. Probleme de requete
    Par misterbillyboy dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/07/2003, 08h24

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