2014-01-25 2 views
0

Я пытаюсь удалить несколько строк с помощью флажков. Но значения не удаляются. Я не понимаю, где я иду Неправильно. Пожалуйста, помогите мне.PHP Удалить несколько строк с помощью флажка

connect.php

<?php 
    $host="localhost"; // Host name 
    $username="DB_USERNAME"; // Mysql username 
    $password="DB_PASSWORD"; // Mysql password 
    $db_name="DB_NAME"; // Database name 
    $tbl_name="TABLE_NAME"; // Table name 

    // Connect to server and select databse. 
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB"); 

    ?> 

exe.php

<?php 
    include "connect.php"; 

    // Check if delete button active, start this 
    if($_POST['delete']) 
    { 
    $id = $_POST['data']; 
    $count = count($id); 

    for($i=0;$i<$count;$i++){ 
    //echo "<br> value = ".$id[$i]."Jumlah = ".$count ; 
    $sql = "DELETE FROM $tbl_name WHERE id='$id[$i]'"; 
    $result = mysql_query($sql); 
    } 

    // if successful redirect to delete_multiple.php 
    if($result){echo "<meta http-equiv=\"refresh\" content=\"0;URL=index.php\">";} 
    } 
    mysql_close(); 
    ?> 

index.php

<?php 
    include "connect.php"; 
    $result=mysql_query("SELECT * FROM $tbl_name ORDER BY ts DESC"); 
    ?> 

    <table width="400" border="0" cellspacing="1" cellpadding="0"> 
    <tr> 
    <td><form name="form1" method="post" action="exe.php"> 
    <table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC"> 
    <tr> 
    <td bgcolor="#FFFFFF"> </td> 
    <td colspan="4" bgcolor="#FFFFFF"><strong>Delete multiple rows in mysql</strong> </td> 
    </tr> 
    <tr> 
    <td align="center" bgcolor="#FFFFFF">#</td> 
    <td align="center" bgcolor="#FFFFFF"><strong>Order Id</strong></td> 
    <td align="center" bgcolor="#FFFFFF"><strong>Username</strong></td> 
    <td align="center" bgcolor="#FFFFFF"><strong>Link</strong></td> 
    <td align="center" bgcolor="#FFFFFF"><strong>Type</strong></td> 
    </tr> 

    <?php 
    while($rows=mysql_fetch_array($result)){ 
    ?> 

    <tr> 
    <td align="center" bgcolor="#FFFFFF"><input name="data[]" type="checkbox" id="data" value="<?php echo $rows['oid']; ?>"> 
    </td> 
    <td bgcolor="#FFFFFF"><?php echo $rows['oid']; ?></td> 
    <td bgcolor="#FFFFFF"><?php echo $rows['user']; ?></td> 
    <td bgcolor="#FFFFFF"><?php echo $rows['data']; ?></td> 
    <td bgcolor="#FFFFFF"><?php echo $rows['type']; ?></td> 
    </tr> 

    <?php 
    }unset($rows); 
    ?> 

    <tr> 
    <td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"> 
    </td> 
    </tr> 
    </table> 
    </form> 
    </td> 
    </tr> 
    </table> 

Кто-то, пожалуйста, помогите мне с этим и скажите мне, где я ошибаюсь. Я все еще изучаю PHP.

+0

Попытайтесь повторить переменную $ id, чтобы увидеть, есть ли у вас какие-либо данные. – Alen

+0

Вообще-то я сейчас пропущу вопрос, который использует 'mysql_ *' как обесцененный. –

ответ

1

Ill отправить 5 PHP файлы (8 с помощью CSS и JS файлов) об этом, так что вы можете использовать коды самостоятельно и комментарий, если у вас есть вопросы:

MULTI EDIT.RAR

Эта ссылка также имеет свой .sql файл, поэтому вам просто нужно импортировать его и начать тестирование.

+0

Спасибо Озан Курт. Ваши файлы помогли мне найти мои ошибки. Большое спасибо. – Exceptional

+0

Нет проблем: P я желаю вам upvote :) –

0

Вместо того, чтобы использовать цикл выполняющиеся несколько запросов SQL, вы можете просто использовать встроенный в SQL WHERE IN положения:

$ids = join(',',$id); //same as using implode() 

$sql = "DELETE FROM $tbl_name WHERE id IN '$ids'"; 

Это будет более эффективным!

Надеюсь, это поможет!

Смежные вопросы