Goedemiddag,

Ik ben wat aan het stoeien met een script om gegevens uit mijn DB te verwijderen.

De pagina's worden correct weergegeven, de afhandeling vermeld netjes dat het gelukt is,
maar de gegevens blijven in de DB staan. Iemand een idee waar het precies fout zit?

Ik heb voor deze actie 2 bestanden aangemaakt. delete.php en delete_ac.php.

Delete.php:


<?php

$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name="Verlanglijst"; // Table name

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

// select record from mysql
$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
?>

<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td colspan="5" bgcolor="#FFFFFF"><strong>Delete data in mysql</strong> </td>
</tr>

<tr>
<td align="center" bgcolor="#FFFFFF"><strong>Schrijver</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Titel</strong></td>

<td align="center" bgcolor="#FFFFFF">&nbsp;</td>
</tr>

<?php
while($rows=mysql_fetch_array($result)){
?>

<tr>
<td bgcolor="#FFFFFF"><? echo $rows['Schrijver']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['Titel']; ?></td>

<td bgcolor="#FFFFFF"><a href="delete_ac.php?Titel=<? echo $rows['Titel']; ?>">delete</a></td>
</tr>

<?php
// close while loop
}
?>

</table>

<?php
// close connection;
mysql_close();
?>



Delete_ac.php

[quote]
<?php

$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name="Verlanglijst"; // 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");

// get value of id that sent from address bar
$id=$_GET['id'];

// Delete data in mysql from row that has this id
$sql="DELETE FROM $tbl_name WHERE Titel='$Titel'";
$result=mysql_query($sql);

// if successfully deleted
if($result){
echo "Deleted Successfully";
echo "<BR>";
echo "<a href='delete.php'>Back to main page</a>";
}

else {
echo "ERROR";
}
?>

<?php
// close connection
mysql_close();
?>
Waar komt hier $titel vandaan?
<?php
$sql="DELETE FROM $tbl_name WHERE Titel='$Titel'";
?>
Of moet het script dat zelf maar bedenken?
Waar komt $Titel vandaan?

Om te weten of er iets is verwijderd zie mysql_affected_rows().
Erwin H op 05/08/2013 14:11:05

Waar komt hier $titel vandaan?
<?php
$sql="DELETE FROM $tbl_name WHERE Titel='$Titel'";
?>
Of moet het script dat zelf maar bedenken?


Ik heb voor dit onderdeel maar 2 waarden staan in mijn DB. Schrijver en Titel.
Ik had het idee dat deze op basis van Titel verwijderd kan worden.

Hoe zou ik dit dan in moeten vullen?
Laat me even verduidelijken wat men je vertelt:

Er staat niets in de variabele $titel.

Staat er ergens iets als dit?
$titel = $_POST['titel']
of
$titel = $_GET['titel']

Vertel ons eens welk boek moet verwijderd worden. Op basis waarvan moet de computer weten over welk boek je het hebt?


PHP Noob op 05/08/2013 14:38:58

Ik heb voor dit onderdeel maar 2 waarden staan in mijn DB. Schrijver en Titel.
Ik had het idee dat deze op basis van Titel verwijderd kan worden.


Heb je ook een veld id (met auto increment)? Dat is meestal wel een goed idee.
Stel je voor dat twee verschillende schrijvers een boek schrijven met de zelfde titel.
Hoe weet je dan welk boek je wil verwijderen?
Met een id is het veel gemakkelijker.
Bedankt, maakt het inderdaad al wat duidelijker :)

Wanneer je naar de pagina delete.php gaat, krijg je een net overzicht te zien met de volgende opbouw:

Schrijver Titel
Kees ABC Delete

Het idee is dat wanneer je op delete klikt, de regel ervoor geselecteerd wordt.
Door deze opbouw dacht ik geen id nodig te hebben.

Heb jij toevallig suggesties hoe ik dat in deze kan oplossen?
Of toch alles omgooien?

PS: Ik ben overigens niet zo bang om hier dubbelen te hebben. Ik gebruik mijn site vooral om overal te kunnen checken of ik een bepaald boek al heb. Indien dat niet het geval is wil ik deze toevoegen aan mijn DB (dat is inmiddels gelukt). Wanneer ik het boek vervolgens koop, wil ik deze er ook makkelijk uit kunnen halen.
PHP Noob op 05/08/2013 14:57:51

Wanneer je naar de pagina delete.php gaat, krijg je een net overzicht te zien met de volgende opbouw:

Schrijver Titel
Kees ABC Delete


Okay, op delete.php zie je dat overzicht. Die "delete"-knop ziet er dan zo uit:

<a href="delete.php?id=15">Verwijder</a>

Als de gebruiker op die link klikt, komt hij op delete.php terecht, maar dan met met een id in de url (in dit geval dus 15).

Dan kan je op delete.php bv dit doen:

delete.php
<?php
if (isset($_GET['id'])) {
// er is een id gegeven. We gaan het record met die id verwijderen
$sql = "DELETE FROM boeken WHERE id=" . (int) $_GET['id'];
...
}
else {
// geen id gegeven. Hier gaan we de tabel met het overzicht tonen
...
}
?>

Snap je?
Ik heb je advies opgevolgd en id toegevoegd aan mijn DB.
Nu krijg ik het wel voor elkaar :)

Bedankt voor je hulp/ advies!

Topic mag gesloten worden :)

Reageren