2015-10-13 4 views
-2

так что я имею этот код для гостевой книги:Удаление строки MYSQL с PHP

<table width="400" border="0" align="center" cellpadding="3" cellspacing="0"> 
<tr> 
<td><strong>View Guestbook | <a href="gbook.php">Sign Guestbook</a> </strong></td> 
</tr> 
</table> 
<br> 
<?php 
if(isset($_POST['login'])){ 

    if(empty($_POST['username'])) 
    { 
     $this->HandleError("UserName is empty!"); 
     return false; 
    } 
    if(empty($_POST['password'])) 
    { 
     $this->HandleError("Password is empty!"); 
     return false; 
    } 
    if ($_POST['username'] == "admin" && $_POST['password'] == "pietje"){ 
     echo 'Welkom'; 
     $loggedIn = true; 
     echo '<img width="500" height="375" src="http://vignette4.wikia.nocookie.net/southpark/images/9/9e/Party.gif/revision/latest?cb=20140712092024">'; 

    } else { 
     echo 'Incorrect user or pass'; 
     echo '<img width="500" height="375" src="https://media.giphy.com/media/B1TMcmoBAaSZi/giphy.gif">'; 
    } 
    $username = trim($_POST['username']); 
    $password = trim($_POST['password']); 
} 

    ?> 

<form id='login' method='post' accept-charset='UTF-8'> 
<fieldset > 
<legend>Login</legend> 
<input type='hidden' name='submitted' id='submitted' value='1'/> 

<label for='username' >UserName*:</label> 
<input type='text' name='username' id='username' maxlength="50" /> 

<label for='password' >Password*:</label> 
<input type='password' name='password' id='password' maxlength="50" /> 

<input type='submit' name='login' value='login' /> 

</fieldset> 
</form> 

<?php 

$host="mysql17.000webhost.com"; // Host name 
$username="a1126203_stan"; // Mysql username 
$password=""; // Mysql password 
$db_name="a1126203_gb"; // Database name 
$tbl_name="guestbook"; // Table name 


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

$sql="SELECT * FROM $tbl_name"; 
$result=mysql_query($sql); 

while($rows=mysql_fetch_array($result)){ 

?> 

<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> 
<tr> 
<td><table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> 
<tr> 
<td>ID</td> 
<td>:</td> 
<td><? echo $rows['id']; ?></td> 
</tr> 
<tr> 
<td width="117">Name</td> 
<td width="14">:</td> 
<td width="357"><? echo $rows['name']; ?></td> 
</tr> 
<tr> 
<td>Email</td> 
<td>:</td> 
<td><? echo $rows['email']; ?></td> 
</tr> 
<tr> 
<td valign="top">Comment</td> 
<td valign="top">:</td> 
<td><? echo $rows['comment']; ?></td> 
</tr> 
<tr> 
<td valign="top">Date/Time </td> 
<td valign="top">:</td> 
<td><? echo $rows['datetime']; ?></td> 
</tr> 
</table></td> 
</tr> 
<?php 
$id = $rows['id']; 
echo $id; 
if($loggedIn){ 
echo '<tr> 
<td width="100"> </td> 
<td> 
<input name="delete'.$id.'" type="submit" id="delete" value="Delete"> 
</td> 
</tr>'; 
} 
if(isset($_POST['delete'.$id])) 
     { 

$conn = mysql_connect($host, $username, $password); 

      $sql="DELETE FROM guestbook WHERE id='".$id."'"; 
      mysql_select_db('a1126203_gb'); 
      $retval = mysql_query($sql, $conn); 

      if(! $retval) 
      { 
       die('Could not delete data: ' . mysql_error()); 
      } 

      echo "Deleted data successfully\n"; 

      mysql_close($conn); 
     }     
?> 
</table> 
<?php 
if($loggedIn){ 

} 
} 
mysql_close(); //close database 
?> 

Iknow это некрасиво написано, но это действительно не имеет значения атм, творю кнопку удаления для каждой новой строки, но Я хочу удалить строку, которая имеет тот же идентификатор, что и кнопка удаления. Но для некоторых (вероятно, очевидных) причин это не сработает.

+5

** СТОП ** используя устаревшую 'myql_ *' API. вместо этого используйте 'mysqli_ *' или PDO с подготовленным оператором. Проверьте наличие ошибок после вызова команды sql. – Jens

+0

Я не вижу, как это имеет отношение к моему вопросу –

+1

@StanVanDerBend Несмотря на то, что это не имеет отношения к вашему вопросу, но не рекомендуется использовать амортизированные функции, потому что вы не можете получить какую-либо помощь в будущем, и PDO поможет вы предотвратите инъекции SQL и другие уязвимости –

ответ

1

Кнопка удаления не находится внутри формы, поэтому она не будет отправляться при нажатии.

Поместите поля ввода внутри <form> тега, и они будут работать,

<form method="post" action="http://some/url"> 
    <input name="delete'.$id.'" type="submit" id="delete" value="Delete"> 
    ... 
</form> 
0

попробовать это создать отдельную форму, как

<form method="post" id='form' action="http://some/url"> 
    <input type="hidden" id="deleteId"> 
</form> 

ваш код

<input name="delete'.$id.'" type="submit" id="delete" value="Delete"> 

заменить

<input type="button" onclick=delete(.$id.) value="Delete"> 

и

<script> 
function delete(id){ 
    $('#deleteId').val(id); 
    $('#form').submit(); 
} 
</script> 
Смежные вопросы