Problème avec un POST

Signaler
Messages postés
186
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
17 février 2008
-
Messages postés
186
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
17 février 2008
-
Bonjour à tous,

Je vous explique mon prob depuis plusieurs jour malalam(admin cs) et moi nous planchons sur un prob dans mon source.
Nous avons isolé, enfin malalam surtout, que c'est un problème avec la fonction post dans mon code qui pose problème. Pour bien comprendre je vous montre les parties de sources concernées :

Mon menu déroulant :

<form name="Afficher" method="post" action="">



<select name="categorie">
<option value="1">Software</option>
<option value="2">Ecran</option>
<option value="3">Mémoire</option>
<option value="4">Portable</option>
<option value="5">Processeur</option>
</select>

</form>

La partie PHP :

<?php
$id=$_POST['categorie'];
if(isset($id) and is_numeric($id))
{
//echo 'categorie = ', $_POST['categorie'];
mysql_select_db($database_ecommerce, $ecommerce);
$sql1="SELECT shop_articles.id, shop_articles.nom_article, shop_articles.prix_ht, shop_articles.prix_ttc, shop_articles.rubarticle1, shop_catégories.intitule FROM shop_articles Inner join shop_catégories on shop_articles.rubarticle1=shop_catégories.id where shop_articles.rubarticle1='$id'";
//echo $sql1;
//echo $id;
$req=mysql_query($sql1) or die('Erreur SQL!
'.$sql1.'
'.mysql_error());
while ($row_articles=mysql_fetch_row($req))
{

?>
<tr>
<td height="19"><?php echo $row_articles[id]; ?></td>
<td height="19"><?php echo $row_articles[intitule]; ?></td>
<td width="259"><?php echo $row_articles[nom_article]; ?></td>
<td>
<?php echo $row_articles[prix_ht]; ?>
</td>
<td>
<?php echo $row_articles[prix_ttc]; ?>
</td>
</tr>
</table>
<?php '
'.$row_articles[id].' '.$row_articles[nom].' '.$row_articles[nom_article].' '.$row_articles[prix_ht].' '.$row_articles[prix_ttc].'';
}
}
mysql_close();
?>

Voilà, dans le source, je met en rouge une partie du code parce que au début dans ma requête SQL la variable $id était remplacé par $_POST['categorie'], mais dans ce cas j'avais une erreur SQL, donc pour ne plus avoir ce problème je suis passé par une variable. De plus, perso je trouve ca plus propre.

Le problème c'est que le POST ne nous retourne aucune valeur nous avons fait une batterie de test suffit de voir les "//echo". Je cherche donc a svoir comment on peut récupérer la valeur d'un post et l'affecter à une variable.

Le but du code est de pouvoir afficher une liste de produit par catégorie, l'internaute choisi une catégorie dans le menu déroulant et on affiche uniquement les articles de cette catégorie.

Le but est simple, et je pensais que la solution l'était également mais je me suis planté.

Si quelqu'un pouvait nous éclairer se serait super sympa.

@++

Stu76

bien sur après je donnerais l'entièreté du code source à qui veut.

24 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Tu postes ton formulaire comment ?? Je te l'ai déjà demandé, et le code que je vois là n'est pas du tout correct par rapport à ce qui t'a été dit dans ton autre post.

Si je fais ça, moi, ça marche :

<form name="Afficher" method="post" action="">




<select name="categorie" onchange="this.form.submit();">
<option value="null">-</option>
<option value="1">Software</option>
<option value="2">Ecran</option>
<option value="3">Mémoire</option>
<option value="4">Portable</option>
<option value="5">Processeur</option>
</select>

</form>



<?php
if (isset($_POST['categorie']) and is_numeric($_POST['categorie']))
{
echo 'categorie = ', $_POST['categorie'];
}

Alors explique moi pourquoi tu ne suis pas ce qu'on te dis ...?
Messages postés
186
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
17 février 2008
1
Re malalam,

Je crois que je me suis mal fait comprendre, le post me renvoi une réponse :
$_POST['categorie'], sauf que je n'arrive pas revenir à sur la valeur 1, lol.
Mon problème réside maintenant dans le faite que je n'arrive pas affecter la valeur du post a ma fonction SQL, or je fais exactement ce que tu me dis.

Je ne sais pas pourquoi j'ai essayé avec une variable $id et avec ='.$
_POST['categorie']; en fin de requête SQL, rien a faire bien sur je continue à chercher
Messages postés
186
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
17 février 2008
1
je rectifie mon dernier message j'ai bien une valeur qui est effecter à ma requête sql, mais ces cette requêtes maintenant qui pose problème quand je fais un echo $sql1 voici ce qui m'affiche :

SELECT shop_articles.id, shop_articles.nom_article, shop_articles.prix_ht, shop_articles.prix_ttc, shop_articles.rubarticle1, shop_catégories.intitule FROM shop_articles Inner join shop_catégories on shop_articles.rubarticle1=shop_catégories.id where shop_articles.rubarticle1=1

Donc mon post envoi bien une valeur mais, malgrés tout je n'arrive pas a afficher mes articles par catégorie pour info voici une requête sql qui fonctionne mais elle affiche l'ensemble des catégories elle ne me permet pas d'afficher une d'entre elle.

SELECT shop_articles.id, shop_articles.nom_article, shop_articles.prix_ht, shop_articles.prix_ttc, shop_articles.rubarticle1, shop_catégories.intitule
FROM shop_articles Inner join shop_catégories on shop_catégories.id=shop_articles.rubarticle1 where shop_articles.rubarticle1=shop_catégories.id'
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
je t'ai donné la réponse, regarde bien... :-)
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
<td height="19"><?php echo $row_articles[id]; ?></td>
<td height="19"><?php echo $row_articles[intitule]; ?></td>
<td width="259"><?php echo $row_articles[nom_article]; ?></td>
<td>
<?php echo $row_articles[prix_ht]; ?>
</td>
<td>
<?php echo $row_articles[prix_ttc]; ?>
</td>

ça ne risque pas de t'afficher grand' chose
il manque les quotes partout --> $row_articles['id'];
Messages postés
186
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
17 février 2008
1
Malalam je viens de retouner le problème dans tout les sens et la je deviens fous, j'ai bien la valeur du post qui s'affiche quand je fais echo 'categorie = ', $_POST['categorie'];

Mais la fonction $_POST['categorie'], m'affiche un message d'erreur quand je le place dans ma requête, quand je passe par une variable id pas de prob. Mais je n'ai pas mais donné qui s'affiche dans mon tableau pq ? je comprend pas.

<form name="Afficher" method="post" action="">


<select name="categorie" onchange="this.form.submit();">
<option value="0">Choisir...</option>
<option value="1">Software</option>
<option value="2">Ecran</option>
<option value="3">Mémoire</option>
<option value="4">Portable</option>
<option value="5">Processeur</option>
</select>

</form>
</td>
</tr>
</table>
N&deg;,
Catégorie,
Nom d'article ,
Prix HTVA en &euro; ,
Prix TVAC en &euro; ,

----

<?php
$id=$_POST['categorie'];
if(isset($id) and is_numeric($id))
{
echo 'categorie = ', $_POST['categorie'];
mysql_select_db($database_ecommerce, $ecommerce);
$sql1=\"SELECT shop_articles.id, shop_articles.nom_article, shop_articles.prix_ht, shop_articles.prix_ttc, shop_articles.rubarticle1, shop_catégories.intitule FROM shop_articles Inner join shop_catégories on shop_catégories.id=shop_articles.rubarticle1 where shop_articles.rubarticle1=$id\";
$req=mysql_query($sql1) or die('Erreur SQL!
'.$sql1.'
'.mysql_error());
while ($row_articles=mysql_fetch_row($req))
{
?>
----

<?php echo $row_articles[id]; ?>,
<?php echo $row_articles[intitule]; ?>,
<?php echo $row_articles[nom_article]; ?>,
<?php echo $row_articles[prix_ht]; ?>,
<?php echo $row_articles[prix_ttc]; ?>

<?php '
'.$row_articles[id].' '.$row_articles[nom].' '.$row_articles[nom_article].' '.$row_articles[prix_ht].' '.$row_articles[prix_ttc].'';
}
}
mysql_close();
?>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
J'abandonne, tu ne lis pas, je t'assure, c'est désespérant!
Tu te sers d'une variable AVANT de savoir si elle existe. Ca t'a été dit maintes fois, et là, dans ton dernier code, tu le fais tjrs!
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
shop_articles.id

essaie de ne pas qualifier dans ta requete
SELECT id, nom_article, etc...
Messages postés
186
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
17 février 2008
1
Merci, quand même malalam mais si j'étais un champion du php je solliciterais pas l'aide de la communauté.

Merci pour ton aide pour info je viens de rectifier une partie du code qui est ci dessous, mais moi je ne vois pas ce que tu me demande je suis débutant en php par expert.

<?php
if(isset($_POST['categorie']) and is_numeric($_POST['categorie']))
{
mysql_select_db($database_ecommerce, $ecommerce);
$sql1="SELECT shop_articles.id, shop_articles.nom_article, shop_articles.prix_ht, shop_articles.prix_ttc, shop_articles.rubarticle1, shop_catégories.intitule
FROM shop_articles Inner join shop_catégories on shop_catégories.id=shop_articles.rubarticle1 where shop_articles.rubarticle1=".$_POST['categorie'];
echo 'categorie = ', $_POST['categorie'];
$req=mysql_query($sql1) or die('Erreur SQL!
'.$sql1.'
'.mysql_error());
while ($row_articles=mysql_fetch_row($req))
{

?>
<tr>
<td height="19"><?php echo $row_articles['id']; ?></td>
<td height="19"><?php echo $row_articles['intitule']; ?></td>
<td width="259"><?php echo $row_articles['nom_article']; ?></td>
<td>
<?php echo $row_articles['prix_ht']; ?>
</td>
<td>
<?php echo $row_articles['prix_ttc']; ?>
</td>
</tr>
</table>
<?php '
'.$row_articles[id].' '.$row_articles[nom].' '.$row_articles[nom_article].' '.$row_articles[prix_ht].' '.$row_articles[prix_ttc].'';
}
}
mysql_close();
?>

Et la j'ai tj rien sache que je lis tout ce que tu dis et j'essaye de comprendre et d'appliquer mais des choses qui pour toi sons simple voir basic peuvent paraître complexe si pas hyper complexe pour moi.

bonne route

stu 76
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
si a la place de ça
$row_articles['id'];

tu mets ça
$row_articles['shop_articles.id'];

qu'est ce ça raconte ??
Messages postés
186
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
17 février 2008
1
J'ai modifié la requête comme tu mas dit et quand je compile voilà ce qu'il me retourne:

categorie = 2Erreur SQL!
SELECT id, nom_article, prix_ht, prix_ttc, rubarticle1, intitule FROM shop_articles Inner join shop_catégories on shop_catégories.id=shop_articles.rubarticle1 where shop_articles.rubarticle1=2
Column 'id' in field list is ambiguous

j'ai également mis

$row_articles['shop_articles.id'];

et ras
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Nan Sidf, ça ne marche pas ce genre de trucs. On ne peut pas, je veux dire, le tableau contient uniquement 'id' dans ce cas.

Quand tu dis que tu n'as rien, avec ton dernier script...tu veux dire que si tu sélectionnes une entrée dans ta liste, la requête n'est pas effectuée?
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
Column 'id' in field list is ambiguous

ça doit être un pb sql
(change le nom du champ -->id_art pour voir)
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
en tous cas ta requete sql échoue, ça c'est sûr
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Il doit mettre les alias, c'est _ça son erreur maintenant...parce qu'il a deux champs 'id' dans 21 tables différentes. D'où l'importance de garder les noms de table, ou au moins des alias de ces tables...
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
ok tu as raison
mais franchement ça a l'air tordu comme pb
Messages postés
186
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
17 février 2008
1
Oui donc echo 'categorie = ', $_POST['categorie']; me retourne bien la valeur du post, mais je n'ai rien qui s'affiche dans mon tableau or que une valeur est affecté à ma requête sql voici le résultat

SELECT shop_articles.id, shop_articles.nom_article, shop_articles.prix_ht, shop_articles.prix_ttc, shop_articles.rubarticle1, shop_catégories.intitule FROM shop_articles Inner join shop_catégories on shop_catégories.id=shop_articles.rubarticle1 where shop_articles.rubarticle1=2

Donc quand je sélectionne la 3è ligne il me retoune bien la valeur 2.

Et c'est que je ne comprend pas.
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
while ($row_articles=mysql_fetch_row($req))

essaie

while ($row_articles=mysql_fetch_array($req))
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
On aurait ptête pu voir ça avant en effet... :-(
et plutôt ..._fetch_array ($req, MYSQL_ASSOC)
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
<?php '
'.$row_articles[id].' '.$row_articles[nom].'
'.$row_articles[nom_article].' '.$row_articles[prix_ht].'
'.$row_articles[prix_ttc].'';

Revoit comment on fait pour récupérer une valeur d'un tableau par rapport à sa clé..