Comment retrouver tous les produits sélectionnés dans la B.D?

Fermé
inabantu Messages postés 2 Date d'inscription mardi 6 novembre 2012 Statut Membre Dernière intervention 24 décembre 2012 - 24 déc. 2012 à 09:41
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 - 24 déc. 2012 à 10:52
Bonjour, comme le titre l'indique, j'aimerai savoir comment faire pour retrouver tous les produits sélectionnées dans la base de données. En effet j'ai conçu un formulaire à remplir pour effectuer une commande mais quand je fais une sélection de plusieurs produits, je constate que dans la base de données seul le dernier produit sélectionné apparaît.
Voici mon code:

<?php $titre="Réservation - Snack Bar Mon ami";
include("tete.php");
include("connexiondb.php");

if(isset($_SESSION['numeroid'])&& isset($_SESSION['motdepasse']) &&!empty($_SESSION['numeroid'])
&& !empty($_SESSION['motdepasse']))
{ }
else {
header('location:login_client.php');
}


?>
<div id="contenu" class="text2">
<h1>Réservation rapide</h1>
<?php

?>

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

<table width="50%" cellspacing="2" cellpadding="0" border="0" >
<tbody>



<tr>
<td>Date du jour </td>
<td> <input type="text" size="30" name="datedujour" value="<?php $date_du_jour=date("d-m-Y"); echo "$date_du_jour";?>"/> </td>

</tr>

Maintenez la touche Contrôle appuyée, pour sélectionner plusieurs produits.<br/>
<tr>
<td>Produits</td>
<td><select name="produits" size="" multiple="MULTIPLE" style="height:120px">
<?php
$re="SELECT * FROM produit ";
if(!$re)

{echo "Erreur de la Requette"; }

else{
$donnees=mysql_query($re);

while($result=mysql_fetch_object($donnees))
{

echo "<option value=\"$result->nom\"> $result->nom </option>";

}

} ?>


</select></td>

</tr>

<tr>
<td>Nombre de Personne</td>
<td><input type="textfield" size="30" name="nombredepersonne"/></td></tr>

<tr>
<td>Date de la réservation</td>
<td><input type="text" size="30"name="datereservation" value="<?php $date_du_jour=date("d-m-Y"); echo "$date_du_jour";?>"/></td>
</tr>

<tr>
<td>Heure de la réservation</td>
<td><input type="text" size="30"name="heurereservation"/></td>
</tr>




</tbody>
</table>
<p> <input type="submit" name="day" value="RESERVER"/> </p>

<?php
if(isset($_POST['day']))
{
if(!empty($_POST['datedujour'])&&!empty($_POST['produits'])&&!empty($_POST['nombredepersonne'])&&!empty($_POST['datereservation'])&&!empty($_POST['heurereservation']))

{echo $datedujour=$_POST['datedujour'];
$produits=$_POST['produits'];
$nombredepersonne=$_POST['nombredepersonne'];
$datereservation=$_POST['datereservation'];
$heurereservation=$_POST['heurereservation'];

$req='INSERT INTO reservation VALUES ("","'.$produits.'","'.$nombredepersonne.'", "'.$datereservation.'","'.$heurereservation.'", "'.$datedujour.'")';
if(mysql_query($req))
{
echo "<span class=\"enreg\">correctement enregistré</span>";
}
else{
echo "Erreur d'enregistrement";
}

}
else
{
echo "Veuillez remplir tous les champs";

}

}


?>




</form>
</div>
<?php include("pied.php")?>



Alors j'aimerais savoir ce que je devrais ajouter dans mon code concernant la sélection des produits ;depuis <td>Produits</td> pour que si j'appuie sur le bouton RESERVER je retrouve tous mes produits dans ma base de données?
Merci pour votre aide.
A voir également:

1 réponse

tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 220
24 déc. 2012 à 10:52
Salut,

Je ne sais pas si c'est la meilleurs solution mais à défaut vous pouvez vous en inspirer ...

<form method="post" action=""> 
<select name="produits[]" size="" multiple="MULTIPLE"> 
<option value="1">1<option>
<option value="2">2<option>
<option value="3">3<option>
</select>
<input type="submit" name="ok">
</form>

<?php 
if(isset($_POST["ok"])){
	$produits = '';
	for ($i=0;$i<count($_POST['produits']);$i++)
	{
		$produits .= 'champ = '.$_POST['produits'][$i].' AND ';
	}
	
	$requete = substr("SELECT * FROM table WHERE $produits", 0, -4)."ORDER BY id DESC"; 
	echo $requete;
}
?>


Comme vous utilisez une sélection multiple il faut déclarer le nom du "select" comme un tableau en ajoutant une paire de crochet. Ensuite on utilise une boucle "for" pour construire une partie de la requête sur les champs visés par la sélection. Dans la variable "$requete" on supprime le dernier "AND" sans oublier l'espace avec la fonction "substr" puis on concatène le reste de la requête.

Dans cet exemple et si vous sélectionnez tout, vous obtenez le résultat suivant :
SELECT * FROM table WHERE champ = 1 AND champ = 2 AND champ = 3 ORDER BY id DESC
0