2013-05-06 5 views
0

아래 코드에서 목록 상자에 값이 채워지지만 해당 목록 값을 선택하고 검색을 클릭하면 테이블이 표시되지 않습니다. 여기에 양식 작업을 위해 SELF_PHP를 사용했습니다. 또한이 양식의 아이디어는 목록이 있어야하고 페이지가로드되는 동안 ID가 채워지는 것입니다. 목록 값을 선택하고 검색 버튼을 클릭하면 목록 상자에서 선택한 구급차 ID 또는 ID 값만있는 표가 표시됩니다. 도와주세요.목록 상자가있는 PHP 양식이 작동하지 않습니까?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
      <html xmlns="http://www.w3.org/1999/xhtml"> 
      <head> 
      <meta charset="utf-8"> 
       <title>TPS Login Page</title> 
       <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
      </head> 
      <body> 
      <center> 
      <h2>Ambulance Activity Log</h2> 
      <hr> 
      <form name="search" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 

      View activity of ambulance: 
      <Select NAME="field"> 
       <?php 
       include 'con.php'; 
       $query = "SELECT amb_id FROM ambulance;"; 
       $result = mysql_query($query) or die("Unable to retreive amb_id :".mysql_error()); 

       if(mysql_num_rows($result) > 0) 
       { 
        while($row = mysql_fetch_array($result)) 
        { 
        echo"<option id=\"ambid\" value=$row[amb_id]>$row[amb_id]</option>"; 
        } 
       } 
       ?> 
      </Select> 
      <input class="btn btn-info" type="submit" name="search" value="Search" /> 
      <input type="hidden" name="searching" value="yes" /> 

      </form> 

      <?php 
      if(isset($_POST['submit'])) 
      { 
       $id=getElementById('ambid') ; 

       $query = "SELECT * FROM log WHERE amb_id='$id' ORDER BY l_time DESC;"; 
       $result = mysql_query($query) or die(mysql_error()); 
       print " 
       <table border=\"5\" cellpadding=\"5\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#808080\" width=\"800\" text-align=\"center\" id=\"AutoNumber2\" bgcolor=\"#C0C0C0\"> 
       <tr>    
       <td width=\"30\">Amb ID</td> 
       <td width=\"120\">Event Time</td> 
       <td width=\"50\">Description</td> 
       <td width=\"30\">Signal ID</td> 
       <td width=\"30\">Road No</td> 
       <td width=\"30\">Priority</td> 
       </tr>"; 

       while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
       { 
       print "<tr>"; 
       print "<td>" . $row['amb_id'] . "</td>"; 
       print "<td>" . $row['l_time'] . "</td>"; 
       print "<td>" . $row['l_event'] . "</td>"; 
       print "<td>" . $row['t_sigid'] . "</td>"; 
       print "<td>" . $row['l_roadno'] . "</td>"; 
       print "<td>" . $row['e_priority'] . "</td>"; 

       print "</tr>"; 
       } 
       print "</table>"; 
       print "</center>"; 
      } 
      ?> 
      </body> 
      </html> 

도와주세요. 미리 감사드립니다 :)

+1

당신은 당신이 올바른지 확인하기 위해 생성하고있는 HTML을 확인 했습니까? – andrewsi

+2

getElementById()는 PHP 함수가 아니므로 PHP_SELF를 사용할 때 SQL injection과 XSS가 있어야합니다. '$ _GET ['field ']' –

+0

같은 id를 가진 요소가 여러 개 있으면 안됩니다. – Ejaz

답변

0

<select>에게 더 나은 이름을 지정하십시오. 그리고 "$row[amb_id]"을 인용하십시오. value=$row[amb_id]! 잘못된 것입니다. 포스트 후

<select name="ambid" size="10"> 
.... 

       { 
       echo"<option value=\"$row[amb_id]\">$row[amb_id]</option>"; 
       } 
</select> 

당신은 그것으로 얻을 수 있습니다 :

if(isset($_POST['submit'])) 
    { 
    $id=$_POST['ambid']; 
    $query = "... 
+0

제발, 제발, 코드에 SQL 삽입 구멍이 포함되어 있다고 사람들에게 제안하지 마십시오. – Adrian

+0

@Adrian : 하루에 백 번씩 읽는 것을 압니다. 그것은 OP의 선택입니다. 그리고 그것은 아직 생산 개발이 아닌 것 같습니다. –

+0

네,하지만 예제 코드를 제공한다면, 사람들이 무언가를 작성하도록 장려해서는 안됩니다 ... 나쁜 예제는 나쁜 코드와 정보가 없거나 잘못된 정보를 제공합니다. 좋은 예는 그 반대입니다. mysql_ *을 mysqli 나 PDO와 함께 사용하는 모든 "튜토리얼"과 "샘플"을 대체 할 수 있다면, "온라인 어딘가"에서 발견 한 예제를 통해 많은 사람들이 배우기 때문에 사용하는 사람들이 약 90 % 적다. – Adrian

관련 문제