2014-09-25 5 views
1

Я пытаюсь удалить продукт из таблицы, но он не работает. Является ли сценарий неправильным? Как я могу это исправить?Почему кнопка удаления mymysqli не работает?

include_once('connection.php'); 
include_once('functions.php');  
if(isset($_POST['delete'])){ 
    mysqli_query($conDB, "DELETE FROM products WHERE name='$_POST[hidden]'"); 
};    
$page = (int)(!isset($_GET["page"]) ? 1 : $_GET["page"]); 
if ($page <= 0) $page = 1;   
    $per_page = 10; // Set how many records do you want to display per page.    
$startpoint = ($page * $per_page) - $per_page;     
$statement = "products ORDER BY id DESC"; 
$results = mysqli_query($conDB, "SELECT * FROM {$statement} LIMIT {$startpoint} , {$per_page}");  
if (mysqli_num_rows($results) != 0) {   
    while ($row = mysqli_fetch_array($results)) { 
    $name = $row['name']; 
?> 
<tr> 
    <td align="left" colspan='2' ><big style="color:red" ><b><?php echo $row['name']?></b></big><td>  
</tr> 
<tr> 
    <td align="left" colspan='2'><big style="color:333333"><b><?php echo $row['category']?></b>/<?php echo $row['subcategory']?></big></td> 
</tr> 
<tr>  
    <td style="vertical-align:top" > 
     <?php echo "<img border=3 width= 300px height =250px src=\"products/" . $row['picture']>?>"<br /> 
</td> 
    <td style="vertical-align:top"> 
      <?php echo nl2br($row['description'])?> 
    </td> 
</tr> 
<tr> 
    <td> <input type="hidden" name="hidden" value="$name" ><input type="submit" name="delete" onClick='return confirmDelete()' value='Delete Product'></td>   

Когда я удалю «удалить продукт», подтверждение покажет, удалю ли я его. но после подтверждения. он не удаляет выбранную строку из таблицы.

Ошибка подтверждения от php после подтверждения. Почему это происходит и как я могу это исправить?

ответ

2

Глядя на скрытое значение, кажется, его не написано правильно в разметке:

<input type="hidden" name="hidden" value="$name" > 
            <!--^literal string, not a variable value --> 

Должно быть:

<input type="hidden" name="hidden" value="<?php echo $name; ?>" /> 

Sidenote: Так как вы уже используете MySQLi, почему бы не использовать подготовленные заявления.

if(isset($_POST['delete'])) { 
    $delete = $_POST['delete']; 
    $del = $conDB->prepare('DELETE FROM products WHERE name = ?'); 
    $del->bind_param('s', $delete); 
    $del->execute(); 
} 

Я предлагаю сделать это так, удалите скрытый вход и использовать вместо этого:

<button type="submit" name="delete" onClick='return confirmDelete()' value="<?php echo $row['id']; ?>">Delete Product</button> 
+0

попробовал, но это не сработало. –

+1

@jhonalynnequin, кстати, это внутри тега '

'? – Ghost

+0

Да, это внутри тег –

0

Просто исправить входной скрытое поле:

<input type="hidden" name="hidden" value="<?php echo $name; ?>" > 
+0

попробовал, но он не работает. –

0

Попробуйте

echo "DELETE FROM products WHERE name='$_POST[hidden]'"; 

, а затем попробуйте выполнить sql или изменить

"DELETE FROM products WHERE name='".$_POST[hidden]."'" 
Смежные вопросы