hallo allemaal,
op een pagina laad ik een tabel vanuit een database, verschillende rijen. Voor elke rij heb ik een knop geplaatst:

<a href='index.php?delete=". $lijst['id'] . "'>delete</a>

en als ik de volgende query maak, wil het niet lukken...

<?
mysql_query("DELETE FROM vijftig WHERE id = ".$_POST['id']) or die(mysql_error());
?>

wie weet hoe het wel moet? of wat ik fout doe?

bednkt,
tim
Je maakt een link met ?delete=... (GET methode)
Dan moet de variable ook via $_GET opgehaald worden. Ook noem je de variabele 'delete' en niet 'id'.
De goede manier zou dus zijn:

<?
mysql_query("DELETE FROM vijftig WHERE id = ".$_GET['delete']) or die(mysql_error());
?>

En ik vind dat ik nu ook wel een keer wat mag zeggen wat meestal andersom is: Eindelijk iemand die superglobals gebruikt en variabele buiten quotes haalt, top :)
Oh, een extra toevoeging nog. Vergeet niet op de pagina waarop de DELETE query wordt uitgevoerd te controleren of $_GET['delete'] wel ingesteld is en een integer is (met is_int()). Anders kan iemand door
index.php?delete=1 OR id > 1
te openen je hele database leeggooien... Dat kunnen we niet gebruiken natuurlijk :)
hey hallo,

het is gelukt hoor.
Ik heb nu de volgende code voor het wissen:

<?PHP
function DeleteRow () {

include("include/database.php");

$verbinding = mysql_connect ($host, $login, $password);
$opdracht = "DELETE FROM vijftig WHERE id = " . $_GET['delete'] . "";
if (mysql_db_query ($database, $opdracht, $verbinding) ) {
echo ("rij ". $_GET['delete'] ." is verwijderd");
} else {
print ("no");
}
mysql_close ($verbinding);
}


if (!isset($_GET['delete']))
{
echo("klik op delete om iets te wissen");
}
else
{
DeleteRow ();
}
?>

maar, nu wil ik dat de pagina meteen refresht nadat de rij is gewist, hoe krijg ikd at eigenlijk voor elkaar??

Gr,
tim

<?PHP
function DeleteRow () {

include("include/database.php");

$verbinding = mysql_connect ($host, $login, $password);
$opdracht = "DELETE FROM vijftig WHERE id = " . $_GET['delete'] . "";
if (mysql_db_query ($database, $opdracht, $verbinding) ) {
echo ("rij ". $_GET['delete'] ." is verwijderd");
} else {
print ("no");
}
mysql_close ($verbinding);
}


if (!isset($_GET['delete']))
{
echo("klik op delete om iets te wissen");
}
else
{
DeleteRow ();
}
?>


Als ze je helpen, kan je misschien ook luisteren...

Met dit script kan je je hele db wissen, zoals Dutchcamel zei... Nuja, wie niet luisteren wil, moet voelen, in dit geval ondervinden...


Oh, een extra toevoeging nog. Vergeet niet op de pagina waarop de DELETE query wordt uitgevoerd te controleren of $_GET['delete'] wel ingesteld is en een integer is (met is_int()). Anders kan iemand door
index.php?delete=1 OR id > 1
te openen je hele database leeggooien... Dat kunnen we niet gebruiken natuurlijk :)


Je refresh kan je met een header(); doen ...
ja stom, was ik nog vergeten.
ok, thanks

Reageren