login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Delete query

Offline Voldemort - 21/08/2005 18:17
Avatar van VoldemortPHP ver gevorderde Hoe kan ik een delete query een aantal keer uitvoeren (naar gelang het aantal checkbox aangevinkt zijn).

  1. <?php
  2. $query3 = "DELETE FROM `forum_berichten` WHERE `id`='".$_POST['berichten_del']."'";
  3. $result3 = mysql_query($query3) or die(mysql_error());
  4. ?>


moet zovaak uitgevoerd worden totals alle aangevinkte checkboxen (de berichten) gedelete zijn.

Mijn checkbox:

  1. <input type='checkbox' name='berichten_del' value='".$fetch3['id']."' />


$fetch3 is het berichtid ($fetch3 = staat in een while-lus).

Dus als ik berichtid 4 en 9 aanvink, moet ie berichtid 4 en 9 deleten. Alleen delete ie maar 1 met deze code:

  1. <?php
  2. $query3 = "DELETE FROM `forum_berichten` WHERE `id`='".$_POST['berichten_del']."'";
  3. $result3 = mysql_query($query3) or die(mysql_error());
  4. ?>


Hoe zorg ik dat ie ze beide delete?

11 antwoorden

Gesponsorde links
Offline Tuinstoel - 21/08/2005 18:21
Avatar van Tuinstoel PHP expert Checkboxes:
  1. <input type="checkbox" name="del[]" id="3" />


PHP Code:
  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. $sQuery = "DELETE FROM `ding` WHERE `id` IN(".implode(",",$_POST['del']).")";
  5. }
  6. ?>

Rest moet je zelf maar ff uitzoeken qua beveiliging enzo.
Offline Voldemort - 21/08/2005 18:32
Avatar van Voldemort PHP ver gevorderde Dan krijg ik dit:

Citaat:
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 'on,on)' at line 1


Maar wat doet die on,on daar? En waarom moet ik imploden?
Offline cracker - 22/08/2005 06:56
Avatar van cracker Onbekend
Citaat:
implode(",",$_POST['del'])

moet je list(); niet gebruiken dan? 
Offline Tuinstoel - 22/08/2005 09:31
Avatar van Tuinstoel PHP expert Als je 'on' en andere string in je variabele hebt dan werkt dit inderdaad niet. Dan moet je gewoon foreach gebruiken en de query's achter elkaar uitvoeren.
Offline Voldemort - 22/08/2005 10:18
Avatar van Voldemort PHP ver gevorderde
  1. $query3 = "DELETE FROM `forum_berichten`
  2. WHERE `id` IN ( ".implode(',',$_POST['berichten_del']).")";
  3. $result3 = mysql_query($query3) or die(mysql_error());


en

  1. <input type='checkbox' name='berichten_del[]' value='".$fetch3['id']."' />


Werkt, alleen krijg ik dit:

Citaat:
Warning: implode() [function.implode]: Bad arguments. in C:serverwwwsite-accountforumfunctions.php on line 105


En als ik geen berichten selecteer om te deleten krijg ik dit:

Citaat:
Warning: implode() [function.implode]: Bad arguments. in C:serverwwwsite-accountforumfunctions.php on line 105
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 2



Hoe los ik dat allemaal op?
Offline Tuinstoel - 22/08/2005 10:24
Avatar van Tuinstoel PHP expert
  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. if(!is_array($_POST['del']))
  5. { echo 'Verwijderen is niet gelukt (is geen array).'; }
  6. else
  7. {
  8. if(!isset($_POST['del']))
  9. { echo 'Geen berichten opgegeven.'; }
  10. else
  11. {
  12. $iError = 0;
  13. foreach($_POST['del'] as $sValue)
  14. {
  15. if(!eregi('[0-9]{1,12}',$sValue))
  16. { $iError++; }
  17. }
  18.  
  19. if($iError > 0)
  20. { echo 'Je waarden waren niet correct.'; }
  21. else
  22. {
  23. $sQuery = "DELETE FROM `tabel` WHERE `id` IN(".implode(",",$_POST['del']).")";
  24. if(!@mysql_query($sQuery))
  25. { echo 'Query is niet gelukt bla bla bla. '; }
  26. else
  27. { echo 'Bla bla bla.'; }
  28. }
  29. }
  30. }
  31. }
  32. ?>
Offline Voldemort - 22/08/2005 11:09 (laatste wijziging 23/08/2005 10:13)
Avatar van Voldemort PHP ver gevorderde Nu werkt et. 

Alleen dit nog:

Hoe kan ik nu zorgen dat voor iedereens bericht dat ik verwijderd heb, er bij die personen in de ledentabel hun posts -1 gaan? Ik weet dat ik een aparte query nodig heb, maar hoe ziet die er dan uit?
Offline gijs - 23/08/2005 10:20 (laatste wijziging 23/08/2005 10:20)
Avatar van gijs HTML beginner Zoiets?

  1. <?php
  2. $query = "UPDATE ledentabel SET post=post-1";
  3. mysql_query($query);
  4. ?>
Offline Voldemort - 23/08/2005 10:29
Avatar van Voldemort PHP ver gevorderde Ik wil wel voor de mensen hun bericht dat ik heb verwijderd, dus voor allemaal de verwijderen het - 1 gaat en niet voor iedereen.
Offline Duikboot - 23/08/2005 11:37
Avatar van Duikboot Grafische gevorderde Dan pak je de id's van de members erbij waarvan je de berichten verwijderd hebt, en doe een WHERE in de query.
Offline Voldemort - 23/08/2005 12:05 (laatste wijziging 23/08/2005 14:08)
Avatar van Voldemort PHP ver gevorderde Maar em update niets:

  1. <?php
  2. $query3 = "SELECT `door` FROM `forum_berichten` WHERE `id`='".$_POST['berichten_del']."'";
  3. $result3 = mysql_query($query3) or die(mysql_error());
  4. while($fetch3 = mysql_fetch_array($result3))
  5. {
  6. $query4 = "UPDATE `leden`
  7. SET `forum_posts`=`forum_posts`-1
  8. WHERE `gebruikersnaam`='".$fetch3['door']."'";
  9. $result4 = mysql_query($query4) or die(mysql_error());
  10. }
  11. ?>


En de checkbox is:

  1. <?php
  2. //De query
  3. $query3 = "SELECT * FROM `forum_berichten` WHERE `topicid`='".$_GET['id']."' ORDER BY `id` ASC";
  4. $result3 = mysql_query($query3) or die(mysql_error());
  5.  
  6. //En daarna werd em gefetcht in een while lus waarin de checkbox staat:
  7.  
  8. echo "<input type='checkbox' name='berichten_del[]' value='".$fetch3['id']."' />";
  9. ?>



Edit: De bug is eruit:

  1. $query3 = "SELECT `door` FROM `forum_berichten` WHERE `id`='".$_POST['berichten_del']."'";


moest

  1. $query3 = "SELECT `door` FROM `forum_berichten` WHERE `id` IN (".implode(",",$_POST['berichten_del']).")";


worden.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.323s