Récupérer informations menu déroulant

Eléphant du PHP | 184 Messages

06 oct. 2011, 17:39

Bonjour à vous,

J'ai une bdd qui est structurée comme ceci:

Catégories ( ID_categorie, nom_catégorie )
Produits ( ID_produit, nom_produit, #id_catégorie ) --> Table liée aux catégories.

J'ai une petite liste déroulante qui liste les catégories de manière dynamique:

<?php $conn = mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR);
 
mysql_query("SET CHARACTER SET 'utf8';")or die(mysql_error()); 
 
mysql_select_db($database_localhost, $conn); 


 //requête SQL:
$sql = "SELECT *
        FROM categories";
 
//exécution de la requête:
$requete = mysql_query($sql) or die( mysql_error());?>

<p><b>Ajouter un produit dans:</b></p>  
<form action="produits.php" method="post">  
<select name="categories">  
<?php
while ($result = mysql_fetch_array($requete)) {
?>
<option value="choix"><?php echo nl2br($result['nom_categorie']); ?></option>  
<?php
}
?>
    </select>  
<input type="submit" value="Valider">  

</form>

Mon soucis est que, j'aimerai dans une autre page, après la validation, récupérer tous les produits selon que qui aura été sélectionner comme catégorie dans le menu déroulant.

Seulement je ne sais pas trop comment récupérer ça :(

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 oct. 2011, 19:26

salut,

tu ne génère pas comme il faut le select :) (enfin pour faire bien)

<option value="choix"><?php echo nl2br($result['nom_categorie']); ?></option>
<select name="categories">  
<?php
while ($result = mysql_fetch_array($requete)) {
echo '<option value="'.$result['ID_categorie'].'">',$result['nom_categorie'],'</option>';
}
?>
sur la page cible tu récupère $_POST['categories'] et réalise une requete select avec (select * from Produits where id_categorie = $_POST['ID_categorie'] )

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 184 Messages

07 oct. 2011, 09:45

Merci à toi pour la réponse,

par contre j'ai une erreur de syntaxe sur la requête sql, on dirait que cela vient des ' et " :(

Eléphanteau du PHP | 31 Messages

07 oct. 2011, 14:48

Sa aurait été mieux si tu avais collé l'erreur ainsi que la ligne qui pose problème.

Remplace :
',$result['nom_categorie'],'
par :
'.$result['nom_categorie'].'

ViPHP
ViPHP | 2577 Messages

07 oct. 2011, 15:01

Pour info echo supporte plusieurs paramètres ; donc on peut utiliser les "." (un seul paramètre) ou les "," (plusieurs paramètres) indifféremment.

la commande SHOW CHARACTER SET permet de voir les valeurs possible (si erreur MySQL 1115)

ViPHP
xTG
ViPHP | 7331 Messages

07 oct. 2011, 16:07

Sa aurait été mieux si tu avais collé l'erreur ainsi que la ligne qui pose problème.

Remplace :
',$result['nom_categorie'],'
par :
'.$result['nom_categorie'].'
Il est possible en fait de concaténer avec la virgule en PHP. :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 oct. 2011, 17:03

Sa aurait été mieux si tu avais collé l'erreur ainsi que la ligne qui pose problème.

Remplace :
',$result['nom_categorie'],'
par :
'.$result['nom_categorie'].'
D'ailleurs d'après mes dernières lectures sur le sujet (il y a longtemps) la virgule serait plus rapide que le point, ceci dit est est réservée à l'affichage.
Merci à toi pour la réponse,

par contre j'ai une erreur de syntaxe sur la requête sql, on dirait que cela vient des ' et " :(

et oui le message d’erreur est obligatoire pour que l'on puisse t'aider :mrgreen:


@+
Il en faut peu pour être heureux ......