2016-07-27 3 views
3

문제가 생겼습니다. 기본적으로 티켓 시스템을 재미있게 만들고 있습니다. 몇 가지 문제가 있습니다. 빠른 Google 검색으로 수정하거나 조금만 둘러보세요.MySQL은 한 행만 반환합니다 (가장 최근 행)

기본적으로 특정 티켓을 클릭하면 다음과 같은 링크로 연결됩니다. 158.xx.xxx.xxx/site/support 뷰 = 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 루프에서 변수를 쓸 때 –

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

를 각각의 반복에서을 루프, 당신은 행에있는 데이터를 캡처합니다. 사용자가 원하는 티켓과 상관없이 루프의 변수는 항상 마지막 행의 값으로 끝납니다. 대신 이전에했던 것처럼 관심있는 티켓 만 가져와야합니다. 일치하는 것이 발견되면 티켓입니다! 반복 할 필요가 없습니다.

+0

그것이 효과가있다! 도움을 대단히 감사합니다! –

+0

예 티켓이 발견되면 결과는 단 하나의 레코드 만 가지므로 루프가 필요하지 않습니다. 문제가 해결 된 경우 내 솔루션을 선택하는 것을 잊지 마십시오. – BeetleJuice

관련 문제