2016-07-27 99 views
3

我遇到了一个问题,基本上我只是为了好玩而制作票务系统,而且遇到了一些问题,其中大部分我都能够用快速的谷歌搜索进行修复,或者仅仅通过一点点修改就可以了。MySQL只返回一行(最近一次)

虽然我无法解决这个问题,但基本上当您点击您打开的特定票证时,您会看到如下所示的链接: 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

你在你的while循环中写下你的变量 – 2016-07-27 02:21:32

+0

@Dagon?不要以为我看到你所看到的......因为我找不到那 –

回答

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

在每次迭代循环中,您捕获行中的数据。无论用户想要什么票,循环中的变量总是以最后一行的值为结束。相反,你应该像我早先所做的那样只取回你感兴趣的票。如果找到一场比赛,那就是门票!无需循环。

+0

它工作!非常感谢帮助! –

+0

是的,不需要循环,因为如果找到票据,结果只有1条记录,或者没有记录。记得选择我的解决方案,如果它有助于解决您的问题。 – BeetleJuice