Versio

Delete multiple rows

Overzicht Reageren

Pagina: 1 2 volgende »

Naam Loos

Naam Loos

02/02/2010 20:18:00
Quote Anchor link
Dmv. checkboxen wil ik meerdere records willen verwijderen. Ik heb op het internet gezocht maar het grote deel is verouderd en werkt niet naar behoren.

Mijn huidige script:
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
if(isset($_POST['sub_delete'])) {
$sql = "
    DELETE FROM
        gebruikers
    WHERE
        username = '".$_POST['username']."'
";

if(!$res = mysql_query($sql))
{
    trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0)
{
    echo 'U heeft geen leerlingen geselecteerd';
}
elseif(mysql_affected_rows() == 1)
{
    echo 'Er is 1 leerling verwijderd uit de database.';
}
else
{
    echo 'Er zijn '.mysql_affected_rows().' leerlingen verwijderd uit de database.';
}

}

Zou ik met de huidige query het voor elkaar kunnen krijgen of moet het geheel anders?
Gewijzigd op 01/01/1970 01:00:00 door Naam Loos
 
PHP hulp

PHP hulp

24/05/2012 09:29:38
Gesponsorde koppelingen:
 
Yearupie Achternaamloos

Yearupie Achternaamloos

02/02/2010 20:23:00
Quote Anchor link
Zet je script volgende keer tussen php tags,
Op regel 19 kun je '.mysql_affected_rows().' vervangen door 1.

Voor derest zal hij denk ik wel werken, heb je hem al getest?
Gewijzigd op 01/01/1970 01:00:00 door Yearupie Achternaamloos
 
Naam Loos

Naam Loos

02/02/2010 20:25:00
Quote Anchor link
Het script werkt ook wel alleen maar op 1 rij per keer terwijl ik meerdere checkboxes aanvink.
 
- Mark -

- Mark -

02/02/2010 20:44:00
Quote Anchor link
Niet getest maar het zou in grote lijnen zo moeten werken.

$users is de array waar al je te verwijderen namen in staan.

De $delete_where komt in plaats van username = '".$_POST['username']."'

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
<?php
    
    #| " $delete_where " variable aanmaken voor het opslaan van de lijst met de te verwijderen gebruikers.
    
        $delete_where = "username = '".$users[0]."'";

    
    #| Aantal gebruikers tellen.
    
        $delete_count($users);
    
    
    #| Alle te verwijderen gebruikers toevoegen.
    
        for($i = 1; $i <= $delete_count; $i++)
        {

        
        #| Gebruiker toevoegen.
        
            $delete_where .= " OR username = '".$users[$i]."'";
            
        }

    
?>

 
Naam Loos

Naam Loos

02/02/2010 20:55:00
Quote Anchor link
Even geprobeerd. Werkt niet

De error's:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Notice: Undefined variable: users in *ergensopmijnpc* on line 82

Notice: Undefined variable: delete_count in *ergensopmijnpc* on line 87

Fatal error: Function name must be a string in *ergensopmijnpc* on line 87


Ik gebruik het script zoals hierboven en dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$delete_where = $_POST['username'];
 
- Mark -

- Mark -

02/02/2010 21:00:00
Quote Anchor link
hoe ziet je code er nu uit? Ik denk dat je het verkeerd toepast.
 
Naam Loos

Naam Loos

02/02/2010 21:06:00
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php

if(isset($_POST['sub_delete'])) {

$delete_where = $_POST['username'];
    
    #| " $delete_where " variable aanmaken voor het opslaan van de lijst met de te verwijderen gebruikers.
    
        $delete_where = "username = '".$users[0]."'";

    
    #| Aantal gebruikers tellen.
    
        $delete_count($users);
    
    
    #| Alle te verwijderen gebruikers toevoegen.
    
        for($i = 1; $i <= $delete_count; $i++)
        {

        
        #| Gebruiker toevoegen.
        
            $delete_where .= " OR username = '".$users[$i]."'";
            
        }

}
[
/code]
 
Mr.Ark

Mr.Ark

02/02/2010 21:08:00
Quote Anchor link
Heren, niet zo moeilijk gaan doen he ^^

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

$Query
=
"
    DELETE FROM
        tabel
    WHERE
        veld
    IN
    (
        "
. implode(', ', array_map('intval', $_POST['checkboxnaam'])) . "
    )
"
;

?>


Natuurlijk ziet je checkbox er dan zo uit.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="checkbox" name="checkboxnaam[]" id="checkboxnaam[]" value="'.$Row['hierhetid'].'" />


Natuurlijk eerst alle id's ophalen uit de database en fetchen
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
 
- Mark -

- Mark -

02/02/2010 21:09:00
Quote Anchor link
Waar heb je het mysql gedeelte gelaten nu? en waar is de $users array met alle gebruikers?

$delete_where = $_POST['username']; waar is dat nu weer goed voor?

@ Mr.Ark Dat ziet er leuk uit morgen zelf eens uit proberen.
Gewijzigd op 01/01/1970 01:00:00 door - Mark -
 
Mr.Ark

Mr.Ark

02/02/2010 21:15:00
Quote Anchor link
@ Mark

Waarom moeilijk gaan doen met een for loopje en de array tellen?

Als je het dan op die manier doet gebruik dan gewoon foreach().
 
- Mark -

- Mark -

02/02/2010 21:23:00
Quote Anchor link
:p Weet ik, Het was maar een snel getypt voorbeeld.

Ik tel meestal de waardes in de array voor het weergeven van " x van x aantal rijen verwijderd. "
 
Naam Loos

Naam Loos

02/02/2010 21:33:00
Quote Anchor link
GRRR.

Warning: array_map() [function.array-map]: Argument #2 should be an array in C:\wamp\www\edu\admin\leerling.php on line 87

Warning: implode() [function.implode]: Invalid arguments passed in C:\wamp\www\edu\admin\leerling.php on line 87
Er zijn 5 leerlingen verwijderd uit de database.

line 87 is in Mr.Ark zijn voorbeeld lijn 11
 
Yearupie Achternaamloos

Yearupie Achternaamloos

02/02/2010 21:37:00
Quote Anchor link
$_POST['checkboxnaam'] is geen array,
Je heb je html formulier niet goed, gebruik je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
name="checkboxnaam[]" id="checkboxnaam[]"
 
Naam Loos

Naam Loos

02/02/2010 21:43:00
Quote Anchor link
Dan maar de hele code:
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
<tr>

<td><input type="checkbox" name="checkboxnaam[]" id="checkboxnaam[]" value="<?php echo $row['username']; ?>" /></td>
<td><img src="icons/user.png"></td>
<td><?php echo $row['username']; ?></td>
<td><?php echo $row['naam']; ?></td>
<td><?php echo $row['tvoegsels']; ?></td>
<td><?php echo $row['anaam']; ?></td>
<td><?php echo $row['klas']; ?></td>
<td><img src="icons/user_delete.png"></td>
<td><a href="lln_edit.php?username=<?php echo $row['username']; ?>"><img src="icons/user_edit.png" border="0"></a></td>
<td><img src="icons/text_list_numbers.png"></td>
<td><img src="icons/lock.png"></td>
</tr>

<?php
    }
}


?>

</table>
<br />
<input type="submit" name="sub_delete" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Verwijderen" class="delete" />
<input type="submit" name="sub_block" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Blokkeren" class="lock" />
<input type="submit" name="sub_toets" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Toets starten" class="toets" />
</form>
<?php

if(isset($_POST['sub_delete'])) {


$query =
"
    DELETE FROM
        gebruikers
    WHERE
        username
    IN
    (
        "
. implode(', ', array_map('intval', $_POST['checkboxname'])) . "
    )
"
;

if(!$res = mysql_query($sql))
{

    trigger_error(mysql_error().'<br />In query: '.$sql);
}

elseif(mysql_affected_rows() == 0)
{

    echo 'U heeft geen leerlingen geselecteerd';
}

elseif(mysql_affected_rows() == 1)
{

    echo 'Er is 1 leerling verwijderd uit de database.';
}

else
{
    echo 'Er zijn '.mysql_affected_rows().' leerlingen verwijderd uit de database.';
}

}
[
/code]
 
Mr.Ark

Mr.Ark

02/02/2010 21:47:00
Quote Anchor link
-> http://phphulp.vindme.nl/demo/multidelete/multidelete.php

Voor de mensen die het ook nog even willen testen, snel even voorbeeldje online gegooid. Let niet op hoe de text beetje slordig wordt weergegeven ^^

Edit:


Je gebruikt de username ->
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="checkbox" name="checkboxnaam[]" id="checkboxnaam[]" value="<?php echo $row['username']; ?>" />


Zet daar het id van de gebruiker neer, je werkt namelijk niet met namen je werkt altijd met id's.
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
 
Naam Loos

Naam Loos

02/02/2010 22:04:00
Quote Anchor link
Ark? kun je even je scriptje in posten / zippen ? ik wil even kijken hoe jij het doet...
 
Mr.Ark

Mr.Ark

02/02/2010 22:28:00
Quote Anchor link
Bramboos schreef op 02.02.2010 22:04:
Ark? kun je even je scriptje in posten / zippen ? ik wil even kijken hoe jij het doet...


Nee dat is niet mogelijk ^^.

Wat wel mogelijk is, is dat ik een voorbeeld voor je gemaakt heb.

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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?PHP

# Errors laten zien
error_reporting(E_ALL);
ini_set('display_errors', 1);

# Connectie met je database maken
require_once '....';

# Error is false
$Error = false;
# Array voor de berichten
$Message = array();

# Kijken of er gepost wordt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    # Kijken of checkbox niet leeg is
    if(empty($_POST['delete']))
    {

        # Geen checkbox aangevinkt
        $Message[] = 'Selecteer A.U.B een checkbox.';
        # Error is true
        $Error = true;
    }

    
    # Kijken of error false is
    if($Error == false)
    {

        # Query uitvoeren
        $aQuery =
        "
            DELETE FROM
                gebruikers
            WHERE
                id
            IN
            (
                "
. implode(', ', array_map('intval', $_POST['delete'])) . "
            )
        "
;
        
        # Resultaat van de query
        $aResult = mysql_query($aQuery);
        
        # Kijken of de query is gelukt
        if(!$aResult)
        {

            # Fout opgetreden in de query
            $Message[] = 'Er is een fout opgetreden, de fout is: '.mysql_error();
        }

        else
        {
            # Gebruiker(s) succesvol verwijderd
            $Message[] = 'Gebruiker(s) succesvol verwijderd';
        }
    }
}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Checkbox Delete</title>
</head>

<body>
<h3>Gebruikers Verwijderen</h3>
<?PHP

# Kijken of er berichten zijn
if(!empty($Message))
{

    # Berichten laten zien
    foreach($Message as $Msg)
    {

        echo $Msg.'<br/>';
    }
}


# Query uitvoeren
$bQuery =
"
    SELECT
        id,
        username
    FROM
        gebruikers
    ORDER BY
        id
    DESC
"
;

# Resultaat van de query
$bResult = mysql_query($bQuery);

# Kijken of de query is gelukt
if(!$bResult)
{

    # Fout opgetreden in de query
    $Message[] = 'Er is een fout opgetreden, de fout is: '.mysql_error();
}

else
{
    # Kijken of er wel gebruikers zijn
    if(mysql_num_rows($bResult) == 0)
    {

        # Geen gebruikers in de database
        $Message[] = 'Er staan nog geen gebruikers in de database.';
    }

    else
    {
        # Begin formulier en tabel
        echo '<form id="form1" name="form1" method="post" action="">';
        echo '<table width="300" border="0">';
        
        # While loop uitvoeren om alle gebruikers te laten zien
        while($Row = mysql_fetch_assoc($bResult))
        {

            echo '<tr>
                    <td><strong>ID</strong></td>
                    <td><strong>Gebruiker</strong></td>
                    <td><strong>Verwijder</strong></td>
                  </tr>
                  <tr>
                    <td>'
.$Row['id'].'</td>
                    <td>'
.$Row['username'].'</td>
                    <td><input type="checkbox" name="delete[]" id="delete[]" value="'
.$Row['id'].'" /></td>
                  </tr>
                 '
;
        }

        
        # Formulier, tabel sluiten en verwijder knop laten zien
        echo '<tr><td colspan="3"><input type="submit" name="button" id="button" value="Verwijder" /></td></tr>';
        echo '</table>';
        echo '</form>';
    }
}


?>

</body>
</html>


Lees de code goed door en zorg dat je er iets van op steekt !

Let op: pas zodanig de code aan naar jouw wens.

Succes verder !

Edit:


Typo ^^
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
 
Naam Loos

Naam Loos

03/02/2010 14:06:00
Quote Anchor link
MOOI, weer wat geleerd en werkend gekregen. Ik vraag me alleen nog af hoe ik het beste de insert query kan doen. Je kunt meerdere rijen tegelijk invoegen maar hoe kun je dat doen met selectbox?
 
Mr.Ark

Mr.Ark

03/02/2010 14:11:00
Quote Anchor link
foreach() & array
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
 
Naam Loos

Naam Loos

03/02/2010 14:24:00
Quote Anchor link
Oke. nou ik krijg de andere knoppen weer niet werkend.

Hoe kan ik dat het beste doen? Ik wil dat je op de submit knop verwijderen drukt dat die dan de delete query doet op alle aangevinkte checkboxes en bij blokkeren weer een andere query op alle rijen...

Ik doe het nu zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<input type="submit" name="sub_delete" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Verwijderen" class="delete" />
<input type="submit" name="sub_block" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Blokkeren" class="lock" />
<input type="submit" name="sub_toets" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Toets starten" class="toets" />

En die roep ik zo aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
if(isset($_POST['sub_delete'])) {
//delete query
}
if(isset($_POST['sub_block'])) {
//update query
}
if(isset($_POST['sub_toets'])) {
//insert query
}
 
Mr.Ark

Mr.Ark

03/02/2010 15:06:00
Quote Anchor link
Je zou het inderdaad op die manier kunnen doen.

Allerbeste manier is op de volgende:

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
<?PHP

# Kijken of er gepost wordt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    # Kijken of er op knop 1 wordt geklikt
    if(isset($_POST['knop1']))
    {

        echo 'Knop 1 aangeklikt';
    }

    
    # Kijken of er op knop 2 wordt geklikt
    if(isset($_POST['knop2']))
    {

        echo 'Knop 2 aangeklikt';
    }
}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Knop Test</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <input type="submit" name="button" value="Knop 1">
  <input type="hidden" name="knop1" id="knop1" />
</form>
<form id="form2" name="form2" method="post" action="">
  <input type="submit" name="button" value="Knop 2">
  <input type="hidden" name="knop2" id="knop2" />
</form>
</body>
</html>


Voorbeeld: hier
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
 

Pagina: 1 2 volgende »



Overzicht Reageren

Get Adobe Flash player