login  Naam:   Wachtwoord: 
Registreer je!
 Forum

status updaten

Offline GroundZero - 30/03/2012 20:29
Avatar van GroundZeroLid Beste,

ik heb in mijn CMS voor mijn site verschillende betaalmethodes.
Ik weergeef deze onder elkaar (zie mijn functie). Echter wil ik nu PER betaalmethode kunnen zeggen of deze geactiveerd is of niet en zo dus de status kunnen updaten in de MYSQL database.

Echter maakt het niet uit welke ik wel of niet aan zet, hij zet altijd de 1e AAN en de rest UIT. Kan iemand mij vertellen wat ik verkeerd doe?

  1. function showPaymentMethods(){
  2. echo '<table width="600px">
  3. <thead>
  4. <th width="10px"><img src="images'.DIRECTORY_SEPARATOR.'delete.png" /></th>
  5. <th width="10px"><img src="images'.DIRECTORY_SEPARATOR.'activated.png" /></th>
  6. <th>Logo</th>
  7. <th>Naam</th>
  8. <th>Standaardkosten</th>
  9. </thead>
  10. <tbody>';
  11.  
  12. $query = mysql_query('SELECT id, title, cost, logo, activated FROM payment_options');
  13. while($fetch = mysql_fetch_assoc($query))
  14. {
  15. echo '<tr>
  16. <td><input type="checkbox" name="delete[]" value="'.$fetch['id'].'" /></td>
  17. <td>
  18. <input type="checkbox" name="check[]" value="1"/>
  19. <input type="hidden" name="which[]" value="'.$fetch['id'].'" />
  20. </td>
  21. <td><img src="uploads'.DIRECTORY_SEPARATOR.$fetch['logo'].'" alt="'.$fetch['logo'].'" /></td>
  22. <td>'.$fetch['title'].'</td>
  23. <td><input type="text" name="price" value="'.number_format($fetch['cost'], 2, ',', '').'" /></td>
  24. </tr>';
  25. }
  26.  
  27. echo '</tbody></table>';
  28. }
  29. ?>


De loop voor het updaten in de MYSQL:

  1. $i = 0;
  2. foreach($_POST['which'] as $id)
  3. {
  4. $cb = (!empty($_POST['check'][$i])) ? 1 : 0;
  5.  
  6. mysql_query('UPDATE payment_options
  7. SET
  8. activated = "'.mysql_real_escape_string($cb).'"
  9. WHERE
  10. id = "'.mysql_real_escape_string($id).'"');
  11. $i++;
  12. }

6 antwoorden

Gesponsorde links
Offline christophe195 - 31/03/2012 20:06
Avatar van christophe195 Lid wat staat er in de database ?
dan weten we meteen waar het fout gaat ;)
Offline GroundZero - 01/04/2012 00:29
Avatar van GroundZero Lid alles wat je nodig hebt staat in de code, database is niet echt relevant toch???
maar in de database staat in:

activated INT 0 (of) 1
id INT

als de checkbox NIET is aangevinkt is hij empty, dus zou hij 0 moeten geven in mijn code. Echter klopt er allemaal niks van, terwijl het (code gezien) wel zou moeten kloppen 
Offline christophe195 - 01/04/2012 09:14
Avatar van christophe195 Lid de database is heel belangrijk " en dan heb ik het over de inhoud".
daar staat in of het item is aan of uitgezet.

ik wil de inhout van die database zodat ik kan zien of het in de database juist zit.
zo ja --> fout bij het weergeven
zo nee --> fout bij het ingeven.

( zoeiets bespaart ons een hoop werk ;) )
Offline vinTage - 01/04/2012 10:10
Avatar van vinTage Nieuw lid Als je een checkbox niet aanvinkt, wordt hij ook niet gepost.
Als je dus wilt dat een uitgevinkte cb en bijbehorende kolom wilt updaten, dan moet je dus zelf de waarde 0 meegeven.

dus:
$cb= isset($_POST['wich']) ? 1 : 0;

versus jouw empty
Bedankt door: GroundZero
Offline GroundZero - 01/04/2012 14:16 (laatste wijziging 01/04/2012 16:26)
Avatar van GroundZero Lid Nee, krijg het echt niet werkend helaas.

  1. function showPaymentMethods(){
  2. echo '<table width="600px">
  3. <thead>
  4. <th width="10px"><img src="images'.DIRECTORY_SEPARATOR.'delete.png" /></th>
  5. <th width="10px"><img src="images'.DIRECTORY_SEPARATOR.'activated.png" /></th>
  6. <th>Logo</th>
  7. <th>Naam</th>
  8. <th>Standaardkosten</th>
  9. </thead>
  10. <tbody>';
  11.  
  12. $query = mysql_query('SELECT id, title, cost, logo, activated FROM payment_options');
  13. while($fetch = mysql_fetch_assoc($query))
  14. {
  15. echo '<tr>
  16. <td><input type="checkbox" name="delete[]" value="'.$fetch['id'].'" /></td>
  17. <td>
  18. <input type="checkbox" name="check[]" value="1"/>
  19. <input type="hidden" name="which[]" value="'.$fetch['id'].'" />
  20. </td>
  21. <td><img src="uploads'.DIRECTORY_SEPARATOR.$fetch['logo'].'" alt="'.$fetch['logo'].'" /></td>
  22. <td>'.$fetch['title'].'</td>
  23. <td><input type="text" name="price" value="'.number_format($fetch['cost'], 2, ',', '').'" /></td>
  24. </tr>';
  25. }
  26.  
  27. echo '</tbody></table>';
  28. }


  1. $i = 0;
  2. foreach($_POST['which'] as $id)
  3. {
  4. $cb = isset($_POST['check'][$i]) ? 1 : 0;
  5.  
  6. mysql_query('UPDATE payment_options
  7. SET
  8. activated = "'.mysql_real_escape_string($cb).'"
  9. WHERE
  10. id = "'.mysql_real_escape_string($id).'"');
  11. $i++;
  12. }


Er zijn 2 checkboxes.

Ik vind beide aan : werkt!!!
Ik vind niks aan : werkt!!!
Ik vind de 1e aan en de 2e niet : werkt!!!
Ik vind de 1e nit aan, de 2e wel : werkt niet!!!

Iemand enig idee?
Offline vinTage - 01/04/2012 21:58 (laatste wijziging 01/04/2012 22:44)
Avatar van vinTage Nieuw lid jamaar jij checked op check0, check1, check2, etc, volgens:
Citaat:
$cb = isset($_POST['check'][$i]) ? 1 : 0;


Maar je maakt ze niet aan volgens:
Citaat:
<input type="checkbox" name="check[]" value="1"/>

In bovenstaande moet je nog een getalletje toevoegen he..

Wat ik eerder zei werkt perfect (niet met empty), maar voorwaarde is wel dat de namen kloppen 

EDIT


Je post nog eens doorgelezen en ik vrees dat ik je niet helemaal goed heb begrepen.
Onderstaande is denk ik wat je wel bedoeld ?

  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. for($i = 0; $i < 4; $i++)
  5. {
  6. echo isset($_POST['wich'][$i]) ? 1 : 0;
  7. echo '<br />';
  8. }
  9. }
  10. ?>
  11. <form method="post" action=''>
  12. <input name="wich[0]" type="checkbox" /><br />
  13. <input name="wich[1]" type="checkbox" /><br />
  14. <input name="wich[2]" type="checkbox" /><br />
  15. <input name="wich[3]" type="checkbox" /><br />
  16. <input name="" type="submit" />
  17. </form>
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.241s