2016-07-27 86 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