Verwijderen uit DB lukt niet

Status
Niet open voor verdere reacties.

smika

Gebruiker
Lid geworden
29 aug 2006
Berichten
7
Beste,

Ik zou graag een pagina willen maken waarbij je data uit de databse kan verwijderen en bewerken. Nu wil ik mij vooral richten op het verwijderen en zodra dat werkt, wil ik gaan kijken naar het bewerken. Als iemand een antwoord heeft voor beide, is dit natuurlijk altijd goed.

Het lijkt erop dat de ID niet wordt uitgelezen door delete. Wat doe ik fout?

Dit is mijn code:

PHP:
<?php
$host=""; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name=""; // Database name 
$tbl_name="birthday"; // 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");

$sql="SELECT * FROM $tbl_name ORDER BY naam";

$result=mysql_query($sql);

$count=mysql_num_rows($result);

?>
<table width="600" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="form1" method="post" action="">
<table width="600" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td colspan="4" bgcolor="#FFFFFF"><strong>Hier kunt verjaardagen verwijderen of bewerken!</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF"><strong>ID</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Naam</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Datum</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Verwijderen</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Bewerken</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td bgcolor="#FFFFFF"><? echo $rows['ID']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['naam']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['datum']; ?></td>
<td align="center" bgcolor="#FFFFFF"><input type="submit" name="verwijderen" size="70" value="Verwijderen!" /></td>
<td align="center" bgcolor="#FFFFFF"><input type="submit" name="bewerken" size="70" value="Bewerken!" /></td>
</tr>
<?php
}
?>
<?
$verwijderen = "DELETE FROM $tbl_name WHERE ID=".$rows['ID'].";";

if (!mysql_query($sql)) {
	echo "Het bericht is niet verwijderd";
}
else {
	echo "Het bericht met het ID ".$rows['ID']." is verwijderd!";
}

mysql_close();
?>
</table>
</form>
</td>
</tr>
</table>
 
Je delete query komt na de while loop. Op dat moment is $rows gelijk aan FALSE (de voorwaarde om uit de loop te gaan) en dus kun je geen elementen uit de array aanspreken.

Sowieso klopt er niet veel van dit systeem.. als je een rij wil verwijderen moet je die rij door de gebruiker op laten geven. Als je je query in de loop zet gooi je namelijk de hele tabel leeg en anders heb je geen idee welke rij er weg moet.
 
Een hele boel van jouw variabelen ziet hij als tekst en niet als php variabelen.. Dat gaat natuurlijk niet werken!

FOUT:
PHP:
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
 
$sql="SELECT * FROM $tbl_name ORDER BY naam";
$verwijderen = "DELETE FROM $tbl_name WHERE ID=".$rows['ID'].";";

GOED:

PHP:
mysql_connect($host, $username,$password)or die("cannot connect"); 
mysql_select_db($db_name)or die("cannot select DB");
 
$sql="SELECT * FROM ".$tbl_name." ORDER BY naam";
$verwijderen = "DELETE FROM ".$tbl_name." WHERE ID=".$rows['ID'].";";
 
Platte variabelen (teksten, integers, etc) worden ook gezien als variabelen binnen een string met dubbele aanhalingstekens dus de code van de OP werkt wel. Of het netjes is, is een tweede.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan