Beste php-ers,

Ik heb een nieuwsbriefscript die draait via een sql database.
Hierbij heb ik in mijn admin menu een lijstje met het Id nr + email adres van de mensen die ingeschreven staan.
Hierachter wil ik een tekst of knopje, maakt verder niet uit, waarmee ik diegene kan verwijderen uit de database.

Dus zoiets als dit:

ID Nr: 1 E-Mail: [email protected] Verwijderen
ID Nr: 2 E-Mail: [email protected] Verwijderen

het eerste stuk heb ik al, tot op verwijderen.. hij moet dus alle gegevens verwijderen van ID Nr 1 als ik op verwijderen klik.

Dit is mijn code:

$res = mysql_query("SELECT id_col,email FROM newsletter");
while ($arr = mysql_fetch_assoc($res)) {
echo '<strong>', $txt1, 'Nr:</strong>';
echo $arr["id_col"]."E-Mail:";
echo $arr["email"]."<br />";

}
mysql_free_result($res);

Weet iemand hoe ik dit ga oplossen?
Grtt Jordy
Zet dit in de while:
echo '<a href="pagina.php?del=' . $arr['id_col']. '">Verwijder</a>';

En zet dit ergens boven aan:
if (isset($_GET['del']) && is_numeric($_GET['del'])) {
    $iID = $_GET['del'];
    $sQuery = 'DELETE FROM `tabel` WHERE id=' . $iID;
    $iResult = mysql_query($sQuery);
    echo 'Rij verwijderd.';
}
Bedankt voor de reactie.
Ik heb het nu zo gedaan:

mysql_connect("localhost", "***", "***"); 
mysql_select_db("rest"); 


if (isset($_GET['del']) && is_numeric($_GET['del'])) {
    $iID = $_GET['del'];
    $sQuery = 'DELETE FROM `newsletter` WHERE id=' . $iID;
    $iResult = mysql_query($sQuery);
    echo 'Rij verwijderd.';
}

$txt1 = ID ;
$res = mysql_query("SELECT id_col,email FROM newsletter"); 
while ($arr = mysql_fetch_assoc($res)) { 
  echo '<strong>', $txt1, 'Nr:</strong>';
  echo $arr["id_col"]."E-Mail:"; 
  echo $arr["email"].""; 
  echo '<a href="nieuwsbrief_db.php?del=' . $arr['id_col']. '">Verwijder</a><br>';  

} 
mysql_free_result($res); 


alleen hij wil niet helemaal, de code geeft verder geen fouten aan, verwijderen staat netjes achter elk id nr, alleen hij verwijderd de rij niet uit de database..
Pfo, ik heb daar laatst een heel mooi stukje code voor gezien, ff zoeken,

====
Gefunden!

<?php


session_start();
set_time_limit(0);
error_reporting(E_ALL);

echo 'Dit gedeelte gebruiken om te deleten';
$SERVER = "";
$ADMIN_NAME = "";
$ADMIN_PASS = "";
$DATABASE = "";

$Connection = mssql_connect($SERVER, $ADMIN_NAME, $ADMIN_PASS)
or die ("Can't connect to Microsoft SQL Server");

mssql_select_db($DATABASE, $Connection)
or die ("Can't connect to Database");


$sql = 'SELECT klant, ID FROM nieuwsbrief ';
$res = mssql_query($sql);


if ($res && mssql_num_rows($res) >= 1)
{
echo '<br>De volgende klanten staan in de database!<br>';

while ($row = mssql_fetch_array($res))
{

$outp = '<a href="verwijder.php?id='.$row['ID'].'">verwijderen</a> '
. 'naam: '.stripslashes($row['ID']).'<br>';
echo $outp;




}
} else {
echo 'Geen data gevonden';
}
?>

In verwijder.php moet dan dit staan:
<?php
session_start();
set_time_limit(0);
error_reporting(E_ALL);


$SERVER = "";
$ADMIN_NAME = "";
$ADMIN_PASS = "";
$DATABASE = "";

$Connection = mssql_connect($SERVER, $ADMIN_NAME, $ADMIN_PASS)
or die ("Can't connect to Microsoft SQL Server");

mssql_select_db($DATABASE, $Connection)
or die ("Can't connect to Database");
$_ID = $_GET['id'];



mssql_query("DELETE FROM nieuwsbrief WHERE ID = '$_ID'");
echo "Let op, je hebt de betreffende klant gedelete."

?>

Je moet wel zelf ff de goeie namen etc. invoeren.
Je kan ook gewoon mijn code gebruiken, alleen je moet even in de query van het verwijderen, id in id_col veranderen.
Hmm het werkt nog niet..
Ik heb nu dit stukje gebruikt

$res = mysql_query("SELECT id_col,email FROM newsletter"); 
while ($arr = mysql_fetch_assoc($res)) { 
  echo '<a href="verwijder.php?id='.$row['ID'].'">Verwijderen     |  </a>';


en dan de verwijderen in een php bestand zoals hierboven staat geschreven.

Alleen hij doet het nog niet, snap het niet helemaal.. Iemand?
Het is gelukt, heb de manier van jorian gebruikt en het werkt perfect nu!

Bedankt allebei! :)
Jordy schreef op 08.04.2008 14:35
Het is gelukt, heb de manier van jorian gebruikt en het werkt perfect nu!

Bedankt allebei! :)
Ga nog maar eens goed testen, dan zul je zien dat het niet goed werkt. Vul het id 473923947 maar eens in, die zal waarschijnlijk niet bestaan, tóch krijg je de melding dat het record is verwijderd.

1) je controleert nergens of de query technisch is gelukt.
2) je controleert nergens of de query ook iets heeft verwijderd.

Kortom, nog wel wat werk aan de winkel. En wanneer je toch bezig bent, kun je bug-veroorzakende backticks ` ook uit de query gooien, die troep hoort daar niet te staan.
Ik zou niet eens aan de haal gaan met DELETE-queries. Véél te veel risico. Wat nu als een query mislukt op de een of andere manier en ál jouw data verwijderd? Wat dan?... Het is beter om met een status te werken, deze een bepaalde waarde te geven waardoor het voor jou en je script(s) bekend is dat dit 'verwijderde' data is.

Zo kun je altijd nog een blik werpen op de verwijderde data, kun je terughalen als het fout gaat en ga zo maar door.

edit: typo.
@ pgFrank Klopt inderdaad, het is ook gewoon simpel maar werkend, genoeg voor het systeem waarmee ik het gebruik, ik weet niet of ik het ooit zal moeten toepassen, handmatig iemand verwijderen. Er zit namelijk ook een afmeldfunctie bij, voor de gebruikers zelf. Een back-up functie wil ik er ook nog in maken die elke week automatisch een back up maakt.

@ Djemo, een soort Hide functie dus. Zal eens kijken of het me lukt.

Reageren