选择所有数据WHERE x = $ _SESSION value

时间:2015-11-03 16:12:22

标签: php mysql session pdo

因为我已经发布了这个并且有些人将我的问题作为“重复”而没有实际回答它(他们告诉我看起来不相关的页面),我仍然无法得到任何答案。它又是......

我想要一个页面显示与在前一页上随机设置的id_slogan相对应的所有结果。因此,在第一页上,生成来自数据库liste_slogans的随机信息,其ID保存在$_SESSION变量中。在涉及的三个不同页面上的每一个上,我开始会话,我只在最后一个结束时销毁它。简而言之,第一页是访问者通过输入数据与网站交互的地方,第二页处理它然后重定向到最后一页,其中数据列表应该链接到第一页上的信息。这是第一个代码:

<?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']; 
    }                   
?>

在最后一页上,我想显示数据库entrees中与id_slogan匹配的所有条目,这些条目与第一页($_SESSION['id_slogan'])上设置的会话变量相匹配。我已尝试过这个和许多其他事情,但似乎没有任何作用:

<?php
    try
    {
        $bdd=new PDO('mysql:host=localhost;dbname=slogans;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }   

    $nbid = $_SESSION['id_slogan'];
    $reponse=$bdd->query('SELECT pseudo, entree, id_slogan FROM entrees WHERE id_slogan = '.$nbid' ORDER BY ID DESC LIMIT 0, 50');

    while ($donnees=$reponse->fetch())
    {
        echo '<h4 class=resultats><strong>' . htmlspecialchars($donnees['entree']) . ' </strong></h4> <p class=resultats> ' . htmlspecialchars($donnees['pseudo']) . '</p>';
    }
    $reponse->closeCursor();
?>  

有人可以帮我这个吗?我花了几个小时在互联网上搜索,但似乎找不到任何答案......

编辑:我想我应该展示我的所有代码......

有第一页:

    <?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

有处理/重定向页面:

<?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');
?>

还有最后一个:

<?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

1 个答案:

答案 0 :(得分:0)

答案是:

   $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);
    }