我遇到了一个问题,基本上我只是为了好玩而制作票务系统而且我遇到了一些问题,其中大部分问题都是通过快速谷歌搜索解决的,或者只是搞乱了用它来做一点点。
虽然我无法解决这个问题,基本上当你点击你打开的特定票证时,它会带你到这样的链接: 158.xx.xxx.xxx/site/support?view=ID(35,36,37)。查看页面时,它会显示票证信息,但显示所有三张票证的相同信息。
$stmt3 = $auth_user->runQuery("SELECT * FROM ticket"); $stmt3->execute();
if(isset($_GET['view'])){
if($stmt3->rowCount()){
while($r = $stmt3->fetch(PDO::FETCH_OBJ)) {
$name = $r->name;
$id3 = $r->id;
$subject = $r->subject;
$ticket = $r->ticket_date;
$desc = $r->body;
$ticid = $r->ticket_id;
}
}
if($_GET['view'] == $id3){
echo
'
<div class="ticket">
<div class="ticket-date">
'.$ticket.'
</div>
<div class="ticket-name">
'.$name.'
</div>
<div class="ticket-desc">
'.$desc.'
</div>
</div>
';
$displayticket = $auth_user->runQuery("SELECT * FROM ticket_replies WHERE ticket_id=:ticid");
$displayticket->execute(array(':ticid'=>$user_id));
$ticketsrow = $displayticket->fetchAll();
$count = count($ticketsrow);
foreach($ticketsrow as $row9){
echo
"
<br />
<div class='ticket'>
<div class='ticket-date'>
".$row9['timestamp']."
</div>
<div class='ticket-name'>
".$row9['uid']."
</div>
<div class='ticket-desc'>
".$row9['text']."
</div>
</div>
<br />";
}
echo '
<form method="POST" action="support?view='.$id3.'">
<textarea id="text" name="addsupportbody"></textarea><br/>
<input type="submit" name="addsupportcomment" class="btn btn-dark" style="margin-top: 5px;" value="Add Comment">
<input type="submit" name="closeticket" class="btn btn-danger" value="Close Ticket">
</form>';
if(isset($_POST['addsupportcomment'])){
$ticketid = $id3;
$uidc = $user_id;
$ttext = $_POST['addsupportbody'];
if($ttext == ""){
echo "You must enter a comment to send.";
}else{
try
{
if($auth_user->insertTicketComment($ticketid, $uidc, $ttext)){
echo "Your comment has been added!";
header("url=index");
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
}
}else{
echo "This page does not exist.";
} }
说到你的意思,我不认为这段代码可以安全地宣传或使用,也不认为它是好的或有组织的。我只是想从自己的错误中吸取教训,并希望在途中获得一些帮助。如果有一些丢失的代码,请告诉我,我会包含它。这段代码对我来说是不正常的。
答案 0 :(得分:3)
仅选择要显示的故障单。变化
$stmt3 = $auth_user->runQuery("SELECT * FROM ticket");
要
$id = isset($_GET['view'])? (int)$_GET['view']: -1;
$stmt3 = $auth_user->runQuery("SELECT * FROM ticket WHERE id = $id");
你的代码存在的问题是你选择了所有的门票,然后你正在循环它们:
while($r = $stmt3->fetch(PDO::FETCH_OBJ))
在循环的每次迭代中,您捕获行中的数据。无论用户想要什么票,循环中的变量总是以最后一行的值结束。相反,你应该只像我之前那样获取你感兴趣的票。如果找到匹配,那就是门票!无需循环。