login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Bij bepaalde keuze in dropdownlist, verwijdert hij niet

Offline happy_face - 11/06/2008 11:06 (laatste wijziging 11/06/2008 11:07)
Avatar van happy_faceNieuw lid Ik ben bezig aan een webshop en in het admin-gedeelte kan de administrator de bestellingen bekijken en die een status geven.

Vanaf dat hij de status 'afgesloten' of 'geannuleerd' kiest in de dropdownlist, moet hij deze automatisch verwijderen. Wanneer de andere keuzes worden gekozen, moet hij die gewoon wijzigen.

Het probleem is nu als ik 'afgesloten' of 'geannuleerd' kies dat hij dat gewoon wijzigt, maar hij verwijdert de bestelling niet uit de database.

Hier is mijn code:

  1. <?php
  2. $orderStatus = array('Nieuw', 'Betaald', 'Verzonden', 'Afgesloten', 'Geannuleerd');
  3. $orderOption = '';
  4. foreach ($orderStatus as $status)
  5. {
  6. $orderOption .= "<option value=\"$status\"";
  7. if ($status == $od_status)
  8. {
  9. $orderOption .= " selected";
  10. }
  11.  
  12. $orderOption .= ">$status</option>\r\n";
  13. }
  14. ?>
  15.  
  16.  
  17.  
  18. <table width="616px" border="0" cellpadding="0" cellspacing="0">
  19. <tr>
  20. <td><h1>Detail Bestelling</h1></td>
  21. <td align="right"><input name="btnBack" class="button" type="button" id="btnBack" value="Terug" onClick="window.history.back();"></td>
  22. </tr>
  23. </table>
  24. <br /><br />
  25. <form action="" method="get" name="frmOrder" id="frmOrder">
  26. <table width="616px">
  27. <tr height="30px">
  28. <td colspan="2" class="infoTableHeader">Basisgegevens</td>
  29. </tr>
  30. <tr>
  31. <td class="headCel" width="150">Bestelling #</td>
  32. <td class="listCel"><?php echo $orderId; ?></td>
  33. </tr>
  34. <tr>
  35. <td class="headCel" width="150">Datum</td>
  36. <td class="listCel"><?php echo $od_date; ?></td>
  37. </tr>
  38. <tr>
  39. <td class="headCel" width="150">Laatste update</td>
  40. <td class="listCel"><?php echo $od_last_update; ?></td>
  41. </tr>
  42. <tr>
  43. <td class="headCel">Status</td>
  44. <td class="listCel">
  45. <select name="cboOrderStatus" style="font-size:10px; font-family:Verdana, Arial, Helvetica, sans-serif" id="cboOrderStatus"><?php echo $orderOption; ?></select>
  46. <input name="btnModify" class="button" type="button" id="btnModify" value="Status vernieuwen" onClick="modifyOrderStatus(<?php echo $orderId; ?>);">
  47.  
  48. <?php
  49. if(isset($_GET['cboOrderStatus']))
  50. {
  51. if ($shopConfig['deleteOrder'] == 'y' && $_GET['cboOrderStatus'] == 'Afgesloten')
  52. {
  53. $sql = "DELETE FROM tbl_order
  54. WHERE od_id = $orderId";
  55. dbQuery($sql);
  56. }
  57. }
  58. ?>
  59. </td>
  60. </tr>
  61. </table>
  62. </form>

8 antwoorden

Gesponsorde links
Offline willemw - 11/06/2008 17:14 (laatste wijziging 11/06/2008 17:15)
Avatar van willemw Nieuw lid probeer alvast eens met deze: (aanhalingstekentjes rond de $orderId)


  1. $sql = "DELETE FROM tbl_order
  2. WHERE od_id = '$orderId'"


als het nog niet lukt, best de $sql eens echo'en en kijken of hij ervan maakt wat je denkt. Dat kan je dan eventueel ook eens in phpmyadmin of zo testen
Offline Wim - 11/06/2008 17:17
Avatar van Wim Crew algemeen ik vindt nergens terug waar je je $orderId declareert....
Offline willemw - 11/06/2008 17:56
Avatar van willemw Nieuw lid wim, ik denk niet dat de volledige code is , hij maakt geen connectie met databases en gebruikt nog een hoopje variabelen die null zijn

nu als ie de $sql echo't gaat ie dat meteen zien he  
Offline Joost - 11/06/2008 18:06 (laatste wijziging 11/06/2008 18:06)
Avatar van Joost PHP expert
  1. $sql = "DELETE FROM tbl_order
  2. WHERE od_id = '".$orderId."' ";

Offline Wim - 11/06/2008 18:15
Avatar van Wim Crew algemeen tsja dan zal hij toch wat meer code moeten geven denk ik... en de waardes van zijn db zijn mss ook handig, voor als er NULL-waardes bij moeten zitten?
Offline willemw - 11/06/2008 21:11
Avatar van willemw Nieuw lid @Medieval: dat gaat geen verschil maken tegenover het inline te doen
@wimmarien: NULL's gaan geen verschil maken bij deleten he maar inderdaad, een beetje meer info zou nuttig kunnen zijn

en PHP.net: mysql_real_escape_string alleszins ook want qua veiligheid zo op zicht   hm hm 
Offline Gerard - 12/06/2008 01:27
Avatar van Gerard Ouwe rakker Ik ga de eerste zijn die je iets anders verteld dan een oplossing voor je probleem.

Allereerst is er de verschillende statussen die je hebt. Op dit moment heb je deze in een array zitten, wat nu als er ooit een extra status bij dient te komen? Je moet dan die array aanpassen. Dat kan op 1 centrale plaats, maar dat kan ook door de applicatie heen. Verder wordt het wat vervelend als je op die dingen wilt sorteren.

Ik adviseer je dan ook om een tabel aan te maken genaamd 'orderstatus' met daarin een id (TINYINT, 2, UNSIGNED) en een status (VARCHAR, 32, NOT NULL) veld. In je order tabel kan je dan een orderstatusid (TINYINT, 2, UNSIGNED) opnemen die dan aangeeft wat de status van een order is.

Als tweede wil ik je meegeven dat je een order nooit moet verwijderen uit een database, zelfs niet als deze geannuleerd of afgesloten is. Je wilt dat alles consistent is en het is altijd goed om een overzicht te hebben van orders die geannuleerd zijn en om welke reden. Je laat ze dan eventueel niet meer terugkomen in algemene overzichten, maar verwijderd ze alsjeblieft niet.

Ik zeg altijd maar het volgende; "Je kunt beter teveel opslaan in het begin en er later achteerkomen dat informatie overbodig is, dan dat je te weinig opslaat en je later erachterkomt dat je die informatie ook nodig had.". Dat gaat ook voor dit op. Wie weet moet er ooit wat gedaan worden met die informatie. Misschien wil de eigenaar wel bij gaan houden waarom een order geannuleerd is. Misschien wil een klant zijn order wel de-annuleren (als dat normaal Nederlands is).

Hou je database consistent en verwijder niet zomaar dingen. Die paar KB maken echt niets meer uit in een tijd waar 1 GB ongeveer 14 eurocent kost.
Offline vinTage - 12/06/2008 02:41
Avatar van vinTage Nieuw lid Beter één verdronken kalf in een porselein kast , dan een gouden openhaard in een leeuw zn hol, bij grootmoederspeacemaker die nergens beter tikt !


Het was allang geleden dat ik een slimme uitspraak deed! sr @ TS 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.3s