2013-06-17 3 views
0

Я вывел результаты таблицы MySQL в таблицу HTML. В последнем столбце я хочу добавить параметр удаления, который вызывает другую форму и удаляет пользователя. Однако я не могу заставить его работать.Добавить кнопку «Удалить» в таблицу результатов PHP

Это мой код страницы результатов:

<?php 

    $contacts = mysql_query(" 
     SELECT * FROM contacts ORDER BY ID ASC") or die(mysql_error()); 

    // If results 
    if(mysql_num_rows($contacts) > 0) 
    ?> 

    <table id="contact-list"> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>Email</th> 
       <th>Telephone</th> 
       <th>Address</th> 
    <th>Delete</th> 
      </tr> 
     </thead> 
     <tbody> 

     <?php while($contact = mysql_fetch_array($contacts)) : ?> 



      <tr> 
       <td class="contact-name"><?php echo $contact['name']; ?></td> 
       <td class="contact-email"><?php echo $contact['email']; ?></td> 
       <td class="contact-telephone"><?php echo $contact['telephone']; ?></td> 
       <td class="contact-address"><?php echo $contact['address']; ?></td> 
       <td class="contact-delete"><form action='delete.php' method="post"> 
<input type="hidden" name="name" value=""> 
<input type="submit" name="submit" value="Delete"> 
</form></td>     
      </tr> 

     <?php endwhile; ?> 

     </tbody> 
    </table> 

и это мой delete.php сценарий

<?php 

//Define the query 
$query = "DELETE FROM contacts WHERE name={$_POST['name']} LIMIT 1"; 

//sends the query to delete the entry 
mysql_query ($query); 

if (mysql_affected_rows() == 1) { 
//if it updated 
?> 

      <strong>Contact Has Been Deleted</strong><br /><br /> 

<?php 
} else { 
//if it failed 
?> 

      <strong>Deletion Failed</strong><br /><br /> 


<?php 
} 
?> 

Довольно уверен, что я просто что-то отсутствует, но я не могу выяснить, что это такое :(

+2

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). – h2ooooooo

ответ

1

Вы должны передать переменную в ссылку удаления. Вы должны передать значение <?php echo $contact['name']; ?> имя в скрытом поле или передать это значение в URL

Заменить

<td class="contact-delete"> 
     <form action='delete.php' method="post"> 
     <input type="hidden" name="name" value=""> 
     <input type="submit" name="submit" value="Delete"> 
     </form> 
</td> 

С

<td class="contact-delete"> 
    <form action='delete.php?name="<?php echo $contact['name']; ?>"' method="post"> 
     <input type="hidden" name="name" value="<?php echo $contact['name']; ?>"> 
     <input type="submit" name="submit" value="Delete"> 
    </form> 
</td> 
+0

Спасибо всем, но этот ответ отлично поработал. Спасибо – user2492868

+0

О, но я взял на борт другие комментарии и изменил 'name' на 'id' :) – user2492868

0

у вас не хватает, чтобы передать имя в этой строке:

<input type="hidden" name="name" value=""> 

Вам нужно что-то (<?php echo $contact['name']; ?>) в атрибуте value.

BTW, не используйте устаревшие функции mysql_*, используйте вместо этого PDO или mysqli_*.

1

USE Javascript

<input name="Submit2" type="button" class="button" onclick="javascript:location.href='delete.php?id=<?php echo $your_id;?>';" value="&laquo; Back" /> 

и delet.php

$id=$_GET['id']; 

и положить $ ID в вашем SQL заявление.

1
<input type="hidden" name="name" value=""> 

Вам не хватает значения, которое будет выбрано этой строкой в ​​файле удаления.

$query = "DELETE FROM contacts WHERE name={$_POST['name']} LIMIT 1"; 

В настоящее время он ничего не получает, поэтому он не будет работать.

Так что добавьте к нему значение, и оно будет работать. Пример:

<input type="hidden" name="name" value="<?php echo $contact['name']; ?>"> 
0

На первых, вы не можете писать код в Таким образом, код не имеет защиты от SQL injection.

1) Попробуйте использовать первичные идентификаторы вместо имени (что произойдет, если 2 человека имеют одинаковое имя?).

Итак, вы можете создать скрытое поле, чтобы узнать, с кем вы работаете.

<input type="hidden" name="contact_id" value="<?php $contact['contact_id']; ?>"> 

2) дезинфицировать переменные, чтобы избежать атаки:

<?php $contact_id = isset($_POST['contact_id'])?intval($_POST['contact_id']):0; 

// proceed with the query 
if($contact_id>0) { $query = "DELETE FROM contacts WHERE contact_id = '$contact_id'"; 

} 

// redirect to the main table with header("location: main.php"); 

?> 
+0

Использовать код форматирования – allen213

-1

Это PHP скрипт удаления процесса вы связываете этот код в кнопку Удалить

<?php 
$link=mysql_connect("localhost","root",""); 

mysql_select_db("photo",$link); 

if(isset($_GET["id"]) 

    $photoid=$_GET['id']; 
$sql="delete from photos where photoid=".$_GET['id']; 
$result=mysql_query($sql,$link); 
header("location:home.php?ok"); 
?> 
+0

Похоже, что код или ссылка отсутствуют. – maxhb

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