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:

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?
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
$_POST['checkboxnaam'] is geen array,
Je heb je html formulier niet goed, gebruik je:

name="checkboxnaam[]" id="checkboxnaam[]"
Dan maar de hele code:

<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.';
}

}
-> 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 ->
<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.
Ark? kun je even je scriptje in posten / zippen ? ik wil even kijken hoe jij het doet...
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.


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

[color=red]Let op:[/color] pas zodanig de code aan naar jouw wens.

Succes verder !

[Edit]

Typo ^^
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?
[php]foreach()[/php] & [php]array[/php]
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:


<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]
if(isset($_POST['sub_delete'])) {
//delete query
}
if(isset($_POST['sub_block'])) {
//update query
}
if(isset($_POST['sub_toets'])) {
//insert query
}
Je zou het inderdaad op die manier kunnen doen.

Allerbeste manier is op de volgende:


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


[color=red]Voorbeeld[/color]: hier

Reageren