Bonsoir,
J'ai suivi le tuto du panier, dans la page panier j'ai un lien commander.php qui me redirige vers un formulaire qui demande à l'utilisateur de rentrer ses coordonnées.
Je souhaiterais afficher les coordonnées de la personne qui a réaliser son panier sur une autre page recuppanier.php, puis de pouvoir lui donner la possibilité d'éditer son panier en PDF.
Que pouvez vous me donner comme solution pour faire ça et quelle est la marche à suivre ?
merci
<?php
$membres = $DB->query('SELECT * FROM membre ORDER BY id DESC LIMIT 1'); // Sélectionne Le dernier ID membre rentré (celui qui à l'ID le plus grand)
$membre = $membres[0];
?>
<div class="coordonnee-left">
<h2>Vos Coordonnées</h2>
<p>Nom : <?php echo $membre->nom; ?></p>
<p>Prénom : <?php echo $membre->prenom; ?></p>
<p>E-mail : <?php echo $membre->email; ?></p>
<p>Téléphone : <?php echo $membre->phone; ?></p>
</div>
il faut utilser la session pour partager des informations entre les pages. pour ca il suffit de rajouter en haut des pages php un session_start et utiliser la variable $_SESSION qui est un gros tableau pour stocker toute les infos que tu veux partager
pour fpdf j'ai regardé et html2pdf il faut installer composer.
c'est un peu l'usine à gaz
je vais regarder tout ça merci
Par contre je souhaiterais savoir comment je peux récupérer sur une requête le dernier id inséré dans ma base de données.
J'ai trouver instruction LastInsertId mais je ne sais pas ou le mettre dans ma requête.
Sans code c'est dur mais tu dois l'appeler sur ton objet PDO.
$pdo = new PDO(...);
/* Ta requete */
$pdo->lastInsertId();
je vais te mettre le code :
<?php
require 'header.php';
?>
<div class="container">
<div class="row">
<div class="col-lg-2"></div>
<div class="col-md-5 ">
<h2>Vos Coordonnées</h2>
<?php
$ids = array_keys($_SESSION['panier']);
if (empty($ids)) {
$membres = array();
}else{
$membres = $DB->query('SELECT * FROM membre WHERE id IN ('.implode(',',$ids).')');
}
foreach ($membres as $membre):
?>
<div class="coordonnee">
<p>Nom : <?php echo $membre->nom; ?></p>
<p>Prénom : <?php echo $membre->prenom; ?></p>
<p>E-mail : <?php echo $membre->email; ?></p>
<p>Téléphone : <?php echo $membre->phone; ?></p>
</div>
</div>
<?php endforeach; ?>
<div class="col-md-5">
<h2>Coordonnées Du Club</h2>
<div class="coordonnee">
<p>Entente des Abers HB</p>
<p>6 Résidence Saint Sébastien-29870 Lannilis</p>
<p>ententedesabers@orange.fr</p>
<p>Téléphone :</p>
</div>
</div>
<div class="col-sm-12 col-md-10 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>Quantité</th>
<th class="text-center">Prix</th>
<th class="text-center">Total</th>
<th><input type="submit" name="recalculer" value="Recalculer" class="btn btn-primary"></th>
</tr>
</thead>
<tbody>
<?php
$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-8 col-md-6">
<div class="media">
<a class="thumbnail pull-left" href="#"> <img class="media-object" src="img/min/<?php echo $product->id; ?>.jpg" style="width: 72px; height: 72px;"> </a>
<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>
</div></td>
<td class="col-sm-1 col-md-1" 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></td>
<td class="col-sm-1 col-md-1 text-center"><strong><?php echo number_format($product->price,2,',',' '); ?> €</strong></td>
<td class="col-sm-1 col-md-1 text-center"><strong><?php echo number_format($product->price * 1.196,2,',',' '); ?> €</strong></td>
<td></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>
</tbody>
</table>
</form>
<a href="order.php" class="btn btn-primary">Version PDF</a>
</div>
</div>
</div>
Je souhaite récupérer la dernière entrée sur le premier SELECT.
merci
Une méthode assez barbare mais qui peut fonctionner.
Tu as un tableau d'objets.
$membres[0] = objet 1 etc....
Pour avoir le dernier, tu peux faire :
$last = $membres[count($membres) - 1];
Le -1 vient du fait que count te retourne le nombre le lignes du tableau.
Or, comme un tableau débute à zero, tu es obligé d'appliquer le -1.
re bonjour,
j'ai fait ça pour pouvoir récupérer mon dernier enregistrement :
<?php
$membres = $DB->query('SELECT MAX(ID) FROM membre');
while($donnees = $membres->fetch(PDO::FETCH_ASSOC))
{
?>
<h2>Vos Coordonnées</h2>
<div class="coordonnee">
<p>Nom : <?php echo $donnees['nom']; ?></p>
<p>Prénom : <?php echo $donnees['prenom']; ?></p>
<p>E-mail : <?php echo $donnees['email']; ?></p>
<p>Téléphone : <?php echo $donnees['phone']; ?></p>
</div>
</div>
<?php } $membres->closeCursor(); ?>
Mais j'ai une erreur :
Uncaught Error: Call to a member function fetch() on array in /Applications/MAMP/htdocs/panier/recupPanier.php:12
Stack trace:
thrown in /Applications/MAMP/htdocs/panier/recupPanier.php on line 12
Help please !!
j'ai mis en dur la connection à la base de données et ça fonctionne le problème est la connection à ma base.
Comment puis je résoudre le problème sachant que la connection se fait par le biais du require 'header.php';
merci
Si tu n'as pas le récupérer le dernier grace à LastInsertID(); , tu peux faire ceci.
$membres = $DB->query('SELECT * FROM membre ORDER BY Id DESC LIMIT 1'); // Sélectionne Le dernier ID membre rentré (celui qui à l'ID le plus grand)
$donnees = $membres->fetch(PDO::FETCH_ASSOC))
?>
<h2>Vos Coordonnées</h2>
<div class="coordonnee">
<p>Nom : <?php echo $donnees['nom']; ?></p>
<p>Prénom : <?php echo $donnees['prenom']; ?></p>
<p>E-mail : <?php echo $donnees['email']; ?></p>
<p>Téléphone : <?php echo $donnees['phone']; ?></p>
</div>
</div>
<?php
$membres->closeCursor();
?>
ça ne fonctionne pas ça me met toujours la même erreur :
Uncaught Error: Call to a member function fetch() on array in /Applications/MAMP/htdocs/panier/recupPanier.php:12
Stack trace:
thrown in /Applications/MAMP/htdocs/panier/recupPanier.php on line 12
donc il n'y pas besoin de faire un fetch. La fonction query (celle de votre classe et non celle de PDO) vous retourne un array.
quand j'avais ce code :
<?php
$ids = array_keys($_SESSION['panier']);
if (empty($ids)) {
$membres = array();
}else{
$membres = $DB->query('SELECT * FROM membre WHERE id IN ('.implode(',',$ids).')');
}
foreach ($membres as $membre):
?>
<div class="coordonnee">
<p>Nom : <?php echo $membre->nom; ?></p>
<p>Prénom : <?php echo $membre->prenom; ?></p>
<p>E-mail : <?php echo $membre->email; ?></p>
<p>Téléphone : <?php echo $membre->phone; ?></p>
</div>
</div>
<?php endforeach; ?>
et que je faisait var_dump($membres); ça me retournais quelque chose mais depuis rien en modifiant le code comme vous m'avez donné
<?php
$membres = $DB->query('SELECT * FROM membre ORDER BY id DESC LIMIT 1'); // Sélectionne Le dernier ID membre rentré (celui qui à l'ID le plus grand)
var_dump($membres);
?>
<div class="coordonnee-left">
<h2>Vos Coordonnées</h2>
<p>Nom : <?php echo $donnees['nom']; ?></p>
<p>Prénom : <?php echo $donnees['prenom']; ?></p>
<p>E-mail : <?php echo $donnees['email']; ?></p>
<p>Téléphone : <?php echo $donnees['phone']; ?></p>
</div>
Je viens d'esseyer la reqête sur une de mes table et j'ai bien le résultat attendu avec le "LIMIT 1"
oui désolé je suis une quiche !!! ça me retourne bien des données :
array(1) { [0]=> object(stdClass)#5 (6) { ["id"]=> string(2) "15" ["nom"]=> string(7) "arthure" ["prenom"]=> string(6) "martin" ["email"]=> string(25) "arthure-martin@hotmail.fr" ["phone"]=> string(10) "0981611181" ["equipe"]=> string(3) "-14" } }
Du coup il suffit de parcourir le tableau.
<?php
foreach ($membres as $membre):
?>
<div class="coordonnee">
<p>Nom : <?php echo $membre->nom; ?></p>
<p>Prénom : <?php echo $membre->prenom; ?></p>
<p>E-mail : <?php echo $membre->email; ?></p>
<p>Téléphone : <?php echo $membre->phone; ?></p>
</div>
<?php endforeach; ?>
On parcour un tableau d'un élément, pour afficher les données
Carouge10 à prit de l'avance :)
Tu peux noter que lui, il utilise le foreach moi je renome la varible à l'index 0.
Car étant donnée que tu attends un seul résultat, le foreach te fait gaspiller une ligne de code par rapport aux accolades.
Mais les deux fonctionne très bien, juste une question de point de vu.