Bonjour,
je souhaite récupérer la valeur d'un select sans formulaire.
Voilà le code de la page details.php :
<?php require 'inc/header.php';?>
<div class="container wrapper">
<div class="row details">
<?php
require'login/admin/bdd.php';
$upload_Dir = 'login/admin/img/produits/';
if (isset($_GET['id'])) {
$id = $_GET['id'];
$reponse = $bdd->prepare("SELECT * FROM products WHERE id = ? ");
$reponse->execute(array($id));
if ($reponse->rowcount()) {
$donnees = $reponse->fetch(PDO::FETCH_ASSOC);
}else{
$error = "Impossible de récupérer les données !";
}
}
?>
<div class="col-lg-6">
<div class="pics">
<img src="<?php echo $upload_Dir.$donnees['image']; ?>" alt="" width="450">
</div>
</div>
<div class="col-lg-6 descriptif">
<div class="descriptif">
<h1><?= $donnees['name']; ?></h1>
<p><?= $donnees['description']; ?></p>
</div>
<div class="famille">
<h3><?= $donnees['category']; ?></span></h3>
</div>
<h3>Taille</h3>
</select>
<select name="selectpicker" class="selectpicker" data-style="btn-primary" title="Choisir une option...">
<optgroup label="Pointure">
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
</optgroup>
<optgroup label="Taille">
<option value="s">S</option>
<option value="m">M</option>
<option value="l">L</option>
<option value="xl">XL</option>
</optgroup>
</select>
<div class="prix">
<h3>Prix :<span> <?= $donnees['prix']; ?> €</span></h3>
</div>
<div class="ajout">
<a class="addPanier add btn btn-lg btn-primary" href="addpanier.php?id=<?php echo $donnees['id']; ?>">Ajouter au panier</a>
</div>
<?php
$reponse->closeCursor(); // Termine le traitement de la requête
?>
</div>
</div>
<?php require 'inc/footer.php';?>
et je souhaite récupérer la valeur du select puis l'afficher dans mon panier :
<?php require 'inc/header.php';?>
<div class="container wrapper">
<div class="row">
<div class="col-sm-12 col-md-12 col-md-offset-1">
<h2>Votre panier</h2>
<form method="post" action="panier.php">
<table class="table table-hover">
<thead>
<tr>
<th>Article(s)</th>
<th>Description(s)</th>
<th>Quantité</th>
<th class="text-center">Taille / Pointure</th>
<th class="text-center">Prix U</th>
<th class="text-center">Total U+TVA</th>
<th><input type="submit" name="recalculer" value="Recalculer" class="btn btn-primary"></th>
</tr>
</thead>
<tbody>
<?php
$upload_Min = 'login/admin/img/produits/' ;
$ids = array_keys($_SESSION['panier']);
if (empty($ids)) {
$products = array();
}else{
$products = $DB->query('SELECT * FROM products WHERE id IN ('.implode(',',$ids).')');
}
foreach ($products as $product):
?>
<tr>
<td class="col-sm-4 col-md-2">
<div class="media">
<a class="thumbnail pull-left" href="#"><img class="media-object" src="<?php echo $upload_Min.$product->image; ?>" style="width: 72px; height: 72px;"> </a>
</div>
</td>
<td>
<div class="media-body">
<h4 class="media-heading"><a href="#"><?php echo $product->name; ?></a></h4>
<h5 class="media-heading"><?php echo $product->description; ?></h5>
</div>
</td>
<td style="text-align: center">
<input type="text" class="form-control" name="panier[quantity][<?php echo $product->id; ?>]" value="<?php echo $_SESSION['panier'][$product->id]; ?>">
</td>
<td class="text-center" style="font-size: 25px"><?php echo $_POST['selectpicker']; ?></td>
<td class="text-center"><strong><?php echo number_format($product->prix,2,',',' '); ?> €</strong></td>
<td class="text-center"><strong><?php echo number_format($product->prix * 1.196,2,',',' '); ?> €</strong></td>
<td>
<a type="button" class="btn btn-danger" href="panier.php?delpanier=<?php echo $product->id; ?>">
<span class="glyphicon glyphicon-remove"></span> Supprimer
</a></td>
</tr>
<?php endforeach; ?>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><h5>Total HT</h5></td>
<td class="text-right"><h5><strong><?php echo number_format($panier->total(),2,',',' '); ?> €</strong></h5></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><h3>Total TTC</h3></td>
<td class="text-right"><h3><strong><?php echo number_format($panier->total() * 1.196,2,',',' '); ?> €</strong></h3></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td>
<a type="button" class="btn btn-default" href="index.php">
<span class="glyphicon glyphicon-shopping-cart"></span> Continuer vos achats
</a></td>
<td>
<a type="button" class="btn btn-success" href="commander.php">
Commander <span class="glyphicon glyphicon-play"></span>
</a></td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
<?php require 'inc/footer.php';?>
je ne sais pas comment faire;
merci
ok mais comme mon lien pour ajouter un produit est :
<a class="addPanier add btn btn-lg btn-primary" href="addpanier.php?id=<?php echo $donnees['id']; ?>">Ajouter au panier</a>
et pas un input de type = submit ça ne fonctionne pas !!
Et pour pouvoir envoyer les infos via mon Form il me faut un submit, comme tu me l'as souligné plus haut !!
Hello,
En passant rapidement sur ton code, j'ai vu une coquille :
</select>
<select name="selectpicker" class="selectpicker" data-style="btn-primary" title="Choisir une option...">
<optgroup label="Pointure">
...
Tu as une fermeture de balise inutile.
Ensuite, pour répondre à ta question : utilise la balise form.
A partir du moment où tu souhaites envoyer une information, pourquoi te passer de cette balise ??
enfaite je suis partis du tuto du panier en php et mysql de grafikart et je souhiate rajouter un select au panier.
on envoie l'article en question via son id dans le panier avec une session.
J'ai modofié mon code en suivant tes directives :
page details.php :
<?php require 'inc/header.php';?>
<div class="container wrapper">
<div class="row details">
<?php
require'login/admin/bdd.php';
$upload_Dir = 'login/admin/img/produits/';
if (isset($_GET['id'])) {
$id = $_GET['id'];
$reponse = $bdd->prepare("SELECT * FROM products WHERE id = ? ");
$reponse->execute(array($id));
if ($reponse->rowcount()) {
$donnees = $reponse->fetch(PDO::FETCH_ASSOC);
}else{
$error = "Impossible de récupérer les données !";
}
}
?>
<div class="col-lg-6">
<div class="pics">
<img src="<?php echo $upload_Dir.$donnees['image']; ?>" alt="" width="450">
</div>
</div>
<div class="col-lg-6 descriptif">
<div class="descriptif">
<h1><?= $donnees['name']; ?></h1>
<p><?= $donnees['description']; ?></p>
</div>
<div class="famille">
<h3><?= $donnees['category']; ?></span></h3>
</div>
<h3>Taille</h3>
<form method="post" action="panier.php">
<select name="list">
<optgroup label="Pointure">
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
</optgroup>
<optgroup label="Taille">
<option value="s">S</option>
<option value="m">M</option>
<option value="l">L</option>
<option value="xl">XL</option>
</optgroup>
</select>
</form>
<div class="prix">
<h3>Prix :<span> <?= $donnees['prix']; ?> €</span></h3>
</div>
<div class="ajout">
<a class="addPanier add btn btn-lg btn-primary" name="valeur" href="addpanier.php?id=<?php echo $donnees['id']; ?>">Ajouter au panier</a>
</div>
<?php
$reponse->closeCursor(); // Termine le traitement de la requête
?>
</div>
</div>
<?php require 'inc/footer.php';?>
et la page panier.php :
<?php
if (isset($_POST['valeur'])) {
$taille = $_POST['list'];
}else{
$message = "Problème de taille !!";
}
?>
<?php require 'inc/header.php';?>
<div class="container wrapper">
<div class="row">
<div class="col-sm-12 col-md-12 col-md-offset-1">
<h2>Votre panier</h2>
<form method="post" action="panier.php">
<table class="table table-hover">
<thead>
<tr>
<th>Article(s)</th>
<th>Description(s)</th>
<th>Quantité</th>
<th class="text-center">Taille/Pointure</th>
<th class="text-center">Prix U</th>
<th class="text-center">Total U+TVA</th>
<th><input type="submit" name="recalculer" value="Recalculer" class="btn btn-primary"></th>
</tr>
</thead>
<tbody>
<?php
$upload_Min = 'login/admin/img/produits/' ;
$ids = array_keys($_SESSION['panier']);
if (empty($ids)) {
$products = array();
}else{
$products = $DB->query('SELECT * FROM products WHERE id IN ('.implode(',',$ids).')');
}
foreach ($products as $product):
?>
<tr>
<td class="col-sm-4 col-md-2">
<div class="media">
<a class="thumbnail pull-left" href="#"><img class="media-object" src="<?php echo $upload_Min.$product->image; ?>" style="width: 72px; height: 72px;"> </a>
</div>
</td>
<td>
<div class="media-body">
<h4 class="media-heading"><a href="#"><?php echo $product->name; ?></a></h4>
<h5 class="media-heading"><?php echo $product->description; ?></h5>
</div>
</td>
<td style="text-align: center">
<input type="text" class="form-control" name="panier[quantity][<?php echo $product->id; ?>]" value="<?php echo $_SESSION['panier'][$product->id]; ?>">
</td>
<td class="text-center" style="font-size: 25px"><?php echo $message; ?><?php echo $taille; ?></td>
<td class="text-center"><strong><?php echo number_format($product->prix,2,',',' '); ?> €</strong></td>
<td class="text-center"><strong><?php echo number_format($product->prix * 1.196,2,',',' '); ?> €</strong></td>
<td>
<a type="button" class="btn btn-danger" href="panier.php?delpanier=<?php echo $product->id; ?>">
<span class="glyphicon glyphicon-remove"></span> Supprimer
</a></td>
</tr>
<?php endforeach; ?>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><h5>Total HT</h5></td>
<td class="text-right"><h5><strong><?php echo number_format($panier->total(),2,',',' '); ?> €</strong></h5></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><h3>Total TTC</h3></td>
<td class="text-right"><h3><strong><?php echo number_format($panier->total() * 1.196,2,',',' '); ?> €</strong></h3></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td>
<a type="button" class="btn btn-default" href="index.php">
<span class="glyphicon glyphicon-shopping-cart"></span> Continuer vos achats
</a></td>
<td>
<a type="button" class="btn btn-success" href="commander.php">
Commander <span class="glyphicon glyphicon-play"></span>
</a></td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
<?php require 'inc/footer.php';?>
Le soucis il ne me récupère pas pas la valeur mais il me donne le $message : Problème de taille !!
Ca fonctionne à moitiè !!
je ne vois pas ce qui ne va pas.
merci
"valeur" c'est le submit pour envoyer les infos de list vers le panier.
Il faut que je renome mon select de valeur ?
Ah ! Oui mais non alors, je n'avais pas vu.
1) un submit doit se trouver dans ta balise form
2) on ne place pas un attribut name="valeur" sur un lien mais sur un <input type"submit" name="valeur">
ou sur un button
EDIT : 3) le fait de recevoir ton bouton submit ne valide absolument pas l'arrivé de list. Test directement la reception de list.
ok je vais modifier et voir si ça fonctionne.
je fais ça de suite.
et je te donne le retour.
j'ai modifier comme ça :
<input type="submit" class="addPanier add btn btn-lg btn-primary" name="valeur" href="addpanier.php?id=<?php echo $donnees['id']; ?>" value="Ajouter au panier">
mais il n'y a plus d'ajout au panier
Et bien regarde la documentation de la balise form et des input de type submit.
On ne met pas de href="addpanier.php?id=<?php echo $donnees['id']; ?>"
sur un input.
Ton paramètre ne sera pas envoyé.
salut Guique,
Bon je reviens vers toi pour mon petit soucis, bon j'ai regardé le input de type hidden, j'ai cherché je comprends le principe mais comprends pas la mise en place dans mon code.
merci
Hello,
Et bien, je vois que tu souhaites envoyer un ID.
Tu souhaites que cette information arrive en même temps que le contenu de ton formulaire, mais sans la faire apparaitre à l'utilisateur.
C'est la qu'intervient l'input de type hidden.
Tu peux comme cela définir un input
dont la value
sera envoyé avec ton formuaire mais qui n'apparaitra pas à l'affichage de la page.
<input type="hidden" name="id" value="<?php echo $donnees['id']; ?>" />
A la recéption de ton formualire, $_POST['id']
contriendra ton ID.
En faite je veux récupérer la valeur de mon select et l'afficher dans le panier quand j'ajoute le produit.
je ne peux pas utiliser un input car j'utilise une page annex pour le traitement qui est addpanier.php
<?php
require '_header.php';
$json = array('error' => true);
if (isset($_GET['id'])) {
$product = $DB->query('SELECT id FROM products WHERE id =:id', array('id' => $_GET['id']));
if(empty($product)){
$json['message'] = "Ce produit n'existe pas";
}
$panier->add($product[0]->id);
$json['error'] = false;
$json['total'] = number_format($panier->total(),2,',',' ');
$json['count'] = $panier->count();
$json['message'] = 'Le produit a bien été ajouté à votre panier';
header('Location: panier.php');
}else{
$json['message'] = "Vous n'avez pas séléctionné de produit à ajouter au panier !";
}
echo json_encode($json);
et voilà !