2014-04-22 4 views
0

나는 뭔가를 놓치고 있는데 도움이 필요해!php로 mysql 테이블을 편집

아래 코드는 편집 가능한 입력란이있는 표를 생성합니다. 필드를 편집하면 해당 데이터가 편집 페이지로 전달되어 UPDATE 스크립트가 실행됩니다. 그러나 어느 행에서나 Update 버튼을 누르면 while 루프의 모든 레코드가 전송됩니다. 업데이트를 위해 선택한 레코드로 어떻게 제한합니까?

도움 주셔서 감사합니다.

$sitequery = "SELECT * FROM meterdata WHERE address LIKE '%$site%' ORDER BY apart_num + 0"; 

$siteresult = mysqli_query($connection,$sitequery); 
    echo "<form action='editmeter.php' method='get'>"; 
$resultstring = '<table class="table table-hover">'; 
$resultstring .= '<tr>'; 
$resultstring .= '<th>Apartment</th>'; 
$resultstring .= '<th>Address</th>'; 
$resultstring .= '<th>Suburb</th>'; 
$resultstring .= '<th>Meter</th>'; 
$resultstring .= '<th>Meter Loction</th>'; 
$resultstring .= '<th>Type</th>'; 
$resultstring .= '<th>Units</th>'; 
$resultstring .= '<th>Start Read</th>'; 
$resultstring .= '<th>Read Date</th>'; 
$resultstring .= '<th>Waveflow</th>'; 
$resultstring .= '<th>Status</th>'; 
$resultstring .= '<th>Notes</th>'; 
$resultstring .= '</tr>'; 

while($data = mysqli_fetch_assoc($siteresult)){ 

    $resultstring .= "<tr>"; 
    $resultstring .= "<td><input type='text' value='$data[apart_num]' name='apart' name='apart' </td>"; 
    $resultstring .= "<td>$data[address]</td>"; 
    $resultstring .= "<td>$data[suburb]</td>"; 
    $resultstring .= "<td><input type='text' value='$data[meter_serial]' name='serial' ></td>"; 
    $resultstring .= "<td>$data[meter_location]</td>"; 
    $resultstring .= "<td><input type='text' value='$data[meter_type]' name='type'></td>"; 
    $resultstring .= "<td><input type='text' value='$data[meter_units]' name='unit'></td>"; 
    $resultstring .= "<td><input type='text' value='$data[start_read]' name='read'></td>"; 
    $resultstring .= "<td>$data[start_read_date]</td>"; 
    $resultstring .= "<td>$data[node_address]</td>"; 
    $resultstring .= "<td>$data[status]</td>"; 
    $resultstring .= "<td>$data[notes]</td>"; 
    $resultstring .= "<td><input type='submit' value='Update'></td>"; 
    echo"</from>"; 
    $resultstring .= "</tr>"; 

    } 



$resultstring .= '</table>'; 


echo $resultstring; 
+0

올바른 행을 업데이트하고 있습니까? 해당 행이 업데이트하려는 올바른 ID와 일치합니까? – user1978142

+0

실제 업데이트 코드 (업데이트 쿼리 포함)가 필요합니다. –

+0

업데이트가 문제가되지 않습니다. 업데이트를 누를 때마다 meter.php를 편집하도록 선택한 문서를 읽거나, serial, type, unit 및 read를 전송해야합니다. 내가 선택한 것은 쿼리를 마지막으로 선택한 레코드가 아니라 쿼리의 마지막 레코드뿐입니다. 말이 돼? – RyanGest

답변

0

난 당신이 독특한 아이템이 업데이트에 대한 전달되는, 다음 업데이트 쿼리 당신이 WHERE ITEM_ID = $ ITEM_ID을 설정할 수 있습니다 식별 할 수있는 id 값에 숨겨진 필드 중 하나를 추가하는 것이 좋습니다.

0

테이블의 모든 레코드를 업데이트하기 때문에이 문제가 발생합니다. 선택한 행을 업데이트하려면 양식에 숨겨진 필드를 제공하여 수행 할 수있는 고유 한 ID를 전달해야합니다. 테이블에서 "id"라는 고유 한 열을 가져와야합니다.

while($data = mysqli_fetch_assoc($siteresult)){ 

$resultstring .= "<tr>"; 
$resultstring .= "<td><input type="hidden" name="id" value="'.$data['id'].'" /> 
<input type='text' value='$data[apart_num]' name='apart' name='apart' </td>"; 
$resultstring .= "<td>$data[address]</td>"; 
........ 
} 

지금 그에 따라 업데이트 스크립트는 다음과 같이해야합니다 :

$query = "UPDATE your_table SET apart='$apart', address='$address' WHERE id = '$id'"; 

현재 열만큼을 추가하지만, WHERE 절을 사용해야합니다 수 있습니다이 같은해야합니다.