Transmettre les données d'une page x vers une page y

Par GlobeVer9, il y a 9 ans


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?

27 réponses

Twentyfour, il y a 9 ans

Tu peux utiliser les sessions ou passer le numéro du produit en paramètre dans l'url: PageProduit.php?produit=$numProd

GlobeVer9, il y a 9 ans

Salut, j'utilise deja les sessions pour autre chose je peut les réutiliser pour ca aussi?

GlobeVer9, il y a 9 ans

Ok je vais essayer dans l'url

GlobeVer9, il y a 9 ans

Pour le passer dans l'url c bien comme ca ?

<a href="PageProduit.php?produit=$numProd">
betaWeb, il y a 9 ans
<a href="PageProduit.php?produit=<?= $numProd ?>">
Twentyfour, il y a 9 ans

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

GlobeVer9, il y a 9 ans

Il ne me récupère pas le numéro mais : $numProd lorsque j'effectue un echo```

echo $_GET['produit'];
Twentyfour, il y a 9 ans

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']

GlobeVer9, il y a 9 ans

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']">
Twentyfour, il y a 9 ans
<a href="PageProduit.php?produit=<?= $data['id']; ?>">

tu n'auras plus de message d'erreur de syntaxe.

GlobeVer9, il y a 9 ans

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']; ?>">
betaWeb, il y a 9 ans

Fais-voir ton code en entier ?

GlobeVer9, il y a 9 ans
?> <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(); ?>
GlobeVer9, il y a 9 ans

Y a ca a la fin

</section><!-- Fin section (cases produits)--> </body> </head> </html>
GlobeVer9, il y a 9 ans

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>
Twentyfour, il y a 9 ans
<?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(); ?>
Twentyfour, il y a 9 ans

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.

GlobeVer9, il y a 9 ans

Impeccable ca marche merci a vous :)

GlobeVer9, il y a 9 ans

Oui c ce que je vais faire mais je devais d'abord reussir a recuperer le numero du produit :) merci

Twentyfour, il y a 9 ans

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>
GlobeVer9, il y a 9 ans

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)
GlobeVer9, il y a 9 ans

A quoi servent les dans la requete?

Twentyfour, il y a 9 ans

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;
Twentyfour, il y a 9 ans

les "*" dans la requête ne servent à rien, c'était pour mettre en gras.

GlobeVer9, il y a 9 ans

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>
GlobeVer9, il y a 9 ans

OK je comprenais pas a quoi ca pouvais servir encore merci