[PHP/MySql] Checkbox om user te deleten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voorbeeld:

Ik heb een aantal gebruikers in een database, maar ik vind dat er een irritant is, en geen recht meer heeft om gebruik te maken van mijn service... wat het dan ook mag zijn. Nu zit die gebruiker nog in een database, en wil ik hem via een eigen gemaakte admin page :*) verwijderen. Nou die admin page is al bijna klaar maar ik stuit nu tegen een probleem.

Ik heb ervoor gezorgd dat hij de gebruikers laat zien die in de database zitten. Voor hun gebruikers naam komt een checkbox op de pagina, maar hoe zorg ik er nou voor dat als je die checkbox aanvinkt en je klikt op delete, dat hij die gebruikers dan uit de database verwijderd? Tot nu toe heb ik dit

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?

mysql_connect("localhost", "", "");
                mysql_select_db("blaah"); 
        
        $check = ('<input type="checkbox" name="checkbox" value="username">');      
           $sql = "SELECT * FROM Leden";
     
     $resultaat = mysql_query($sql);
     
     $aantal = mysql_num_rows($resultaat);
      echo "Er zijn <b>$aantal</b> leden<br><br>\n";
     
     while ($record = mysql_fetch_object($resultaat)) {
      echo "$check$record->username<br>\n";
    }
?>

[ Voor 10% gewijzigd door Verwijderd op 05-06-2003 13:35 ]


Acties:
  • 0 Henk 'm!

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Ik heb ervoor gezorgd dat hij de gebruikers laat zien die in de database zitten. Voor hun gebruikers naam komt een checkbox op de pagina, maar hoe zorg ik er nou voor dat als je die checkbox aanvinkt en je klikt op delete, dat hij die gebruikers dan uit de database verwijderd?
Door de verschillende checkbox'en dezelfde name te geven en vervolgens DELETE from table WHERE username IN ($username) :)

[ Voor 4% gewijzigd door DeverauX op 05-06-2003 13:40 ]

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Acties:
  • 0 Henk 'm!

Verwijderd

een name als delete[] geven en als value zijn id.
en dan met foreach($_POST["delete"] as $userid) de boel doorlopen
dan een delete from where id=$userid doen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmm.. ik heb die checkboxen dus al dezelfde naam gegeven, maar, nu durf ik het haast niet te vragen, where the... moet die where komen en hoe? Where is toch een Mysql functie?:?

Whoops, ik zal dat van hierboven eens proberen

Nokia was te snel :D

[ Voor 18% gewijzigd door Verwijderd op 05-06-2003 13:45 ]


Acties:
  • 0 Henk 'm!

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Where is toch een Mysql functie?
Dit is gewoon SQL hoor ;)
Misschien dat het volgende je verder helpt: SQL Tutorial :)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik vatte het wel :P en ja, tis maar net hoe je het uitspreekt :D ;)
Ik zal eens wat proberen, als ik er niet uit kom... then i'll be back..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou, kheb wat geprobeerd, en ik krijg nu deze fout melding

Warning: Invalid argument supplied for foreach() in C:\apache\htdocs\telemega\admin\test.php3 on line 6

Dit is blaat.php3

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form method=post action=test.php3>  
<?   
     mysql_connect("localhost", "", "");
                mysql_select_db("blaat"); 
        
        $check = ('<input type="checkbox" name="delete[]" value="id">');        
 $sql = "SELECT * FROM Leden";
     
     $resultaat = mysql_query($sql);
     $aantal = mysql_num_rows($resultaat);
      echo "Er zijn <b>$aantal</b> leden<br><br>\n";
     
     while ($record = mysql_fetch_object($resultaat)) {
      echo "$check$record->username<br>\n";
    }
?>
<input type=submit value=submit class=button>
</form>


en dit is test.php3

PHP:
1
2
3
4
5
6
7
8
9
<?

mysql_connect("localhost", "", "");
                mysql_select_db("blaat"); 
                
foreach($_POST["Delete"] as $username)
 $sql = "DELETE FROM Leden WHERE id=$username";

?> 


Ik doe wel iets fout maar ik weet niet wat.. hij blijft de fout op line 6 aangeven van test.php3. De fout ligt bij foreach... maar dat kan je denk ik ook wel zien..

[ Voor 16% gewijzigd door Verwijderd op 05-06-2003 14:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

$_POST["Delete"] != $_POST["delete"] ;)

Natuurlijk moet je als value wel een waarde invullen, niet het woord 'id'.

[ Voor 61% gewijzigd door Verwijderd op 05-06-2003 14:40 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ff proberen... was weer te laat

Als ik het zo doe

PHP:
1
2
3
4
5
6
7
8
9
<? 

mysql_connect("localhost", "", ""); 
                mysql_select_db("blaat"); 
                 
foreach(!= $_POST["delete"] as $username) 
$sql = "DELETE FROM Leden WHERE id=$username"; 

?> 

Parse error: parse error in C:\apache\htdocs\telemega\admin\test.php3 on line 6

Dan werkt het ook niet... aangezien jij (Nokia) met != is niet gelijk aan bedoeld.. krijg ik als ik het zo doe

PHP:
1
2
3
4
5
6
7
8
9
<? 

mysql_connect("localhost", "", ""); 
                mysql_select_db("blaat"); 
                 
foreach($_POST["delete"] as $username) 
$sql = "DELETE FROM Leden WHERE id=$username"; 

?> 


Dus delete met kleine letter ook niet goed.. wat hij aangeeft?
dit:
Warning: Invalid argument supplied for foreach() in C:\apache\htdocs\telemega\admin\test.php3 on line 6

:D raadsel..?

[ Voor 12% gewijzigd door Verwijderd op 05-06-2003 14:49 . Reden: WEer te laat ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmm wat ik ook probeer.. hij geeft dit aan:
Warning: Invalid argument supplied for foreach() in C:\apache\htdocs\telemega\admin\test.php3 on line 6

Ik zal even laten zien hoe ik het nu heb:

Blaat.php3
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form method=post action=test.php3>  
<?   
     mysql_connect("localhost", "", "");
                mysql_select_db("blaah"); 
        
        $check = ('<input type="checkbox" name="delete[]" value="$userid">');       
 $sql = "SELECT * FROM Leden";
     
     $resultaat = mysql_query($sql);
     $aantal = mysql_num_rows($resultaat);
      echo "Er zijn <b>$aantal</b> leden<br><br>\n";
     
     while ($record = mysql_fetch_object($resultaat)) {
      echo "$check$record->username<br>\n";
    }
?>
<input type=submit value=submit class=button>
</form>


Test.php3

PHP:
1
2
3
4
5
6
7
8
<?

mysql_connect("localhost", "", "");
                mysql_select_db("blaah"); 
                
foreach ($_POST["delete"] as $userid)
  $sql = "DELETE FROM Leden WHERE id = $userid";
?> 


Still beats me? 8)7

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 05 juni 2003 @ 15:08:
Hmm wat ik ook probeer.. hij geeft dit aan:
Warning: Invalid argument supplied for foreach() in C:\apache\htdocs\telemega\admin\test.php3 on line 6

Test.php3

PHP:
1
2
3
4
5
6
7
8
<?

mysql_connect("localhost", "", "");
                mysql_select_db("blaah"); 
                
foreach ($_POST["delete"] as $userid)
  $sql = "DELETE FROM Leden WHERE id = $userid";
?> 


Still beats me? 8)7
doe eens een print_r($_POST["delete"]);
;)

[ Voor 23% gewijzigd door Erkens op 05-06-2003 15:14 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Je bent wel ongeveer op de goede weg, maar je vergeet nog een paar dingen. (en niet alleen de quotes van je html attributen :))

1) Als je goed kijkt zie je dat je je delete checkbox niet binnen je lus gezet hebt.
2) De value $userid is waar jij hem gebruikt nog helemaal niet bekend.

Zonder alles helemaal voor te kauwen moet je dit doen:

1) Het maken van je connectie met de databaseserver en de juiste database selecteren. Dat heb je gedaan, ook al zie ik geen username en password ingevuld.

2) Je voert een query uit waarmee je de informatie van de gebruikers uit de usertabel haalt. In jouw geval leden.

3) Je doorloopt het resulaat van de query uit stap 2.
while($user = mysql_fetch_object($user_result))
{
?>
<input type="checkbox" name="delete[]" value=<?= $user->id ?>
<?
}
?>

Nu worden in ieder geval de values goed ingevuld. Natuurlijk moet je wel de door mij verzonnen variabele namen vervangen door wat jij gebruikt. Test de boel na het drukken op submit met print_r($_POST["delete"])

Succes

[ Voor 7% gewijzigd door Verwijderd op 05-06-2003 15:19 ]


Acties:
  • 0 Henk 'm!

  • Shift
  • Registratie: Augustus 2000
  • Laatst online: 16-06 11:48

Shift

[] Dual crazy []

Foutje :)

[ Voor 212% gewijzigd door Shift op 05-06-2003 16:01 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
3) Je doorloopt het resulaat van de query uit stap 2.
while($user = mysql_fetch_object($user_result))
{
?>
<input type="checkbox" name="delete[]" value=<?= $user->id ?>
<?
}
?>
Weet je zeker dat deze tag goed is? moet hij niet zo
PHP:
1
2
3
4
5
6
7
8
 
while($user = mysql_fetch_object($user_result))
{
?>
<input type="checkbox" name="delete[]" value="<?= $user->id ?>">
<?
}
?>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee ik kom er niet uit... Nokia.. wat jij zei heb ik geprobeerd,
Met print_r geeft hij een lege pagina aan...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mensen! Problem solved! Dankzij een maatje van me! Voor de mensen met het zelfde probleem die de search gaan gebruiken, die zullen hier wel wat aan hebben

Blaat.php3
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form method=post action=test.php3>     
<?     
     
         
       mysql_connect("localhost", "login", "wachtwoord"); 
                mysql_select_db("ecommerce");           
                
            $sql = "SELECT * FROM Leden"; 
$resultaat = mysql_query($sql);
while($row = mysql_fetch_array($resultaat)) {

$id = $row[0];
$username = $row[1];

?>
<input type="checkbox" name="delete" value="<? echo $id; ?>">
<?
echo "$id,$username<br>\n";
}
?> 
<input type=submit value=submit class=button> 
</form> 


Test.php3
PHP:
1
2
3
4
5
6
7
8
<?

mysql_connect("localhost", "login", "wachtwoord"); 
                mysql_select_db("ecommerce"); 

$delqry = "DELETE FROM Leden WHERE id = '$delete'"; 
$result = mysql_query($delqry);
?> 


:+ pipo!

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 05 June 2003 @ 18:36:
Mensen! Problem solved! Dankzij een maatje van me! Voor de mensen met het zelfde probleem die de search gaan gebruiken, die zullen hier wel wat aan hebben

Test.php3
PHP:
1
2
3
4
5
6
7
8
<?

mysql_connect("localhost", "login", "wachtwoord"); 
                mysql_select_db("ecommerce"); 

$delqry = "DELETE FROM Leden WHERE id = '$delete'"; 
$result = mysql_query($delqry);
?> 


:+ pipo!
zo kan je er toch maar 1 tegelijk deleten :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ehm nou je het zegt, ja.. maar daar valt wel wat op te vinden denk ik?

Maar, dit is wat ik wou bereiken, nu ga ik ervoor zorgen dat achter de naam in een tabel een delete button komt, en dat hij dan gewoon de id verwijderd... dus eigenlijk was dit helegedoetje niet nodig!

Maar in iedergeval hardstikke bedankt hiervoor, toch nog wat geleerd!

B)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 05 June 2003 @ 22:22:
Ehm nou je het zegt, ja.. maar daar valt wel wat op te vinden denk ik?

Maar, dit is wat ik wou bereiken, nu ga ik ervoor zorgen dat achter de naam in een tabel een delete button komt, en dat hij dan gewoon de id verwijderd... dus eigenlijk was dit helegedoetje niet nodig!

Maar in iedergeval hardstikke bedankt hiervoor, toch nog wat geleerd!

B)
ik heb net even wat geprobeerd, het punt dat het niet werkte is omdat een checkbox geen value heeft.
Zie het volgende voorbeeld:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<form action="<?=$_SERVER["PHP_SELF"]?>" method="GET">
<?
for($i=0;$i<15;$i++){
  echo "<input type=\"checkbox\" name=\"box[".$i."]\">".$i."<br/>";
}
?>
<input type="submit">
<pre>
<?
if (isset($_GET["box"])) print_r($_GET["box"]);
?>
</pre>

Acties:
  • 0 Henk 'm!

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Zoals ik in het begin van het topic al aangaf: het makkelijkste is gewoon wanneer je de checkbox dezelfde name geeft, en vervolgens als value de userID meegeeft.
Aangezien deze waarden comma seperated worden verstuurd kan je vervolgens gebruik maken van IN() ;)

PHP:
1
2
3
4
5
6
7
8
<? 

mysql_connect("localhost", "login", "wachtwoord"); 
                mysql_select_db("ecommerce"); 

$delqry = "DELETE FROM Leden WHERE id IN ('$delete'); 
$result = mysql_query($delqry); 
?> 

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Acties:
  • 0 Henk 'm!

  • Folkert
  • Registratie: September 2001
  • Laatst online: 14:23
Aaargh, lees gewoon eens wat DeverauX zegt, hier tackel je je hele probleem mee. Gewoon de checkbox de waarde van de ID meegeven en deze ophalen op de vervolg pagina.
Begruik hierbij het ' IN' SQL statement ipv ' =' . Hij pakt hierbij dus meerdere records waardoor je niet per user hoeft te verwijderen maar in een keer een hele bups...

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

DeverauX schreef op 06 June 2003 @ 07:00:
Zoals ik in het begin van het topic al aangaf: het makkelijkste is gewoon wanneer je de checkbox dezelfde name geeft, en vervolgens als value de userID meegeeft.
Aangezien deze waarden comma seperated worden verstuurd kan je vervolgens gebruik maken van IN() ;)

PHP:
1
2
3
4
5
6
7
8
<? 

mysql_connect("localhost", "login", "wachtwoord"); 
                mysql_select_db("ecommerce"); 

$delqry = "DELETE FROM Leden WHERE id IN ('$delete'); 
$result = mysql_query($delqry); 
?> 
wrong, dan krijg je alleen de laatste geselecteerde value door ;)
wel kan je het in combinatie met de array zoals is ik het gaf doen ;)

Acties:
  • 0 Henk 'm!

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

wrong, dan krijg je alleen de laatste geselecteerde value door
wel kan je het in combinatie met de array zoals is ik het gaf doen
Hoe bedoel je? Wanneer je een checkbox dezelfde name meegeeft worden alle value's van deze checkboxen comma seperated gepost en aangezien het IN() statement dergelijke invoer accepteerd werkt het gewoon.

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

DeverauX schreef op 06 June 2003 @ 11:23:
[...]

Hoe bedoel je? Wanneer je een checkbox dezelfde name meegeeft worden alle value's van deze checkboxen comma seperated gepost en aangezien het IN() statement dergelijke invoer accepteerd werkt het gewoon.
nee hoor ;)
ziet:
http://oege.ie.hva.nl/~erkens04/got/checkboxjes2.php

en voor mijn oplossing:
http://oege.ie.hva.nl/~erkens04/got/checkboxjes.php

Acties:
  • 0 Henk 'm!

  • Shift
  • Registratie: Augustus 2000
  • Laatst online: 16-06 11:48

Shift

[] Dual crazy []

Zo kan je meerdere deleten

PHP:
1
2
3
4
5
foreach($_POST["delete"] as $key)
{
      $delqry = "DELETE FROM Leden WHERE id = '$key'"; 
      mysql_query($delqry); 
}


http://www.helinium.nl/bla/test.php

[ Voor 34% gewijzigd door Shift op 06-06-2003 11:35 ]


Acties:
  • 0 Henk 'm!

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Ja het werkt alleen met POST en niet met GET nee ;)
(Met GET zal je inderdaad je hele form-collectie moeten doorlopen om alle waarden eruit te halen)

[ Voor 50% gewijzigd door DeverauX op 06-06-2003 11:37 ]

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Shift schreef op 06 June 2003 @ 11:33:
Zo kan je meerdere deleten

PHP:
1
2
3
4
5
foreach($_POST["delete"] as $key)
{
      $delqry = "DELETE FROM Leden WHERE id = '$key'"; 
      mysql_query($delqry); 
}


http://www.helinium.nl/bla/test.php
eventueel zou je alle key's in een comma seperated string kunnen zetten en dan maar 1 query uitvoeren :)

Acties:
  • 0 Henk 'm!

  • Shift
  • Registratie: Augustus 2000
  • Laatst online: 16-06 11:48

Shift

[] Dual crazy []

Erkens schreef op 06 juni 2003 @ 11:36:
[...]

eventueel zou je alle key's in een comma seperated string kunnen zetten en dan maar 1 query uitvoeren :)
Jah, dat kan ook idd, maar dit is een aanzet tot de juiste oplossing :)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

DeverauX schreef op 06 juni 2003 @ 11:35:
Ja het werkt alleen met POST en niet met GET nee ;)
(Met GET zal je inderdaad je hele form-collectie moeten doorlopen om alle waarden eruit te halen)
o?

http://oege.ie.hva.nl/~erkens04/got/checkboxjes3.php

;)
Shift schreef op 06 juni 2003 @ 11:37:
[...]


Jah, dat kan ook idd, maar dit is een aanzet tot de juiste oplossing :)
i know, maar ik vind het altijd zo nutteloos om veel query's uit te voeren als het niet nodig is ;)
scheelt enorm op performance

[ Voor 34% gewijzigd door Erkens op 06-06-2003 11:39 ]


Acties:
  • 0 Henk 'm!

  • Shift
  • Registratie: Augustus 2000
  • Laatst online: 16-06 11:48

Shift

[] Dual crazy []

i know, maar ik vind het altijd zo nutteloos om veel query's uit te voeren als het niet nodig is
scheelt enorm op performance
Jah, dat klopt, je kan gewoon de te deleten rows in een string aan elkaar plakken en dan na de lus query verzenden. Maar als het om niet meer dan 10 of 20 querys gaat is het niet echt een probleem, maar of rows meer dan 100 of 500 dan ga je het merken :) Ik begrijp je wel dus :D

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
<?
foreach($_POST["delete"] as $key) 
{ 
      $delqry = "DELETE FROM Leden WHERE id = '$key'"; 
      mysql_query($delqry); 
}
?> 
Die foreach werkt echt nooit bij me, alles wat ik doe geeft hij dit aan
Warning: Invalid argument supplied for foreach() in C:\apache\htdocs\telemega\admin\test.php3 on line 6

Dus foreach = stupid!! man o man word hier hyper van zo verrot, dat alleen die foreach niet wilt werken $key heb ik al gewijzigd...

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 08 June 2003 @ 17:19:
[...]


Die foreach werkt echt nooit bij me, alles wat ik doe geeft hij dit aan
Warning: Invalid argument supplied for foreach() in C:\apache\htdocs\telemega\admin\test.php3 on line 6

Dus foreach = stupid!! man o man word hier hyper van zo verrot, dat alleen die foreach niet wilt werken $key heb ik al gewijzigd...
doet eens een print_r($_POST["delete"])
en kijk wat er in die array zit (als het een array is ;) )

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Gefixed!!! Thnx!!!

Acties:
  • 0 Henk 'm!

  • Mafioso
  • Registratie: November 2000
  • Laatst online: 17-09 20:33
Erkens, waarom jou script niet werkt is doordat de name van de box-type input niet eindigt op []..

code:
1
<input type=\"checkbox\" name=\"box\" value=".$i.">
moet dus zijn:
code:
1
<input type=\"checkbox\" name=\"box[]\" value=".$i.">


Zo werkt het dus wel : http://130.89.169.211/checkbox.php

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n";

// Opties aanmaken (natuurlijk ombouwen zodat het uit de db wordt gehaald): 
for($i=0;$i<15;$i++){
  echo "<input type=\"checkbox\" name=\"box[]\" value=".$i.">".$i."<br />\n";
}
// Submit knopje:
echo "<input type=\"submit\">\n</form>\n";

// waardes comma-separated in string zetten:
$todel = implode(",", $_POST['box']);

$query = "DELETE FROM users WHERE id IN (".$todel.")";

[ Voor 84% gewijzigd door Mafioso op 09-06-2003 01:52 . Reden: ff geheel script erbij gezet ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Mafioso schreef op 09 juni 2003 @ 01:36:
Erkens, waarom jou script niet werkt is doordat de name van de box-type input niet eindigt op []..

code:
1
<input type=\"checkbox\" name=\"box\" value=".$i.">
moet dus zijn:
code:
1
<input type=\"checkbox\" name=\"box[]\" value=".$i.">


Zo werkt het dus wel : http://130.89.169.211/checkbox.php

...
dat had ik ook ;)
alleen schijnt die server nu offline te zijn :/
dus ik kan niet bij die source :X

edit: server doet het weer:
[rml]Erkens in "[ PHP/MySql] Checkbox om user te deleten"[/rml]
en
http://oege.ie.hva.nl/~erkens04/got/checkboxjes.php

[ Voor 21% gewijzigd door Erkens op 10-06-2003 15:51 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Die truuk met de DELETE WHERE id IN () kende ik niet, da's inderdaad een stuk beter dan mijn oplossing. Ik hem hem zelf ook getest, maar ik loop alleen tegen het verwachte probleem dat de geposte value geen CSV is, maar een array. Die kan ik natuurlijk met implode() omzetten naar een CSV, maar ik zie jullie (Deveraux) dat niet doen. Heb dit als code-example gemaakt, dat werkt, maar zonder de implode() werkt het niet.
PHP:
1
2
3
4
5
6
7
8
9
10
if(count($_POST["delete"]) > 0)
{
    $delete_values = implode(",", $_POST["delete"]);
    $delete_query = 
        "DELETE
        FROM personeel
        WHERE id IN (" . $delete_values . ")"
    ;
    mysql_query($delete_query);
}
Doe ik nou iets fout, of vergeten jullie de implode()? :)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 10 June 2003 @ 15:27:
Die truuk met de DELETE WHERE id IN () kende ik niet, da's inderdaad een stuk beter dan mijn oplossing. Ik hem hem zelf ook getest, maar ik loop alleen tegen het verwachte probleem dat de geposte value geen CSV is, maar een array. Die kan ik natuurlijk met implode() omzetten naar een CSV, maar ik zie jullie (Deveraux) dat niet doen. Heb dit als code-example gemaakt, dat werkt, maar zonder de implode() werkt het niet.
PHP:
1
2
3
4
5
6
7
8
9
10
if(count($_POST["delete"]) > 0)
{
    $delete_values = implode(",", $_POST["delete"]);
    $delete_query = 
        "DELETE
        FROM personeel
        WHERE id IN (" . $delete_values . ")"
    ;
    mysql_query($delete_query);
}
Doe ik nou iets fout, of vergeten jullie de implode()? :)
bekijk eerst eens wat er nu precies in $_POST["delete"] zit voordat je verder gaat prutsen ;)
vervolgens pak je de manual erbij van implode: http://nl.php.net/implode
en je ziet wat er verkeerd is :)

Acties:
  • 0 Henk 'm!

  • Mafioso
  • Registratie: November 2000
  • Laatst online: 17-09 20:33
Verwijderd schreef op 10 June 2003 @ 15:27:[..] Doe ik nou iets fout, of vergeten jullie de implode()? :)
uh? lees wel de draad?, ik heb hierboven een werkend voorbeeld gepost, welke idd gebruik maakt van implode().

nog maar keertje de code (inc stukje dat $query afdrukt op het scherm):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n"; 

// Opties aanmaken (natuurlijk ombouwen zodat het uit de db wordt gehaald): 
for($i=0;$i<15;$i++){ 
  echo "<input type=\"checkbox\" name=\"box[]\" value=".$i.">".$i."<br />\n"; 
} 
// Submit knopje: 
echo "<input type=\"submit\">\n</form>\n"; 

if (IsSet($_POST['box'])) {
// waardes comma-separated in string zetten: 
$todel = implode(",", $_POST['box']); 

$query = "DELETE FROM users WHERE id IN (".$todel.")";

echo "<br />\$query = \"$query\"\n";
}

[ Voor 55% gewijzigd door Mafioso op 10-06-2003 17:29 . Reden: code er bij gezet ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik ben ook met een soort gelijk script bezig. Dus dat je meerdere records tegelijk kan verwijderen. Dit lukt echter op geen enkele manier. 1 record per keer met een check box deleten lukt maar meerdere tegelijk wil niet lukken.

Het volgende heb ik mijn overzicht.php verwerkt.

PHP:
1
2
3
4
5
echo "<form method=post action=?link=verwijderen>";

echo "<input type='checkbox' name='checkbox' value='$id'>";

echo "<input type=submit value=submit></form>";


Dit wordt dus doorgelinkt naar: verwijderen.php. Waarin het volgende staat:

PHP:
1
2
$delete = $_POST["checkbox"];
mysql_query("DELETE FROM leerlingen WHERE id = '$delete';") or die (mysql_error());


Dit werkt dus wel, alleen pakt hij alleen maar de laatste id. Als ik die $delete echo, krijg ik ook maar een id! Ik heb alle dingen in dit topic geprobeerd maar ik krijg het niet voorelkaar. Kan iemand mij een tip geven ?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 11 maart 2004 @ 13:22:
Ik heb alle dingen in dit topic geprobeerd maar ik krijg het niet voorelkaar. Kan iemand mij een tip geven ?
geloof ik niets van, een werkende oplossing staat zelfs boven jouw post :/
(van bijna een jaar geleden)

Acties:
  • 0 Henk 'm!

Verwijderd

ik zal het script hierboven nog een keer proberen en geef dan wel de eventuele foutmelding.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 11 maart 2004 @ 13:29:
ik zal het script hierboven nog een keer proberen en geef dan wel de eventuele foutmelding.
als je dat nu meteen had gedaan, de foutmelding plaatsen :/

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb nu het volgende, en ik zie de fout niet....

overzicht.php
PHP:
1
<input type='checkbox' name='checkbox[]' value='$id'>



verwijderen.php
PHP:
1
2
3
$todel = implode(",", $_POST['checkbox']); 

mysql_query("DELETE FROM leerlingen WHERE id IN '$todel'") or die (mysql_error());


Ik krijg de volgende foutmelding:
Warning: implode(): Bad arguments. in C:\Webserver\www\test\verwijderen.php on line 8
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '''' at line 1

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:06

gorgi_19

Kruimeltjes zijn weer op :9

Echo je query eens?

* gorgi_19 heeft een donkerbruin vermoeden dat het niet werkt omdat de code niet goed is overgenomen..

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Ej thx het werkt nu.

$todel = implode(",", $_POST['checkbox']);

$query = "DELETE FROM leerlingen WHERE id IN (".$todel.")";
mysql_query($query);

eigenlijk dus gewoon nie goed overgenomen :9
Pagina: 1