Page 1 sur 1
Probleme de requete
Posté : 26 févr. 2008, 15:28
par fabien_14
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.
Posté : 26 févr. 2008, 15:37
par h0_noMan
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
Posté : 26 févr. 2008, 15:40
par d0m
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'];
Posté : 26 févr. 2008, 15:54
par fabien_14
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
Posté : 26 févr. 2008, 16:11
par h0_noMan
Sors tes variables des chaines de caractères et affiche les erreurs SQL.
Posté : 26 févr. 2008, 16:36
par fabien_14
Salut,
En faite j'ai pas de message d'erreur, j'ai rien qui s'affiche ...
Posté : 26 févr. 2008, 16:47
par iclo
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());
Posté : 26 févr. 2008, 16:59
par fabien_14
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());
Posté : 26 févr. 2008, 18:08
par h0_noMan
Juste avant :
$result = mysql_query("SELECT * FROM production WHERE id=$idprod") or die(mysql_error());
Mets un
echo 'SELECT * FROM production WHERE id='.$idprod ;
Posté : 27 févr. 2008, 09:08
par fabien_14
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.
Posté : 27 févr. 2008, 09:11
par zeus
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à

Posté : 27 févr. 2008, 09:22
par fabien_14
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
