Bonjour,
Je rencontre actuellement un probleme avec mon code, je ne sait pas comment envoyer l'information numProd de ma bdd d'une page x vers une page y.
Voici mon code:
<?php
$bdd = new PDO('mysql:host=localhost;dbname=######','root','');
$requete = $bdd->query('SELECT * FROM produit');
while($data = $requete -> fetch()){
$numProd = $data['numProd'];
echo '<div class="work">
<a href="PageProduit.php">
<img src="###############" class="media" alt=""/>
<div class="caption">
<div class="work_title" value='.$data['nomProd'].'>
<h1>'.$data['nomProd'].'</h1>
</div>
</div>
</a>
</div>';
}
$requete->closeCursor();
?>
Est-ce-que quelqu'un a une solution?
<?php
$bdd = new PDO('mysql:host=localhost;dbname=######','root','');
// Récupère tous les produits de la base de données
$requete = $bdd->query('SELECT * FROM produit');
// Parcours le jeu d'enregistrements
while($data = $requete -> fetch()){
// Récupère (je ne sais pas quoi), sans doute le numéro du produit. On pourrait se passer de cette ligne.
$numProd = $data['numProd'];
?>
<div class="work">
<a href="PageProduit.php?produit=<?= $data['id']; ?>">
<img src="###############" class="media" alt=""/>
<div class="caption">
<div class="work_title" value="<?= $data['nomProd']; ?>">
<h1><?= $data['nomProd']; ?></h1>
</div>
</div>
</a>
</div>
<?php
}
$requete->closeCursor();
?>
Salut,
Utilise les sessions PHP : https://www.grafikart.fr/formations/php-debutant/sessions-cookies
Tu peux utiliser les sessions ou passer le numéro du produit en paramètre dans l'url: PageProduit.php?produit=$numProd
Salut, j'utilise deja les sessions pour autre chose je peut les réutiliser pour ca aussi?
Pour le passer dans l'url c bien comme ca ?
<a href="PageProduit.php?produit=$numProd">
oui c'est bien ça. Et lorsque tu cliqueras sur le lien, tu obtiendras le numéro du produit que tu peux récupérer avec $_GET['produit']. Je te conseille la syntaxe $_GET['produit'] = $_GET['produit'] ?? 0 si t'es en PHP 7
Il ne me récupère pas le numéro mais : $numProd lorsque j'effectue un echo```
echo $_GET['produit'];
c'est parce que j'ai pensé que numProd était le numéro du produit. Remplace le par le numéro du produit, imaginons que c'est la colonne "id" remplace $numProd par $data['id']
Ca me met un message d'erreur : ( ! ) Parse error: syntax error, unexpected 'numProd' (T_STRING), expecting ',' or ';' in C:\wamp...line 25.
<a href="PageProduit.php?produit=$data['numProd']">
<a href="PageProduit.php?produit=<?= $data['id']; ?>">
tu n'auras plus de message d'erreur de syntaxe.
J'ai un nouveau message d'erreur qui apparait : ( ! ) Parse error: syntax error, unexpected 'numProd' (T_STRING), expecting ',' or ';' in C:\wamp... on line 25
<a href="PageProduit.php?produit=<?= $data['numProd']; ?>">
?>
<html>
<head>
<title>#####</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" />
<link rel="stylesheet" type="text/css" href="CSSPerso/CssProduit.css">
</head>
<?php include("MenuDeroulant.php");?> <!-- Sert a inserer l'entete -->
<body>
<section class="main clearfix"> <!-- Cases Produits -->
<?php
$bdd = new PDO('mysql:host=localhost;dbname=######','root','');
$requete = $bdd->query('SELECT * FROM produit');
while($data = $requete -> fetch()){
$numProd = $data['numProd'];
echo '<div class="work">
<a href="PageProduit.php?produit=<?= $data['numProd']; ?>">
<img src="###############" class="media" alt=""/>
<div class="caption">
<div class="work_title" value='.$data['nomProd'].'>
<h1>'.$data['nomProd'].'</h1>
</div>
</div>
</a>
</div>';
}
$requete->closeCursor();
?>
Y a ca a la fin
</section><!-- Fin section (cases produits)-->
</body>
</head>
</html>
La deuxieme page:
<html>
<head>
<title>######</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" />
<link rel="stylesheet" type="text/css" href="CSSPerso/CssProduit.css">
</head>
<?php include("MenuDeroulant.php");?> <!-- Sert a inserer l'entete -->
<body>
<?php
echo $_GET['produit'];
?>
</body>
</html>
Dans la deuxième page tu voudrais afficher le produit, c'est bien ça ? Alors tu refais une connexion à ta base de données, puis une requête en lui disant cette fois que le numéro du produit doit être égale à $_GET['produit'] puis tu récupères le jeu d'enregistrement (en l'occurence ton produit) et tu affiches les données dans la page.
Oui c ce que je vais faire mais je devais d'abord reussir a recuperer le numero du produit :) merci
T'as deuxième page devrait, je pense, ressembler à peux de chose près à ceci:
<html>
<head>
<title>######</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" />
<link rel="stylesheet" type="text/css" href="CSSPerso/CssProduit.css">
</head>
<?php include("MenuDeroulant.php");?> <!-- Sert a inserer l'entete -->
<body>
<?php
$bdd = new PDO('mysql:host=localhost;dbname=######','root','');
// On s'assure que l'ID du produit est dans l'URL, sinon on définit son ID à 0
$_GET['produit'] = $_GET['produit'] ?? 0; (PHP 7 uniquement)
// Exécute la requête
$requete = $bdd->query('SELECT * FROM produit WHERE id = ' . $_GET['produit']);
// Récupère les données du produit
$data = $requete -> fetch();
// Ci-dessous affiche les données du produit
?>
<h1><?= $data['nom_de_produit']; ?></h1>
<p><?= $data['nom_de_produit']; ?></p>
</body>
</html>
Je vien de copier ton code j'ai un code erreur : ( ! ) Parse error: syntax error, unexpected '?' in C:\wamp\www\Site stage\SiteStage\PageProduit.php on line 14
$_GET['produit'] = $_GET['produit'] ?? 0; (PHP 7 uniquement)
C'est que tu n'utilises pas la version 7 de PHP, tu peux remplacer cette ligne de code par:
// Condition ternaire:
// Si le numéro de produit existe et que sa valeur est définit alors tu renvois le numéro de produit, sinon tu renvois 0.
$_GET['produit'] = !empty($_GET['produit']) ? $_GET['produit'] : 0;
C'est bon ca marche j'ai trouvé l'erreur le code fonctionne:
<?php
$num = $_GET['produit'];
$bdd = new PDO('mysql:host=localhost;dbname=#####','root','');
// Exécute la requête
$_GET['produit'] = !empty($_GET['produit']) ? $_GET['produit'] : 0;
$requete = $bdd->query('SELECT * FROM produit WHERE numProd = ' . $_GET['produit']);
// Récupère les données du produit
$data = $requete -> fetch();
// Ci-dessous affiche les données du produit
?>
<h1><?= $data['nomProd']; ?></h1>
<p><?= $data['descriProd']; ?></p>