justine75
Messages postés49Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention29 décembre 2005
-
28 déc. 2005 à 22:00
justine75
Messages postés49Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention29 décembre 2005
-
29 déc. 2005 à 03:12
bonjour!
voilà j'ai un petit problème que je n'arrive pas à élucider
le voici :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c
je ne vois pas trop où j'ai peu fauté... :?
voici mon code :
if ($tab_com = mysql_query ($add_com,$base))
{
$res_com mysql_fetch_array($tab_com);> ERREUR DONC ICI
$num_com = $res_com[0];
$quantite = $_SESSION['panier']['quantite'];
echo "<h3><center>Votre commande a bien été prise en compte
Le paiement s'effectuera au moment de la livraison
le delais est de 48h
</center>";
}
else
{
echo "Erreur dans l'éxecution de la requete derniere_comm
";
echo "Erreur".mysql_error().":".mysql_error()."
";
}
merci pour votre aide!
A voir également:
Uncaught error: call to undefined function mysql_fetch_array()
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 28 déc. 2005 à 22:22
saLut...
Tu nous caches l'essentiel, à savoir la requète fautive !
Mais je soupçonne tout de même la faute :
Tu utilises une variable nommée $add_com.
Je vois gros comme ma b**e que $add_com = "insert into table ...";
donc dans le cas d'une insertion (ou update ou delete ou drop ou
truncate ou ... donc tout sauf select) mysql_query répond bêtement
'true' (enfin je veux dire que c'est toi qu'est bête !)
Normal vu que tu ne lui demande pas de resultat !!!
donc $tab_com == true;
donc is_resource($tab_com) == false;
donc mysql_fetch_array($tab_com) == 'Va te faire voir';
justine75
Messages postés49Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention29 décembre 2005 28 déc. 2005 à 23:23
huumm c'est facile pour toi "homme si fort en php" de critiquer les gens qui débutent
si je suis ici c'est qu'il y a des raisons...
enfin, point de vue pédagogie = 0 ou false, comme tu veux!
heuresement qu'il n'y en a pas des tonnes comme toi ...
justine75
Messages postés49Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention29 décembre 2005 29 déc. 2005 à 00:51
oauis ej sais bien que c'est toujours les meme questions qui sont posées mais je pense que chaque cas est différent...
revenons à mon cas ;)
en faite c'est une requete du type :
$add_com = " INSERT INTO commande(num_com, date_com) VALUES ( '', '".$date."' )";
le code ennoncé plus haut marche tres bien avec une requete de type SELECT
donc en faites j'ai pas spécialement compris ce que tu m'as dit plus haut..
Vous n’avez pas trouvé la réponse que vous recherchez ?
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 29 déc. 2005 à 01:16
Suffit juste de savoir que mysql_query ne renvoit JAMAIS true, et normalement ca devrait être bon !! :)
Via la doc www.php.net ==> Mysql_query() renvoit FALSE si rien ne marche, mais certainement pas TRUE :)
De toute facon, il faut savoir que tu ne peux pas faire de mysql_fetch_array() sur une requète de type INSERT,UPDATE, DELETE etc... Seulement sur un SELECT !
Pour voir si il y a une erreur mysql je te conseil de faire une fonction comme celle la :
function query($sql) {
if ( !$query = mysql_query($sql) ) {
die (mysql_error());
} else {
return $query;
}
}
C'est la SEULE méthode la plus fiable pour savoir si une requète est bien passé ou non, toutes les autres sont basés sur le fait qu'un if convertit TOUS les types en booléans (true/false) seulement une méthode prédéfini et pas forcément la meilleur.
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 29 déc. 2005 à 01:42
Justine :
Comme le dit FhX, mysql_fetch_array sert à "convertir" le résultat
d'une requète SQL en tableau. Simplement, certaine requètes ne
renvoient pas de résultat sous forme de données. Il s'agit des
insertions, suppression, modification...
Donc quand tu fais un insert, pas de retour de données.
Donc pas de mysql_fetch_*
FhX parle de fr.php.net... il faut que tu lises attentivement cette
documentation. D'ailleurs, en voici le morceau qui explique le problème
:
Pour les requêtes du type <var>SELECT</var>, <var>SHOW</var>,
<var>DESCRIBE</var> ou <var>EXPLAIN</var>,
mysql_query() retournera une ressource en cas de succès,
ou <tt>FALSE</tt> en cas d'erreur.
Pour les autres types de requêtes, <var>UPDATE</var>,
<var>DELETE</var>, <var>DROP</var>, etc.,
mysql_query() retourne <tt>TRUE</tt> en cas de succès
ou <tt>FALSE</tt> en cas d'erreur.
La ressource de résultat retournée doit être passée à la fonction
mysql_fetch_array(), et les autres fonctions
permettant d'explorer le résultat des tables, pour accéder aux
données retournées.
Utilisez mysql_num_rows() pour trouver le nombre
de lignes retournées pour une requête du type <var>SELECT</var> ou
mysql_affected_rows() pour trouver le nombre
de lignes affectées par les requpetes du type <var>DELETE</var>,
<var>INSERT</var>, <var>REPLACE</var>, ou <var>UPDATE</var>.
justine75
Messages postés49Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention29 décembre 2005 29 déc. 2005 à 02:53
ah oauis d'accord!
je savais pas que pour un INSERT on ne pouvait utiliser mysql_fetch_array..
je comprends mieux l'erreur
je vais regarder tout ça..
merci beaucoup !!!
echo " <center>Votre commande a bien été prise en compte
Le paiement s'effectuera au moment de la livraison
le delais est de 48h
</center>";
}
else
{
echo "Erreur dans l'éxecution de la requete derniere_comm
";
echo "Erreur".mysql_error().":".mysql_error()."
";
}
for ($i = 0; $i < 20 ; $i++)
{
if ($_SESSION['panier']['quantite'][$i] >0)
{
$requetes['passer'][$i] = "INSERT INTO passer(num_com, num_cli) VALUES ('', '".$_SESSION['num_cli']."')";
$requetes['conserner'][$i] = "INSERT INTO conserner (num_com, ref_produit, quantite) VALUES ( '','".$_SESSION['panier']['ref_produit'][$i]."', '".$_SESSION['panier']['quantite'][$i]."');";
$requetes['acheter'][$i] = "INSERT INTO acheter (num_cli, ref_produit, designation_produit, quantite, total) VALUES ('".$_SESSION['num_cli']."', '".$_SESSION['panier']['ref_produit'][$i]."', '".$_SESSION['article']."', '".$_SESSION['panier']['quantite'][$i]."','".$_SESSION['total']."');";
$requetes['livraison'][$i] = "INSERT INTO livraison (num_livr, date_livr, etat_livr) VALUES ('','aucun', 'encours de traitement')";
$requetes['ligne_livr'][$i] = "INSERT INTO ligne_livr (num_com, num_livr) VALUES ('', '')";
}
}
for ($i = 0; $i < 20 ; $i++)
{
if ($requetes['conserner'][$i] != "")
{
if (mysql_query ($requetes['conserner'][$i],$base))
{
//echo "<h3>Conserner n°".$i." Ajoute
";
}
else
{
echo "Erreur dans l'éxecution de la requete add_conserner
";
echo "Erreur".mysql_error().":".mysql_error()."
";
}
}
echo "
Passer = ".$requetes['passer'][1]."
";
if ($requetes['passer'][$i] != "")
{
if (mysql_query ($requetes['passer'][$i],$base))
{
//echo "Passer Ajoute n°".$i."
";
}
else
{
echo "Erreur dans l'éxecution de la requete add_passer
";
echo "Erreur".mysql_error().":".mysql_error()."
";
}
}
echo"
acheter = ".$requetes['acheter'][$i]."
";
if ($requetes['acheter'][$i] != "")
{
if (mysql_query ($requetes['acheter'][$i],$base))
{
//echo "Acheter n°".$i." Ajoute
";
}
else
{
echo "Erreur dans l'éxecution de la requete add_acheter
";
echo "Erreur".mysql_error().":".mysql_error()."
";
}
}
echo"
livraison = ".$requetes['livraison'][$i]."
";
if ($requetes['livraison'][$i] != "")
{
if (mysql_query ($requetes['livraison'][$i],$base))
{
//echo "Livraison n°".$i." Ajoute
";
}
else
{
echo "Erreur dans l'éxecution de la requete add_livraison
";
echo "Erreur".mysql_error().":".mysql_error()."
";
}
}
echo"
ligne_livr = ".$requetes['ligne_livr'][$i]."
";
if ($requetes['ligne_livr'][$i] != "")
{
if (mysql_query ($requetes['ligne_livr'][$i],$base))
{
//echo "Livraison n°".$i." Ajoute
";
}
else
{
echo "Erreur dans l'éxecution de la requete add_ligne_livr
";
echo "Erreur".mysql_error().":".mysql_error()."
";
}
}
session_destroy(); //la commande est terminee on detruit la session
session_unset();
//et on efface toutes les variables pour eviter les bug
echo"";
echo"Fermer la session";
echo"votre numero de commande est le : ".$num_com.";";
?>
en faite c'est à ce moment là du site que l'enregistrement d'une commande s'effectue .