Database rij verwijderen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jordy F

Jordy F

08/04/2008 13:37:00
Quote Anchor link
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
 
PHP hulp

PHP hulp

23/12/2024 04:10:29
 
Jorian

jorian

08/04/2008 13:47:00
Quote Anchor link
Zet dit in de while:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo '<a href="pagina.php?del=' . $arr['id_col']. '">Verwijder</a>';

En zet dit ergens boven aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
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.';
}
 
Jordy F

Jordy F

08/04/2008 14:05:00
Quote Anchor link
Bedankt voor de reactie.
Ik heb het nu zo gedaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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..
Gewijzigd op 01/01/1970 01:00:00 door Jordy F
 
John Cena

John Cena

08/04/2008 14:11:00
Quote Anchor link
Pfo, ik heb daar laatst een heel mooi stukje code voor gezien, ff zoeken,

====
Gefunden!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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.
Gewijzigd op 01/01/1970 01:00:00 door John Cena
 
Jorian

jorian

08/04/2008 14:28:00
Quote Anchor link
Je kan ook gewoon mijn code gebruiken, alleen je moet even in de query van het verwijderen, id in id_col veranderen.
 
Jordy F

Jordy F

08/04/2008 14:29:00
Quote Anchor link
Hmm het werkt nog niet..
Ik heb nu dit stukje gebruikt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$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?
 
Jordy F

Jordy F

08/04/2008 14:35:00
Quote Anchor link
Het is gelukt, heb de manier van jorian gebruikt en het werkt perfect nu!

Bedankt allebei! :)
 
Frank -

Frank -

08/04/2008 14:58:00
Quote Anchor link
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.
 
Jesper Diovo

Jesper Diovo

08/04/2008 15:27:00
Quote Anchor link
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.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
 
Jordy F

Jordy F

08/04/2008 15:57:00
Quote Anchor link
@ 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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.