【发布时间】:2015-12-26 03:07:29
【问题描述】:
我正在尝试开发一个简单的评论系统。
对于每个新帖子,都会创建一个新列表项。
列表项的 id 是 AUTO_INCREMENT。弹出窗口应插入以下值:帖子的 ID $id、帖子的作者 $autor 和评论用户名的作者
现在的问题是,如果我将元素 listone 的 id 设置为 $row['id'] 行的 id,则 id 是正确的。但是,当我将 listitem 的 id 设置为输入元素 id 的值时,我添加的 id 或其他内容总是与上次添加的帖子/列表项相同的 id 或时间。
应该插入帖子作者的第二个输入元素工作正常。 如何使 ID 独一无二?
<div data-role="content">
<?php
include("list.php");
?>
<div data-demo-html="true">
<ul data-role="listview" data-inset="true" class="ui-listview ui-listview-inset ui-corner-all ui-shadow">
<?php foreach ($result as $key => $row): ?>
<li id ="listone" name="listone" data-role="list-divider" role="heading" class="ui-li ui-li-divider ui-bar-b ui-li-has-count ui-first-child"><?php echo $row['date']; ?></li>
<li data-corners="false" data-shadow="false" data-iconshadow="true" data-wrapperels="div" data-icon="arrow-r" data-iconpos="right" data-theme="a" >
<div class="ui-btn-inner ui-li"><div class="ui-btn-text"><a class="ui-link-inherit"></a><p class="ui-li-aside ui-li-desc"><strong></strong><?php echo $row['time']; ?></p>
<p class="ui-li-desc"><strong><?php echo $row['title']; ?></strong></p>
<p class="ui-li-desc"><?php echo $row['text']; ?></p>
<p class="ui-li-desc"><strong><?php echo $row['town']; ?></strong></p>
<a href="#popupcomment" data-rel="popup" data-position-to="window" data-transition="pop">comment</a>
<button class="commentbtn" data-rel="button" >comment</button>
<div id="createcomment" class="comment" data-theme="a" >
<form data-ajax="false" name="login-form" class="login-form" action="./comments.php" method="post" style="padding:20px 40px;">
<div class="content">
<div id="showcomments" data-theme="a" >
<?php
include("showcomments.php");
?>
<?php foreach ($comments as $keyComment => $rowComment): ?>
<div>
<p class="ui-li-desc"><strong><?php echo $rowComment['username']; ?></strong></p>
<p class="ui-li-desc"><?php echo $rowComment['comment']; ?></p>
</div>
<?php endforeach; ?>
</div>
<input type="hidden" name="id" id="id" value="<?php echo $row['id']; ?>" type="text" />
<input type="hidden" name="autorpost" id="autorpost" value="<?php echo $row['autor']; ?>" type="text" />
<textarea rows="1" name="text" id="text" class="foo"></textarea>
</div>
<div class="footer">
<input type="submit" name="submit" value="comment" class="button" data-theme="a"/>
</div>
</form>
</div>
</li>
<?php endforeach; ?>
</ul>
</div>
</div>
</div>
</div>
cmets.php:
$hostname='localhost';
$user='root';
$password='';
if(isset($_POST["submit"])){
try {
$dbh = new PDO("mysql:host=localhost;dbname=searchfood", $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
// prepare your query
$query = 'INSERT INTO comments (username, autorpost, comment, id_post, time) VALUES (?, ?, ?, ?, now())';
$stmt = $dbh->prepare($query);
// bind variables
$stmt->execute(array($_COOKIE['username'], $_POST['autorpost'], $_POST['text'], $_POST['id']));
// pull last insert id
$new = $dbh->lastInsertId();
// show success message or redirect, whatever you want
echo "New Record Inserted Successfully";
$message['success'] = 'Neuer Benutzer (' . htmlspecialchars($_POST['username']) . ') wurde angelegt, <a href="login.php">weiter zur Anmeldung</a>.';
header("Location: http://".$_SERVER['HTTP_HOST']."/lendsth/main.php", true, 302);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
【问题讨论】:
-
什么是输入元素id?
-
这个隐藏的输入元素和其他隐藏的元素autor应该给cmets.php所需的值。 :)
-
如何使用微时间的 md5 创建唯一 ID(即
md5(microtime(true));)?
标签: php jquery html mysql foreach