【发布时间】:2016-02-03 21:16:36
【问题描述】:
由于我已经发布了这个并且有些人将我的问题作为“重复”丢弃而没有实际回答(他们告诉我查看的页面不相关),我仍然无法得到任何答案,在这里又是……
我想要一个页面显示与在前一页上随机设置的id_slogan 对应的所有结果。因此,在第一页上,生成了来自 DB 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'];
}
?>
在最后一页,我想显示 DB 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
【问题讨论】:
-
首先,你开始会话了吗?
-
您确定您的数据库正在返回某些内容吗?如果你模拟出数据库,看看你会得到什么。
-
我看到了一些潜在的问题。让我们从您的第二个 SQL 查询开始:
'SELECT pseudo, entree FROM entrees WHERE id_slogan = '.$nbid' ORDER BY ID DESC LIMIT 0, 50',这是缺少连接。 -
在你打开
<?php标签error_reporting(E_ALL); ini_set('display_errors', 1);之后添加错误报告到你的文件顶部你有几个语法错误。 -
另外,我是如何了解这个社区的,所以在开始提问时说您只是重新发布一个问题,因为您的第一个问题已关闭,这绝不是一个好主意。