login  Naam:   Wachtwoord: 
Registreer je!
 Forum

mysql IN

Offline Stefan14 - 03/12/2008 15:48
Avatar van Stefan14PHP gevorderde Het updaten van de status van de tickets wil niet lukken.
Als ik de query echo, dan zie ik dat er tussen de haakjes van de IN, niets staat, terwijl ik wel tickets aangevinkt heb.
Ik snap het niet, het staat in een form, en de namen komen overeen.

Hieronder de foutmelding waarin ook de geëchode query te zien is:
Warning: implode() [function.implode]: Invalid arguments passed in /home/admin/domains/adsupply.nl/public_html/admin/tickets.php on line 23
UPDATE tickets_berichten SET status = 2 WHERE id IN ()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 7

Hieronder de (volledige) code:
  1. <?php
  2. //////////////////////////////////////////////
  3. // tickets.php //
  4. // page with an overview of the tickets //
  5. // in the admin panel //
  6. // //
  7. // creation: 2008-12-03 //
  8. // last modified: 2008-12-03 //
  9. // created by: Stefan van Iwaarden //
  10. // last modified by: Stefan van Iwaarden //
  11. //////////////////////////////////////////////
  12.  
  13. if ($_SERVER['REQUEST_METHOD'] == "POST")
  14. {
  15. if ($_POST['ticket'] != '')
  16. {
  17. $query = "UPDATE
  18. tickets_berichten
  19. SET
  20. status = ".$_POST['status']."
  21. WHERE
  22. id
  23. IN (".implode(",", $_POST['tickets']).")";
  24. echo $query;
  25. $result = mysql_query($query) or die (mysql_error());
  26. }
  27. }
  28.  
  29. if ($_GET['col'] == 'status')
  30. {
  31. $orderby = 'status';
  32. }
  33. elseif ($_GET['col'] == 'datum')
  34. {
  35. $orderby = 'datum';
  36. }
  37. else
  38. {
  39. $orderby = 'datum';
  40. }
  41.  
  42.  
  43. if ($_GET['sort'] == 'ASC')
  44. {
  45. $sort = 'ASC';
  46. $nextsort = 'DESC';
  47. }
  48. elseif ($_GET['sort'] == 'DESC')
  49. {
  50. $sort = 'DESC';
  51. $nextsort = 'ASC';
  52. }
  53. else
  54. {
  55. $sort = 'DESC';
  56. $nextsort = 'ASC';
  57. }
  58.  
  59.  
  60. $query = "SELECT
  61. id,
  62. onderwerp,
  63. naam,
  64. SUBSTRING(bericht, 0, 100) AS short,
  65. status,
  66. DATE_FORMAT(datum, '%d-%m-%Y %H:%i') AS datumnl
  67. FROM
  68. tickets_berichten
  69. WHERE
  70. status != 5
  71. ORDER BY
  72. ".$orderby." ".$sort;
  73. $result = mysql_query($query) or die (mysql_error());
  74.  
  75. echo '<b>Tickets</b><br /><br />';
  76.  
  77. echo '<form action="" method="post">';
  78. echo '<table cellspacing="0" width="90%">';
  79. echo '<tr>
  80. <td>&nbsp;</td>
  81. <td><b>Naam</b></td>
  82. <td><b>Onderwerp</b></td>
  83. <td><b>Bericht</b></td>
  84. <td><b><a href="?page=tickets&col=status&sort='.$nextsort.'" style="text-decoration: none;">Status</a></b></td>
  85. <td><b><a href="?page=tickets&col=datum&sort='.$nextsort.'" style="text-decoration: none;">Datum</a></b></td>
  86. </tr>';
  87. while ($row = mysql_fetch_assoc($result))
  88. {
  89. $query2 = "SELECT onderwerp FROM tickets_onderwerpen WHERE id = ".$row['onderwerp'];
  90. $result2 = mysql_query($query2) or die (mysql_error());
  91. $onderwerp = mysql_result($result2,0,'onderwerp');
  92.  
  93. $query3 = "SELECT status FROM tickets_statussen WHERE id = ".$row['status'];
  94. $result3 = mysql_query($query3) or die (mysql_error());
  95. $status = mysql_result($result3,0,'status');
  96.  
  97. if ($r % 2 == 0)
  98. {
  99. $bgcolor = '#CCCCCC';
  100. }
  101. else
  102. {
  103. $bgcolor = '#FFFFFF';
  104. }
  105.  
  106. echo '<tr bgcolor="'.$bgcolor.'">
  107. <td><input type="checkbox" name"tickets[]" value="'.$row['id'].'"></td>
  108. <td width="20%"><a href="?page=tickets_details&id='.$row['id'].'" style="text-decoration: none;">'.$row['naam'].'</a></td>
  109. <td width="15%"><a href="?page=tickets_details&id='.$row['id'].'" style="text-decoration: none;">'.$onderwerp.'</a></td>
  110. <td width="35%"><a href="?page=tickets_details&id='.$row['id'].'" style="text-decoration: none;">'.$row['short'].'</a></td>
  111. <td width="15%"><a href="?page=tickets_details&id='.$row['id'].'" style="text-decoration: none;">'.$status.'</a></td>
  112. <td width="15%"><a href="?page=tickets_details&id='.$row['id'].'" style="text-decoration: none;">'.$row['datumnl'].'</a></td>
  113. </tr>';
  114.  
  115. $r++;
  116. }
  117. echo '</table>';
  118.  
  119.  
  120. echo '<br /><br />';
  121. echo 'Geselecteerde berichten status wijzigen:<br />';
  122. echo '<select name="status">';
  123. $query = "SELECT id,status FROM tickets_statussen ORDER BY rang ASC";
  124. $result = mysql_query($query) or die (mysql_error());
  125.  
  126. while ($row = mysql_fetch_assoc($result))
  127. {
  128. echo '<option value="'.$row['id'].'">'.$row['status'].'</option>';
  129. }
  130. echo '</select>';
  131. echo '<br />';
  132. echo '<input type="submit" name="submit" value="Wijzig" />';
  133. echo '</form>';
  134.  
  135. ?>

3 antwoorden

Gesponsorde links
Offline marten - 03/12/2008 16:24
Avatar van marten Beheerder Maak even gebruik van plaatscode aub
Offline Martijn - 03/12/2008 17:00 (laatste wijziging 03/12/2008 17:01)
Avatar van Martijn Crew PHP
  1. $query = "UPDATE
  2. tickets_berichten
  3. SET
  4. status = ".$_POST['status']."
  5. WHERE
  6. id
  7. IN (".implode(",", $_POST['tickets']).")";


vervangen door
  1. if(count($_POST['status'])>1){$_POST['status']=implode(",", $_POST['tickets']);}
  2.  
  3. $query = "UPDATE
  4. tickets_berichten
  5. SET
  6. status = ".$_POST['status']."
  7. WHERE
  8. id
  9. IN (".$_POST['tickets'].")";


je fout is namelijk niet dat de query fout is, maar t stukje implode() in de query. Wat de fout is, is dat het een verkeerde input is. Als je maar 1 ding hebt geselecteerd, is het denk scheef

edit: al moet dat niet uitmaken geloof ik
Offline Stefan14 - 04/12/2008 01:02
Avatar van Stefan14 PHP gevorderde Ik heb het iedere keer getest met 2 berichten, maar dat werkte dus niet.

Ik heb jouw code geprobeerd, en heb de post variabelen met status maar veranderd in tickets, het is immers niet zinvol om een dropdownbox te gaan tellen  
Ook moest ik de waarde van de IN tussen enkele quotes zetten blijkbaar, want dit leverde een foutmelding op, dat heb ik dus gedaan.

Desondanks werkt het nog steeds niet, de pagina refresht als het ware en er veranderd niets.

Dit is de huidige code
  1. <?php
  2. if ($_SERVER['REQUEST_METHOD'] == "POST")
  3. {
  4. if(count($_POST['tickets'])>1)
  5. {
  6. $_POST['tickets'] = implode(",", $_POST['tickets']);
  7. }
  8.  
  9. $query = "UPDATE
  10. tickets_berichten
  11. SET
  12. status = ".$_POST['status']."
  13. WHERE
  14. id
  15. IN ('".$_POST['tickets']."')";
  16. $result = mysql_query($query) or die (mysql_error());
  17. }
  18. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.215s