Page 1 sur 1

Requête php sur une bd mysql

Posté : 25 mars 2006, 00:22
par yoggiz
Alors voilà le truc... j'ai créé une bd d'une seule table (je sais... je sais... je devrais faire plusieurs tables avec... mais bon je fais un essai...)

Voici la table mysql:

Champ                     Type                     Null                  Défaut 
id_commande           int(11)                   Non     
date                         date                      Non                 0000-00-00  
type                         varchar(30)           Non    
client                        varchar(50)           Non    
num_transaction        varchar(30)           Non    
transporteur              varchar(50)           NULL  
type_transporteur      varchar(15)           Non    
produit                      varchar(15)           Non    
qte_attendu               varchar(10)           Non                  0  
qte_recu                    varchar(10)          NULL  
A partir de cette table, je veux établir mon inventaire. Je dois donc faire une requête sur le produit (ex.: blé) et déterminer si je l'ai recu ou expédié (champ 'type'). Ensuite, je dois faire la somme des réception du produit moins la somme des expéditions du produits. Exemple, tout ce que j'ai recu de blé moins tout ce que j'ai expédié de blé.

J'ai monté le script suivant pour faire cette requête et savoir mon inventaire.
<?php

 // Ce script récupère et affiche tous les enregistrements de la table "gestion"

$titre_page ='Inventaire';
include ('entete.inc');

// information pour la connection à le DB
require_once ('mysql_connect.php');

// requête SQL qui compte le nombre total d'enregistrements dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT produit, SUM(qte_recu) FROM gestion where type="Expédition" group by produit';
$result1 = mysql_query($select,$dbc) or die ('Erreur : '.mysql_error() );

$select = 'SELECT produit, SUM(qte_recu) FROM gestion where type="Reception" group by produit';
$result2 = mysql_query($select,$dbc) or die ('Erreur : '.mysql_error() );

$result3=$result2-$result1;

$total = mysql_num_rows($result3);

// si on a récupéré un résultat on l'affiche.
if($total) {
    // début du tableau
    echo '<table bgcolor="#FFFFFF" table align center="center" cellspacing="5" cellpadding="5">'."\n";
        // première ligne on affiche les titres des colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>Produit</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Inventaire</u></b></td>';
        echo '</tr>'."\n";
    // lecture et affichage les résultats
    while($row = mysql_fetch_array($result3)) {
        echo '<tr>';
        echo '<td bgcolor="#CCCCCC">'.$row['produit'].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$result3.'</td>';
        echo '</tr>'."\n";
    }
    echo '</table>'."\n";
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result3);

?>
</body>
</html>
Tout me semble logique dans le script (n'oublié pas que je suis un débutant... donc c'est sûr que ca ne l'ai pas.... :lol: ) mais j'ai l'erreur suivante qui apparaît:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\inventaire_try.php on line 21

Pas d'enregistrements dans cette table...
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\inventaire_try.php on line 45

Quelqu'un a une idée... suggestion pour corriger mon problème?

Posté : 25 mars 2006, 09:25
par mario
$result3=$result2-$result1; 

$total = mysql_num_rows($result3); 

// si on a récupéré un résultat on l'affiche. 
if($total) { 
:shock:

bon
essaye de ne faire qu'une seule requete et supprime moi ta soustraction de result.

pour la requête, utilise UNION, la doc est ici

ça devrait donner

Code : Tout sélectionner

(SELECT produit, SUM(qte_recu) FROM gestion WHERE type = 'Expédition' GROUP BY produit) UNION (SELECT produit, SUM(qte_recu) FROM gestion WHERE type = 'Reception' GROUP BY produit)
à vérifier.
ps: les accents dans le nom des tables c'est pas :-k top

Posté : 25 mars 2006, 23:49
par yoggiz
Alors voilà, j'ai essayé ton truc mais je pige pas trop... :oops: Je comprend l'idée de l'union... mais je crois pas qu'en mettant une union je vais avoir la possibilité de savoir mon inventaire (Reçu - Expédié) d'où l'idée que j'avais eu de mettre une soustraction... sinon, j'ai quand même changé mon script dont voici le résultat:
// requête SQL qui compte le nombre total d'enregistrements dans la table et qui
//récupère tous les enregistrements
$select = ('SELECT produit, SUM(qte_recu) FROM gestion where type="Expédition" group by produit')
          UNION
          ('SELECT produit, SUM(qte_recu) FROM gestion where type="Reception" group by produit')
          GROUP BY produit;
$result = mysql_query($select,$dbc) or die ('Erreur : '.mysql_error() );

$total = mysql_num_rows($result);
par contre, je reçois un message d'erreur parse sur le deuxième select.... je vois pas où j'ai échappé non plus un , () {} "' ?!