Regel verwijderen uit MySQL
Ik heb onderstaand tabelletje met op iedere regel een checkbox om een regel te kunnen verwijderen uit de database.
Maar als ik nu op de Delete knop druk doet hij wel de pagina verversen, maar de regel is niet verwijderd.
Ik krijg ook geen verdere foutmeldingen.
Bij voorbaat dank.
Code (php)
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
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
<?php
$tbl_name="table_500"; // Table name
$result = mysql_query("SELECT * FROM $tbl_name")
or die(mysql_error());
echo "<form name='form1' method='post' action=''>";
echo "<table id='cashbook' width='100%' cellpadding='1' border='0'>";
echo "<thead><tr>
<th>Date</th>
<th>Description</th>
<th>Income</th>
<th>Expense</th>
<th> </th>
</tr></thead>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
// Print out the contents of each row into a table
echo "<tr>
<td width='25%'>";
echo $row['field68'];
echo "</td><td width='50%'>";
echo $row['field70'];
echo "</td><td width='10%'>";
echo $row['field69'];
echo "</td><td width='10%'>";
echo $row['field71'];
echo "</td><td width='5%'><input name='checkbox[]' type='checkbox' session_id='checkbox[]' value='";
echo $row['session_id'];
echo "'></td></tr>";
}
echo "</table>";
echo "<hr />";
echo "<input name='delete' type='submit' session_id='delete' value='Delete'>";
// 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 session_id='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=\cashbook.php\">";
}
}
echo "</form>";
?>
$tbl_name="table_500"; // Table name
$result = mysql_query("SELECT * FROM $tbl_name")
or die(mysql_error());
echo "<form name='form1' method='post' action=''>";
echo "<table id='cashbook' width='100%' cellpadding='1' border='0'>";
echo "<thead><tr>
<th>Date</th>
<th>Description</th>
<th>Income</th>
<th>Expense</th>
<th> </th>
</tr></thead>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
// Print out the contents of each row into a table
echo "<tr>
<td width='25%'>";
echo $row['field68'];
echo "</td><td width='50%'>";
echo $row['field70'];
echo "</td><td width='10%'>";
echo $row['field69'];
echo "</td><td width='10%'>";
echo $row['field71'];
echo "</td><td width='5%'><input name='checkbox[]' type='checkbox' session_id='checkbox[]' value='";
echo $row['session_id'];
echo "'></td></tr>";
}
echo "</table>";
echo "<hr />";
echo "<input name='delete' type='submit' session_id='delete' value='Delete'>";
// 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 session_id='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=\cashbook.php\">";
}
}
echo "</form>";
?>
Gewijzigd op 08/05/2012 09:06:30 door Rob Doornbos
Ververs de pagina nog eens na het deleten. Is je regel dan wel weg?
Ik denk dat het in de 'for' zit. Hier heb je $count staat, maar die defineer je verder nergens
geen foutafhandeling.
zet dit bovenin.
Slechte veldnamen. Je moet het aantal velden nooit verruimen vanwege aantallen. Dan ben je verkeerd bezig.
Verdiep je eens in normalisatie.
Ben je nu niet 2 keer zolang bezig met alleen al te zoeken naar welk field nu wat is? Waarom gebruik je geen 'hekrenbare' veldnamen?
Zit het probleem niet in je if statement? het is if($delete) echter zie ik deze variabel nergens terug komen alleen een value='delete' bij de submit input. Waar komt de waarde van $delete vandaan?
Daarna verwerk je de value van die checkboxes om regels te verwijderen.
Probeer dit:
Code (php)
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
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
<?php
$tbl_name = "table_500"; // Table name
$result = mysql_query("SELECT * FROM $tbl_name")
or die(mysql_error());
echo "<form name='form1' method='post' action=''>";
echo "<table id='cashbook' width='100%' cellpadding='1' border='0'>";
echo "<thead><tr>
<th>Date</th>
<th>Description</th>
<th>Income</th>
<th>Expense</th>
<th> </th>
</tr></thead>";
// keeps getting the next row until there are no more to get
while ($row = mysql_fetch_array($result)) {
// Print out the contents of each row into a table
echo "<tr>
<td width='25%'>";
echo $row['field68'];
echo "</td><td width='50%'>";
echo $row['field70'];
echo "</td><td width='10%'>";
echo $row['field69'];
echo "</td><td width='10%'>";
echo $row['field71'];
echo "</td><td width='5%'><input name='checkbox[]' type='checkbox' value='";
echo $row['session_id'];
echo "'></td></tr>";
}
echo "</table>";
echo "<hr />";
echo "<input name='delete' type='submit' value='Delete'>";
// Check if delete button active, start this
if (isset($_POST['delete'])) {
$proceed = false; // Check of er iets gedaan is
foreach ($_POST['checkbox'] as $delete) { // Loop elke checkbox langs en sla zijn value op als $delete
$sql = "DELETE FROM $tbl_name WHERE session_id='$delete'";
if (@mysql_query($sql)) {
$proceed = true; // Er is iets verwijderd, ga door naar cashbook
}
}
if ($proceed) {
echo "<meta http-equiv=\"refresh\" content=\"0;URL=\cashbook.php\">";
}
}
echo "</form>";
?>
$tbl_name = "table_500"; // Table name
$result = mysql_query("SELECT * FROM $tbl_name")
or die(mysql_error());
echo "<form name='form1' method='post' action=''>";
echo "<table id='cashbook' width='100%' cellpadding='1' border='0'>";
echo "<thead><tr>
<th>Date</th>
<th>Description</th>
<th>Income</th>
<th>Expense</th>
<th> </th>
</tr></thead>";
// keeps getting the next row until there are no more to get
while ($row = mysql_fetch_array($result)) {
// Print out the contents of each row into a table
echo "<tr>
<td width='25%'>";
echo $row['field68'];
echo "</td><td width='50%'>";
echo $row['field70'];
echo "</td><td width='10%'>";
echo $row['field69'];
echo "</td><td width='10%'>";
echo $row['field71'];
echo "</td><td width='5%'><input name='checkbox[]' type='checkbox' value='";
echo $row['session_id'];
echo "'></td></tr>";
}
echo "</table>";
echo "<hr />";
echo "<input name='delete' type='submit' value='Delete'>";
// Check if delete button active, start this
if (isset($_POST['delete'])) {
$proceed = false; // Check of er iets gedaan is
foreach ($_POST['checkbox'] as $delete) { // Loop elke checkbox langs en sla zijn value op als $delete
$sql = "DELETE FROM $tbl_name WHERE session_id='$delete'";
if (@mysql_query($sql)) {
$proceed = true; // Er is iets verwijderd, ga door naar cashbook
}
}
if ($proceed) {
echo "<meta http-equiv=\"refresh\" content=\"0;URL=\cashbook.php\">";
}
}
echo "</form>";
?>
// Edit
session_id in inputs ?
Gewijzigd op 07/05/2012 16:27:43 door Christiaan Scheermeijer
Tutorial)
2) Maak gebruik van ' bij HTML (Tutorial)
3) Geen meta in de BODY maar in de HEAD, gebruik hier een header() voor. (Tutorial)
4) Variabelen buiten " (zie punt 2)
5) Ga geen foutmeldingen onderdrukken met @, maar gebruik foutafhandeling (zie punt 1)
Succes ermee
1) Gebruik juiste mySQL foutafhandeling (2) Maak gebruik van ' bij HTML (Tutorial)
3) Geen meta in de BODY maar in de HEAD, gebruik hier een header() voor. (Tutorial)
4) Variabelen buiten " (zie punt 2)
5) Ga geen foutmeldingen onderdrukken met @, maar gebruik foutafhandeling (zie punt 1)
Succes ermee
Gewijzigd op 07/05/2012 16:40:48 door Joakim Broden
Ja, ik ben alleen maar aan het knippen en plakken geweest, de ballen verstand er van waar ik eigenlijk mee bezig ben :-)
Maar ik zal me er eens in (proberen) te verdiepen in de opgegeven tutorials.
Maar bedankt voor alle tips, met name natuurlijk Christiaan die de hele code heeft voorgekauwd.
Rob