2016-07-27 7 views
3

私は問題があります。基本的にはチケットシステムを楽しいものにしています。私はいくつかの問題に遭遇しています。クイックグーグル検索で修正するか、ちょっとしたことでそれをやってみてください。MySQLは1行だけを返します(最新のもの)

私はこの問題を解決することはできませんが、基本的にあなたが開いている特定のチケットをクリックすると、次のようなリンクが表示されます。 158.xx.xxx.xxx/site/support ?view = ID(35,36,37)。ページを見ると、チケット情報は表示されますが、3つのチケットすべてについて同じ情報が表示されます。

$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

はいループが必要ないのは、チケットが見つかった場合は結果が1レコードしかないため、結果が1つしかないためです。問題を解決するのに役立つなら、私のソリューションを選択することを忘れないでください。 – BeetleJuice

関連する問題