2013-03-13 3 views
0

Я пытаюсь создать таблицу, которая позволит мне удалить строку, нажав кнопку удаления. Я нашел статью здесь по следующей ссылке, которая действительно помогла, но я все еще не могу заставить ее работать: Show all rows in mysql table then give option to delete specific ones. Я написал большую часть кода, но у меня проблема с линией 10 на странице delete.php , Идеи?Удалить строку с кнопкой ввода

main.php

$result = mysqli_query($con,"SELECT * FROM cs_general_info"); 

echo "<table><tr><td>Delete</td><td>First Name</td><td>Last Name</td><td>Address</td>td>Phone</td><td>E-Mail Address</td></tr>"; 

while($row = mysqli_fetch_array($result)) { 

?> 

<tr> 
<td> 
<form action="delete.php" method="POST"> 
<input type="hidden" name="delete_id" value="<?php echo $row['id']; ?>"> 
<input type="Submit" value="Delete"></form> 
</td> 

<?php 

    echo "<td>" . $row['id'] ."</td>"; 
    echo "<td>" . $row['first_name'] . "</td>"; 
    echo "<td>" . $row['last_name'] . "</td>"; 
    echo "<td>" . $row['address'] . "</td>"; 
    echo "<td>" . $row['phone'] . "</td>"; 
    echo "<td>" . $row['email'] . "</td></tr>"; 

} 

echo "</table>"; 

Delete.php

"DELETE FROM cs_general_info WHERE id=".mysql_real_escape_string($delete_id); 
+1

'mysql_real_escape_string()' осуждается. Используйте «PDO» или по крайней мере привяжите свои параметры. –

+0

Нет безопасности вообще? Я вижу несколько способов, как легко разбить этот код ... – jcho360

+1

В чем проблема с линией 10? – jeroen

ответ

0

Надеюсь delete.php больше той единственной линии. В delete.php вы захотите поймать метод POST и $row[id]; связать его, а затем удалить.

0

Чтобы получить идентификатор строки, которую требуется удалить в файле delete.php, вам нужно получить переменную, например:

$delete_id = $_POST['delete']; 

ВНИМАНИЕ: Это очень простой функции, которые вам нужно, чтобы получить это работать. Тем не менее, вам нужно будет внедрить многие другие уровни безопасности, прежде чем это должно когда-либо входить в любой производственный код.

+0

Я довольно новичок в PHP, и все продолжают упоминать о безопасности. У вас есть ссылки, на которые я могу ссылаться, чтобы узнать больше о безопасности PHP? – thebradnet

+0

Google "PHP SQL injection" или что-то подобное. Есть миллионы статей. Чтобы начать работу, вот статья на сайте PHP.net, которая по крайней мере дает вам общий обзор проблем, о которых мы говорим: http://php.net/manual/en/security.database.sql-injection .php – Steve

+0

Хорошая сделка! Большое спасибо. – thebradnet

0

Если это ваш delete.php, то вам не хватает много. Вам необходимо подключение к базе данных, и вам нужно выполнить команду SQL против базы данных. Но это наименьшее из ваших беспокойств, пока вы не получите свои параметры через $_POST.

Here is the PDO Manual for the database connection and SQL execution.

And here is the manual for $_POST.

0

Вы хотите либо поставить ссылку или инлайн форму в каждой из строк вашей таблицы, а затем есть скрипт, который удаляет указанную строку и возвращает пользователя на вашей странице.

<table> 
    <tbody> 
<?php foreach ($results as $result): ?> 
    <tr> 
     <td><?php echo $result->title; ?></td> 
     <td> 
     <form action="delete.php" method="post"> 
      <input type="hidden" name="id" value="<?php echo $result->id; ?>" /> 
      <input type="submit" value="Delete" /> 
     </form> 
     </td> 
    </tr> 
<?php endforeach; ?> 
    </tbody> 
</table> 

А потом delete.php:

<?php 

if (isset($_POST['id']) && intval($_POST['id']) > 0) { 
    // create PDO instance; assign it to $db variable 
    $sql = "DELETE FROM `table` WHERE `id` = :id LIMIT 1"; 
    $smt = $db->prepare($sql); 
    $smt->bindParam(':id', $_POST['id'], PDO::PARAM_INT); 
    $smt->execute(); 
} 

header('Location: index.php'); 
Смежные вопросы