Définir une requête avec une valeur $_SESSION [Résolu]

Messages postés
3
Date d'inscription
mardi 3 novembre 2015
Dernière intervention
3 novembre 2015
- - Dernière réponse : PatriciaBL
Messages postés
3
Date d'inscription
mardi 3 novembre 2015
Dernière intervention
3 novembre 2015
- 3 nov. 2015 à 19:41
Bonjour!

J'aimerais qu'une page sur mon site web montre tous les résultats correspondant à un "id_slogan" qui a été généré aléatoirement sur une première page. Donc sur la première page, une information de la base de données "liste_slogans" apparaît, sélectionnée au hasard. Sur la deuxième, l'info que l'utilisateur a entrée dans le formulaire de la première est traitée, puis l'utilisateur est renvoyé à la page finale, où toutes les entrées liées à la première information apparaissent. Sur toutes les pages, j'ouvre la session ; je la ferme à la fin complètement. Voilà donc tout le code :

La page d'accueil et de formulaire :

    <?php
// Start the session
session_start();
?>

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8/>
<link rel="stylesheet" href="Pubweb1.css"/>
<title>(re)trouver le sens</title>
<!--[if It IE9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html15.js"></script>
<![endif]-->
</head>

<div class="tout">
<body>
<!--[if IE 6]><body class="ie6 old_ie"><!--[endif]-->
<!--[if IE 7]><body class="ie7 old_ie"><!--[endif]-->
<!--[if IE 8]><body class="ie8"><!--[endif]-->
<!--[if IE 9]><body class="ie9"><!--[endif]-->
<!--[if ! IE]><body><!--><!--[endif]-->

<div class="barredef">
<?php include("barredef.php");?>
</div>

<div class="blocpage">
<header>
<?php include("menu1.php");?>
</header>

<!-- Affichage aléatoire d'une donnée de la table et enregistrement des infos ID, slogan et compagnie -->
<section>
<?php
$bdd=new PDO('mysql:host=localhost;dbname=slogans', 'root', 'root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$reponse = $bdd->query('SELECT ID, slogan, compagnie FROM liste_slogans ORDER BY rand() LIMIT 1,1');
header("Content-type: text/html;charset=UTF-8");

while ($donnees = $reponse->fetch())
{
echo '<p class="apparition1" element style="color:aqua">' . ($donnees['slogan']) . ' <element style="color:transparent">' . ($donnees['ID']) . '' . ($donnees['compagnie']) . '</element style></p>';
$_SESSION['id_slogan']=$donnees['ID'];
$_SESSION['compagnie']=$donnees['compagnie'];
$_SESSION['slogan']=$donnees['slogan'];
}
$nbid = $_SESSION['id_slogan'];
?>
<h2 class=apparition1>(À vous de jouer...)</h2>
<!-- Il faut que le slogan qui apparaît ait une entrée au moins -->
</section>

<section>
<br/><h6>Entrez votre question, votre idée, votre doute.<br/>
Remettez en question l'énoncé publicitaire présenté.<br/>
Gardez en tête ce que les mots signifient vraiment pour vous, et exprimez-le si vous le jugez pertinent.<br/>
Pas inspiré(e)? Cliquez sur "Sélection aléatoire" dans le menu ci-haut.</h6>
<form action='redirection.php' method='POST'>
<p><input type="text" name="entree" id="entree" size="75" maxlenght="300" autofocus />
<label for='pseudo'><h6>Votre signature : </h6></label><input type="text" name="pseudo" id="pseudo" size="75" maxlenght="30" /><br/>
<input type='hidden' name="id_slogan" id="id_slogan" size="40" maxlenght="4" value="<?php echo $_SESSION['id_slogan'];?>" />
<input type='hidden' name="compagnie" id="compagnie" size="40" maxlenght="4" value="<?php echo $_SESSION['compagnie'];?>" /><br/><br/>
<input class="envoiemail" name="submit" type="submit" value="Soumettre"></p>
</form>

<?php
// Connexion à la base de données
try
{
$bdd=new PDO('mysql:host=localhost;dbname=slogans;charset=utf8', 'root', 'root');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

$reponse->closeCursor();
?>
</section>
</div>
</body>
</div>

</html


La page de traitement/redirection, que l'utilisateur ne voit pas :

<?php
// Start the session
session_start();
?>
<?php
//Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=slogans;charset=utf8', 'root', 'root');
}
catch(Exception $e)
{
die('Erreur : '. $e->getMessage());
}

// Insertion de l'entrée à l'aide d'une requête préparée
$req=$bdd->prepare('INSERT INTO entrees (pseudo, entree, date_entree, id_slogan) VALUES (?, ?, NOW(), ?)');
$req->execute(array($_POST['pseudo'], $_POST['entree'], $_POST['id_slogan']));

//Redirection du visiteur vers la page des résultats
header('Location: resultats.php');
?>


Et la page de résultats :

<?php
session_start();
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="Pubweb1.css"/>
<title>(re)trouver le sens</title>
<!--[if It IE9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html15.js"></script>
<![endif]-->
</head>

<div class="tout">
<div class="blocpage">
<body>
<!--[if IE 6]><body class="ie6 old_ie"><!--[endif]-->
<!--[if IE 7]><body class="ie7 old_ie"><!--[endif]-->
<!--[if IE 8]><body class="ie8"><!--[endif]-->
<!--[if IE 9]><body class="ie9"><!--[endif]-->
<!--[if ! IE]><body><!--><!--[endif]-->

<header>
<?php include("menu1.php");?>
</header>

<section>
<h1><?php echo $_SESSION['slogan'];
$nbid = $_SESSION['id_slogan']; ?></h1>
</section>

<section>
<p class=boutonsuivant><a href=aleatoire.php>Suivant</a></p>
<p class=compagnie><?php echo $_SESSION['compagnie']; ?></p>
<p class=boutonnav><a href=slogan1.php>Naviguer</a></p>
</section>

<p>Numéro : <?php echo $_SESSION['id_slogan']; ?>.</p>

<section>
<?php
// Connexion à la base de données
try
{
$bdd=new PDO('mysql:host=localhost;dbname=slogans;charset=utf8', 'root', 'root');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

// Récupération des derniers messages
$reponse=$bdd->query('SELECT pseudo, entree, id_slogan FROM entrees WHERE id_slogan = $nbid ORDER BY ID DESC LIMIT 0, 50');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Affichage de chaque message (toutes les données sont protégées par htmlspecialchrs)
while ($donnees=$reponse->fetch())
{
echo '<h4 class=resultats><strong>' . htmlspecialchars($donnees['entree']) . ' </strong></h4> <p class=resultats> ' . htmlspecialchars($donnees['pseudo']) . '</p>';
}
$reponse->closeCursor();
?>

<?php
session_destroy();
?>
</section>

</body>
</div>
</div>
</html


Est-ce que quelqu'un peut m'aider avec la formulation de ma requête sur la dernière page? Je pense que le problème est vraiment là. Je veux que le "id_slogan" des infos sélectionnées dans ma requête, dans la base "entrees", correspondent au "id_slogan" récupéré dans la $_SESSION['id_slogan'] qui est en faite l'ID de ma requête sur la première page, dans la base "listes_slogans".

Je vous serais vraiment reconnaissante de m'aider, ça fait plusieurs mois que je planche là-dessus, et ça doit être prêt pour la remise de mon projet qui est dans moins d'un mois!
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
24569
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2019
362
1
Merci
Bonjour,


Dans ta page résultats .. tu fais appelle à une variable $nbid
... mais tu ne l'initialises nul part !

Il faut récupérer sa valeur dans la variable de session (comme dans ta première page)

// Récupération des derniers messages
$nbid = isset( $_SESSION['id_slogan'] ) ?  $_SESSION['id_slogan'] : NULL;
if($nbid){
$sql = "SELECT pseudo, entree, id_slogan 
           FROM entrees 
           WHERE id_slogan = $nbid 
           ORDER BY ID DESC 
           LIMIT 0, 50";

 $reponse=$bdd->query($sql);
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 115 internautes nous ont dit merci ce mois-ci

PatriciaBL
Messages postés
3
Date d'inscription
mardi 3 novembre 2015
Dernière intervention
3 novembre 2015
-
Ça marche enfin! Merci! Ça faisait déjà quelques forums et personne n'avait réussi à me débloquer, merci mille fois!
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.