Probleme de requete

Eléphant du PHP | 183 Messages

26 févr. 2008, 15:28

Bonjour,

J'ai un petit soucis pour récuperer une valeur $idprod = $c[idprod];

J'ai la requete suivant :
$result2 = mysql_query("SELECT SUM(quantitedef) as somme_quantitedef FROM rec WHERE idligne = '$d[idligne]'  $Requipe AND iddefaut ='$d[id]'  AND date_atelier>='$date_debut' AND date_atelier<='$date_fin' ");
$c=mysql_fetch_array($result2);
echo "<input type=\"text\" value=\"$c[somme_quantitedef]\" size=\"27\"><br>";
}

$idprod = $c[idprod];  // cette valeur la ne fonctionne pas ...

$result = mysql_query("SELECT * FROM production WHERE id = '$idprod' ");
$d=mysql_fetch_array($result);
Voici la structure de mes tables :

Code : Tout sélectionner

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`) ) ENGINE=MyISAM ;
Merci de votre aide.
_________
Fabien

Eléphant du PHP | 445 Messages

26 févr. 2008, 15:37

id de ta table production est de type int donc pas besoin des apostrophes.
$result = mysql_query("SELECT * FROM production WHERE id=".$idprod);
Edit : Et c'est pareil pour tout tes autres champs de type int

d0m
Mammouth du PHP | 1141 Messages

26 févr. 2008, 15:40

salut,

un bon conseil : fais bien attention aux quotes et doubles quotes.

Essaie de toujours sortir les variables PHP des chaines de caractères :
//non pas
"SELECT * FROM production WHERE id=$idprod"
//mais plutôt
"SELECT * FROM production WHERE id=".$idprod
et idprod n'est pas une constante, c'est un chaine de caractère utilisé comme index, il faut donc lui mettre des quotes :
$c['idprod']; 

Eléphant du PHP | 183 Messages

26 févr. 2008, 15:54

Merci de vos réponse,

J'ai corrigé mes erreurs, mais je n'est toujours pas le résultats $d[prod]
$result2 = mysql_query("SELECT SUM(quantitedef) as somme_quantitedef FROM rec WHERE idligne = $d[idligne]  $Requipe AND iddefaut =$d[id]  AND date_atelier>='$date_debut' AND date_atelier<='$date_fin' "); 
$c=mysql_fetch_array($result2); 
echo "<input type=\"text\" value=\"$c[somme_quantitedef]\" size=\"27\"><br>"; 
} 

$idprod = $c['idprod'];  // cette valeur la ne fonctionne pas ... 

$result = mysql_query("SELECT * FROM production WHERE id=".$idprod); 
$d=mysql_fetch_array($result); 

echo "<b>Quantité fabriquée: </b><br> <input type=\"text\" value=\"$d[prod]\" size=\"27\"><br>";
Je ne suis pas sur mais je pense que c'est dans cette requete que je ne selectionne pas idprod
$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' "); 
merci de votre aide
_________
Fabien

Eléphant du PHP | 445 Messages

26 févr. 2008, 16:11

Sors tes variables des chaines de caractères et affiche les erreurs SQL.

Eléphant du PHP | 183 Messages

26 févr. 2008, 16:36

Salut,

En faite j'ai pas de message d'erreur, j'ai rien qui s'affiche ...
_________
Fabien

ViPHP
ViPHP | 2144 Messages

26 févr. 2008, 16:47

Les messages d'erreurs ne s'affichent que si tu le demandes ;)
Ajoutes des or die(mysql_error()) juste après le query:
mysql_qery(...) or die(mysql_error());

Eléphant du PHP | 183 Messages

26 févr. 2008, 16:59

Bonjour,

Alors j'ai mi les message d'erreur
$result2 = mysql_query("SELECT SUM(quantitedef) as somme_quantitedef  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>"; 
} 

$idprod = $c['idprod']; 


[php]$result = mysql_query("SELECT * FROM production WHERE id=$idprod") or die(mysql_error()); 
$d=mysql_fetch_array($result); [/php]

J'ai bien un message d'erreur : Erreur de syntaxe près de '' à la ligne 1

Cependant quand je met une valeur numérique comme ceci ma requete fonctionne ...
$result = mysql_query("SELECT * FROM production WHERE id= 3")$or die(mysql_error());
_________
Fabien

Eléphant du PHP | 445 Messages

26 févr. 2008, 18:08

Juste avant :
$result = mysql_query("SELECT * FROM production WHERE id=$idprod") or die(mysql_error());
Mets un
echo 'SELECT * FROM production WHERE id='.$idprod ;

Eléphant du PHP | 183 Messages

27 févr. 2008, 09:08

Bonjour,

Voici le message d'erreur obtenu avec le echo que j'ai :

Code : Tout sélectionner

SELECT * FROM production WHERE id=Erreur de syntaxe près de '' à la ligne 1
Voici le code que j'ai mis :
$result2 = mysql_query("SELECT SUM(quantitedef) as somme_quantitedef  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>"; 
} 

$idprod = $c['idprod']; 

echo 'SELECT * FROM production WHERE id='.$idprod ; 
$result = mysql_query("SELECT * FROM production WHERE id=$idprod") or die(mysql_error()); 
$d=mysql_fetch_array($result); 
c'est la valeur $c[idprod]; qu eje n'arrive pas a récuperer


Merci de votre aide.
Modifié en dernier par fabien_14 le 27 févr. 2008, 09:17, modifié 1 fois.
_________
Fabien

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 févr. 2008, 09:11

Visiblement, $c['id_prod'] est un résultat de ta 1ere requête. Or, si tu regardes le SELECT de ta 1ere requête, tu remarqueras qu'il n'y a pas de champs 'id_prod'
Il faut donc chercher de ce côté là ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 183 Messages

27 févr. 2008, 09:22

Bonjour,

c'est excate, j'ai essayé comme cela mais rien ni fait,
$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>"; 
} 

$idprod = $c['idprod']; 
J'obtiens le message suivant :
Mélanger les colonnes GROUP (MIN(),MAX(),COUNT()...) avec des colonnes normales est interdit s'il n'y a pas de clause GROUP BY

:?
_________
Fabien