2014-09-30 2 views
0

이 코드를 실행하지만 테스트 할 때 .. 데이터가 올바르지 않습니다. 데이터베이스에서 데이터를 선택하고 배열 광고에 표시합니다. 선택 태그로 ID를 표시하지만 임의의 ID를 선택하고 제출할 경우 나는 5를 선택하고 레코드를 제출하면 2가 삭제되지 않을 것이다. 2PHP : 선택 태그

<?php 
require_once "config.php"; 
$qid="select id from info_user"; 
$arrayid=array(); 
$result=mysql_query($qid); 
while($res=mysql_fetch_array($result)){ 
$arrayid[]=$res['id']; 
} 
var_dump($arrayid); 
if(isset($_POST['sub'])){ 
$id=$_POST['id']; 
$q="delete from info_user where id=$id "; 
$qq=mysql_query($q); 
if($qq){ 
    echo "you delete record "; 
} 
else{ 
    echo "error in deleting"; 
}} 
?> 
<html> 
<head> 
<title>delete</title> 
</head> 
<form action="delete.php" method="post"> 
<select name="id"><?php for($i=0;$i<count($arrayid);$i++){?> 
<option value="<?php echo $i;?>"><?php echo $arrayid[$i];} ?></option></select> <br /> 
<input type="submit" name="sub" />  
</form> 
</html> 
+0

배열 출력은 무엇입니까? – Elasek

+0

나는 영어가 당신의 주요 언어가 아니라는 것을 알고 있습니다. 그러나 a.로 문장을 읽기 쉽게 만들어보십시오. 또는 – winkbrace

+0

ok 고마워 winkbrace :) – hamdy

답변

0

나는 그 문제가 옵션에 가치가 있다고 생각한다.

<option value="<?php echo $arrayid[$i];?>"><?php echo $arrayid[$i];} ?></option></select> <br /> 
+0

확인이 문제는 ... 고맙습니다. – hamdy

0

귀하의 <option> 마크 업 옵션 라인을 변경

시도는 잘못된 것입니다. 이 마크 업을 이렇게 만드십시오.

<select name="id"> 
    <?php for ($i = 0; $i < count($arrayid); $i++) { ?> 
    <option value="<?php echo $i; ?>"><?php echo $arrayid[$i]; ?></option> 
    } ?> 
</select> 

팁 : indent your code. IDE의는 일반적으로이 옵션이있는 경우 당신은 디버깅을 쉽게 찾을 수 있습니다. NetBeans이 제일 좋습니다.

0

id를 보내지 않고 id와 연결된 배열 키를 보냅니다.

예를 들어, $arrayid = array(10, 11, 12);이라고 가정합니다.

이것은 $arrayid = array(0 => 10, 1 => 11, 2 => 12);과 동일합니다.

당신은 옵션 10, 11, 12를 볼 수 있습니다,하지만 당신이 옵션 값을 설정하는 무엇 때문에, 전송 중 0, 11, 12 있습니다 : 당신이 선택하면

<select name="id"> 
    <option value="0">10</option> 
    <option value="1">11</option> 
    <option value="2">12</option> 
</select> 

옵션을 "11", 항목을 삭제하는 SQL 문은 다음과 같습니다

delete from info_user where id=1 

이 코드를 테스트하지 않았고 나는 ID를 정수 있으리라 믿고있어,하지만 그것을 시도 :

<?php 
require_once "config.php"; 
$qid  = "select id from info_user"; 
$arrayid = array(); 
$result = mysql_query($qid); 
while($res = mysql_fetch_array($result)){ 
    $arrayid[] = $res['id']; 
} 

if(isset($_POST['sub'])){ 
    $id = (int)$_POST['id']; // make sure it's an integer to avoid SQL injections 
    $q = "delete from info_user where id=$id"; 
    $qq = mysql_query($q); 
    if($qq) { 
     $error = "you delete record "; 
    } else { 
     $error = "error in deleting"; 
    } 
} 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title>delete</title> 
    </head> 
    <body> 
     <?php 
     if(isset($error)) : 
      echo '<p>', htmlspecialchars($error), '</p>'; 
     elseif(!empty($arrayid)) : 
      var_dump($arrayid); 
     endif; 
     ?> 

     <form action="delete.php" method="post"> 
      <select name="id"> 
       <?php foreach($arrayid as $id): ?> 
       <option value="<?php echo (int)$id;?>"> 
        <?php echo (int)$id; ?> 
       <?php endforeach; ?> 
       </option> 
      </select> 
      <br /> 
      <input type="submit" name="sub" />  
     </form> 
    </body> 
</html>