Problemen bij het verwijderen van gegevens uit de database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kevin Vr

Kevin Vr

24/07/2013 16:26:11
Quote Anchor link
Hallo

ik ben een klein controlepaneel aan het maken voor een website. Het is controlepaneel om een agenda up-to-date te houden.
Ik heb alle bestanden al klaar, alleen wil het bestand verwijder.php niet werken.

Ik slaag er iet in om bestanden uit een tabel in de database te verwijderen.

Wanneer ik dit script gebruik, en op delete klik, worden er geen gegevens gewist. Nochtans zie ik alle gegevens uit de tabel opgelijst en kan ik item via een checkbox aanvinken.

Iemand een idee wat er fout is in dit script?

Alvast bedankt,

Kevin

Code: verwijder.php
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<html>
<body>
<!--==============================header=================================-->
<header></header>
<div class="main">
<div class="main_bg_foto">
    <div class="row-1">
            <a href="index.html"><img src="../images/logo.png" top="20px" width="360" height="260"></img></a>
    </div>
      
 
<!--==============================content================================-->
<div class="container_24">
    <div class="grid_23">
      <div class="wrapper_visible">
    <div class="agenda_bg">
      <div class="wrapper_visible">

<?php
$host
="localhost"; // Host name
$username="xxx"; // Mysql username
$password="xxx"; // Mysql password
$db_name="test"; // Database name
$tbl_name="agenda"; // 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";
$result=mysql_query($sql);

$count=mysql_num_rows($result);
?>


<table>
<tr class"titel">
<td><form name="form1" method="post" action="">
<table>
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td colspan="4"><strong>Verwijder item uit de lijst</strong></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Datum</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Uur</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Locatie</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Productie</strong></td>
</tr>

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


<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['bericht_id']; ?>"></td>
<td bgcolor="#FFFFFF"><? echo $rows['bericht_id']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['weekdag']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['uur']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['locatie']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['productie']; ?></td>
</tr>

<?php
}
?>


<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>

<?php

// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}

// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=verwijder.php\">";
}
}

mysql_close();
?>


</table>
</form>
</td>
</tr>
</table>

                </div>
                </div>
                </div>
                  </div>
                </div>
              </div>
            <div class="clear"></div>
        </div>
      </div>
    </div>
    </div>
                </div>
                </div>
                </div>
                </div>
                </div>
<footer>
</footer>
</body>
</html>


Edit:
Code-tags geplaatst.
Gewijzigd op 24/07/2013 21:32:54 door - Ariën -
 
PHP hulp

PHP hulp

20/04/2024 08:24:53
 
Kris Peeters

Kris Peeters

24/07/2013 16:38:43
Quote Anchor link
Kan je alle code tussen [code][/code] steken?
 
Kevin Vr

Kevin Vr

24/07/2013 16:41:14
Quote Anchor link
Zeker en vast :-), mijn excuses:

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<html>
</head>
<body>
<!--==============================header=================================-->
<header></header>
<div class="main">
<div class="main_bg_foto">
    <div class="row-1">
            <a href="index.html"><img src="../images/logo.png" top="20px" width="360" height="260"></img></a>
    </div>
      
 
<!--==============================content================================-->
<div class="container_24">
    <div class="grid_23">
      <div class="wrapper_visible">
    <div class="agenda_bg">
      <div class="wrapper_visible">

<?php
$host
="localhost"; // Host name
$username="xxx"; // Mysql username
$password="xxx"; // Mysql password
$db_name="test"; // Database name
$tbl_name="agenda"; // 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";
$result=mysql_query($sql);

$count=mysql_num_rows($result);
?>


<table>
<tr class"titel">
<td><form name="form1" method="post" action="">
<table>
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td colspan="4"><strong>Verwijder item uit de lijst</strong></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Datum</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Uur</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Locatie</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Productie</strong></td>
</tr>

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


<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['bericht_id']; ?>"></td>
<td bgcolor="#FFFFFF"><? echo $rows['bericht_id']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['weekdag']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['uur']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['locatie']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['productie']; ?></td>
</tr>

<?php
}
?>


<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>

<?php

// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}

// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=verwijder.php\">";
}
}

mysql_close();
?>


</table>
</form>
</td>
</tr>
</table>

                </div>
                </div>
                </div>
                  </div>
                </div>
              </div>
            <div class="clear"></div>


<!--==============================footer=================================-->
<footer>
<div class="footer"></div>
</footer>
</body>
</html>
 
Gerhard l

gerhard l

24/07/2013 16:42:05
Quote Anchor link
Wat is $delete?
KIjken of er gepost is: $_SERVER['REQUEST_METHOD'] == 'POST'
Verder zie ik veel variabelen tussen aanhalingstekens.
Zet het even in code blokken dan kunnen we verder kijken
 
Kevin Vr

Kevin Vr

24/07/2013 16:46:09
Quote Anchor link
$delete is de knop om te wissen. Ik heb dit scriptje ook gevonden op het internet en daar werkte het wel. Alleen als ik wat aanpassingen doe om het aan mijn controlepaneel aan te passen, dan werkt dit niet.

Ik ben nog maar net begonnen met php en ik begrijp nog heel veel niet...

dus met:

'KIjken of er gepost is: $_SERVER['REQUEST_METHOD'] == 'POST'
Verder zie ik veel variabelen tussen aanhalingstekens.
Zet het even in code blokken dan kunnen we verder kijken'

weet ik nog niet wat ik moet doen eerlijk gezegd..

Bedankt al voor de reactie
 
Francoi gckx

Francoi gckx

24/07/2013 16:49:12
Quote Anchor link
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $_POST['checkbox'][$i];
$sql = "DELETE FROM $tbl_name WHERE id='".$del_id."'";
$result = mysql_query($sql);

Misschien zo weet niet zeker
 
Gerhard l

gerhard l

24/07/2013 16:52:43
Quote Anchor link
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
<?php
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}

// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=verwijder.php\">";
}
}

mysql_close();
?>


Klopt vrij weinig van.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?
#is er gepost
if($_SERVER['REQUEST_METHOD'] == 'POST'){
       #is er gesubmit?
    if(isset($_POST['delete'])){
        # zijn er checkboxen aangevinkt?
        if(!empty($_POST['checkbox'])){
            mysql_query("DELETE FROM ".$tbl_name." WHERE id IN ".implode(",", mysql_real_escape_string($_POST['checkbox']));
        }
    }
}

?>
Gewijzigd op 24/07/2013 16:53:12 door gerhard l
 
Erwin H

Erwin H

24/07/2013 16:57:48
Quote Anchor link
Verder is het natuurlijk ook grappig dat je zo te zien eerst je pagina opbouwt en dan pas de delete doet. Zo krijg je na het drukken op het delete knop nooit te zien dat iets ook daadwerkelijk verwijdert is.... tot je op refresh drukt dan....
 
Kevin Vr

Kevin Vr

24/07/2013 17:09:48
Quote Anchor link
Ja dat is een goede opmerking die ik zelf nog niet heb gezien. Maar goed, blijft het feit dat het scriptje nog niet werkt. Ik dacht dit makkelijker zou zijn...
 
Dennis WhoCares

Dennis WhoCares

24/07/2013 17:11:42
Quote Anchor link
Zowiezo klopt de count niet, de $count is het aantal resultaten van je select
En je query klopt niet.
Ik zou het als volgt doen
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
If( $_SERVER['REQUEST_METHOD'] == 'POST') {
 $error = array();
 $counter = 0;
 If(empty($_POST['checkbox'])) {
  $error[] = '<li>Er zijn geen berichten geselecteerd</li>';
 } else {
   Foreach($_POST['checkbox'] as $selected) {
    If(!mysql_query('DELETE FROM ' . $tbl_name . ' WHERE bericht_id = ' . $selected)) {
     $error[] = '<li>Kon bericht met id: ' . $selected . ' niet verwijderen</li>
                       <li>' . Mysql_error() . '</li>';
     } else {
      $counter++;
     }
   }
 }
 If(!empty($error)) {
  Echo 'Fout bij verwijderen.. <ul>' . Implode($error) . </ul>';
 }
 If($counter > 0) {
   Echo 'Succesvol ' . $counter . ' berichten verwijderd.';
 }
}


En uiteraard eerst controlleren of $selected wel een getal is)
Gewijzigd op 24/07/2013 17:19:49 door Dennis WhoCares
 
Obelix Idefix

Obelix Idefix

24/07/2013 17:15:54
Quote Anchor link
Bouw foutafhandeling in.
Zet error-reporting aan.
Debuggen: echo je query eens naar het scherm om te kijken of er dat staat wat je verwacht.


@ Francoi gckx: je loopt lang genoeg mee om te weten hoe je code tussen code-tags zou kunnen plaatsen ;-)
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

24/07/2013 18:42:51
Quote Anchor link
Je moet sowieso nooit controleren met empty, maar in dit geval zeker niet maar met isset.
En dan wel met de WHERE IN methode Gerhard de items verwijderen, en beetje aangepast dan wel (want daar klopt ook vrij weinig van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
function cast_to_int($val) {
    return (int) $val;
}

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['chk_delete'])) {
        mysqli_query($link, 'DELETE FROM ' . $tbl_name . ' WHERE bericht_id IN (' .
                implode(',', array_map('cast_to_int',$_POST['chk_delete']))) . ')');
    }
}

?>
Gewijzigd op 24/07/2013 18:47:57 door Ger van Steenderen
 



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.