2012-11-23 4 views
0

내 데이터베이스의 모든 항목을 표시하는 html 테이블이 있으므로 각 항목에 대해 하나의 행이 있습니다.버튼을 사용하여 테이블의 특정 행을 업데이트하십시오.

각 행에 버튼이 있습니다.

버튼을 클릭 할 때 누른 버튼에 연결된 행의 값을 편집하고 해당 특정 행과 관련된 모든 값을 가져 오려고합니다.

<html> 
<body> 
<?php 

$user="user"; 
$password="password"; 
$database="database"; 

$username=$_SESSION['username']; 

mysql_connect(localhost,$user,$password); 
@mysql_select_db($database) or die("Unable to select database"); 

$query="SELECT * FROM table"; 
$result=mysql_query($query); 
$num=mysql_numrows($result); 

?> 


<form id="view_admin" method="post"> 


<table id="my_table" class= "sample" > 

<tr> 
<td align="center"><strong><font face="Arial, Helvetica, sans-serif">Id</font></strong></td> 
<td align="center"><strong><font face="Arial, Helvetica, sans-serif">Column1</font></strong></td> 
<td align="center"><strong><font face="Arial, Helvetica, sans-serif">Status</font></td> 
<td align="center"><strong><font face="Arial, Helvetica, sans-serif">Edit Status</font></td> 
</tr> 

<?php 

$i=0; 
while ($i < $num) { 

$f0=mysql_result($result,$i,"id"); 
$f1=mysql_result($result,$i,"column1"); 
$f2=mysql_result($result,$i,"status"); 

?> 

<tr> 
<td align="center"><font face="Arial, Helvetica, sans-serif"><?php echo $f0; ?></font></td> 
<td align="center"><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td> 
<td align="center"><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td> 
<td align="center"><input type="submit" name="approved" value="approve"> <input type="submit" name="refused" value="refuse"> </td> 
</tr> 

<?php 
if (isset($_POST['approved'])) { 
$query_update = "UPDATE main SET status='APPROVED' WHERE id ='$f0'"; 
$result_update=mysql_query($query_update);} 
else if (isset($_POST['refused'])) { 
$query_update = "UPDATE main SET status='REFUSED' WHERE id ='$f0'"; 
$result_update=mysql_query($query_update); 
} 
$i++; 
} 

mysql_close(); 


?> 

</table> 
</form> 
</body> 
</html> 

이제 버튼을 누르면 모든 행이 업데이트됩니다.

어떻게하면 좋을까요?

답변

3

모든 단추 세트 주위에 양식을 넣고 업데이트 할 필드의 ID가 들어있는 숨겨진 필드를 추가 할 수 있습니다.

또한 표를 래핑하는 양식 태그를 제거해야합니다.

이제 하나의 ID와 누른 버튼 만 제출됩니다. 표에서

: 나중에 PHP에서

<form id="view_admin" method="post"> 
    <input type="hidden" name="f0" value="<?php echo $f0; ?>"> 
    <input type="submit" name="approved" value="approve"> 
    <input type="submit" name="refused" value="refuse"> 
</form> 

:

$f0_submitted = (int) $_POST['f0']; 
$query_update = "UPDATE main SET status='APPROVED' WHERE id ='$f0_submitted'"; 
+0

대단히 감사합니다. 그것은 완벽하게 작동합니다! – user1836941

0

각 행에 대해 하나 개의 폼 태그를 사용하고 각 행에 대해 숨겨진 필드 'ID'를 포함 할 수있다. 양식을 제출할 때 MySQL 쿼리에서 'id'를 사용하여 현재 행의 값을 업데이트 할 수 있습니다.

UPDATE table SET ... WHERE id = $_POST['id'] 
0

우선 나는 개체 지향 MySQL 명령을 사용하여 확인해야한다고 생각합니다. 당신은 고통 스태킹 방식으로 이것을하고 있습니다.

ORM DB 레이어를 확인하거나 적어도 mysqli를 사용하십시오. http://www.php.net/manual/en/mysqli.quickstart.statements.php

모든 행을 업데이트하는 이유는 하나의 큰 양식에 동일한 이름의 버튼이 있기 때문입니다. 그래서 그들 중 하나를 클릭하는 것은 그들 모두를 클릭하는 것과 같습니다. 조건문은 매 루프마다 true입니다.

대신 PHP에서이 작업을 계속 수행하려면 행의 ID를 기반으로 제출 이름을 지정합니다. 그런 다음 페이지가 게시되고 다시로드되면 게시 된 값이 현재 행 ID와 같으면 업데이트하십시오. 당신은 단지 하나 개의 큰 형태를 원하는 경우

<form...> 
    <input type='hidden' name='form_submitted' value='true' /> 
<?php 
while(...) 
{ 
    echo "<tr><td><input type='submit' name='update_{$row_id}' value='Update' /></td></tr>"; 
    if(!empty($_POST['form_submitted']) && isset($_POST['update_'.$row_id])) ...do update; 
} 
>? 

은이 경로를 이동하거나 숨겨진 유형과 값이 ID를 행에 해당하는 각 행에 대해 양식을 할 수 있습니다.

+0

이것은 이해가되지 않습니다. 자바 스크립트가 테이블과 상호 작용할 수 없으므로 OP에 확실히 PHP가 필요합니다. 서버 측 기술 없이는 아약스가 없다는 점에 유의하십시오. – jeroen

+0

@ 제로 엔 - 내가 쓴 것을 잘못 읽은 것 같습니다. 귀하의 자바 스크립트는 AJAX를 사용하여 AJAX 스크립트를 호출 할 것이라고 말했습니다. 그것은 PHP가 될 것입니다. 거의 모든 단일 사이트가 이러한 방식으로 작동합니다. 나는 이처럼 백 사이트를 만들었습니다. 나는 아래 투표에 대해 부끄럽다. 내가하는 말을 너는 이해하지 못할 것 같아. 사람들은 AJAX를 사용하여 항상 데이터베이스와 상호 작용합니다. 물론 PHP에서 AJAX에 의해 호출되는 일종의 모델을 만들어야합니다. – Ryan

+0

당신의 텍스트는 그렇지 않다면 제안합니다 :'대신, PHP로 이것을 계속하고 싶다면'.그것과는 별도로 OP가 정상적인 방식으로 작동하도록하는 것은 충분히 도전적이라고 생각합니다. 더 나은 사용자 환경을 위해 아약스를 추가하는 것은 다음 단계이지만이 질문의 범위를 벗어날 것입니다. 어쨌든, 내 downvote 자바 스크립트와 도랑 PHP를 사용하는 제안했다. 댓글에 따라 텍스트를 바꿀 수 있다면 삭제하겠습니다. – jeroen

관련 문제