Regel verwijderen uit MySQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rob Doornbos

Rob Doornbos

07/05/2012 12:10:52
Quote Anchor link
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.

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
<?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>";
?>
Gewijzigd op 08/05/2012 09:06:30 door Rob Doornbos
 
PHP hulp

PHP hulp

23/01/2021 01:29:58
 
Erwin H

Erwin H

07/05/2012 12:12:11
Quote Anchor link
Ververs de pagina nog eens na het deleten. Is je regel dan wel weg?
 
Matthijs Vos

Matthijs Vos

07/05/2012 12:13:26
Quote Anchor link
Ik denk dat het in de 'for' zit. Hier heb je $count staat, maar die defineer je verder nergens
 
Reshad F

Reshad F

07/05/2012 12:15:44
Quote Anchor link
dit is een goede voorbeeld van een prullenbak script.

geen foutafhandeling.

zet dit bovenin.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 'On');
             error_reporting(E_ALL);
?>
 
- Ariën -
Beheerder

- Ariën -

07/05/2012 12:23:18
Quote Anchor link
field71, field72, field73

Slechte veldnamen. Je moet het aantal velden nooit verruimen vanwege aantallen. Dan ben je verkeerd bezig.

Verdiep je eens in normalisatie.
 
Chris PHP

Chris PHP

07/05/2012 12:37:13
Quote Anchor link
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?
 
Christiaan Scheermeijer

Christiaan Scheermeijer

07/05/2012 16:24:56
Quote Anchor link
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:

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
<?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>";
?>


// Edit
session_id in inputs ?
Gewijzigd op 07/05/2012 16:27:43 door Christiaan Scheermeijer
 
Joakim Broden

Joakim Broden

07/05/2012 16:39:05
Quote Anchor link
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
Gewijzigd op 07/05/2012 16:40:48 door Joakim Broden
 
Rob Doornbos

Rob Doornbos

08/05/2012 09:06:04
Quote Anchor link
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
 



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.