Regel verwijderen uit MySQL
Hopelijk kan iemand mij helpen.
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.
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
dit is een goede voorbeeld van een prullenbak script.
geen foutafhandeling.
zet dit bovenin.
geen foutafhandeling.
zet dit bovenin.
field71, field72, field73
Slechte veldnamen. Je moet het aantal velden nooit verruimen vanwege aantallen. Dan ben je verkeerd bezig.
Verdiep je eens in normalisatie.
Slechte veldnamen. Je moet het aantal velden nooit verruimen vanwege aantallen. Dan ben je verkeerd bezig.
Verdiep je eens in normalisatie.
Rob,
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?
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?
Ik zie meerdere fouten, ik zou met een foreach de checkboxes doorlopen dan krijg je namelijk alleen de aangevinkte.
Daarna verwerk je de value van die checkboxes om regels te verwijderen.
Probeer dit:
// Edit
session_id in inputs ?
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
1) Gebruik juiste mySQL foutafhandeling (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
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
Geweldig het werkt!!
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
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




