login  Naam:   Wachtwoord: 
Registreer je!
 Forum

update query (Opgelost)

Offline ArcanA - 24/01/2009 18:33 (laatste wijziging 24/01/2009 18:36)
Avatar van ArcanAPHP beginner Hallo,

Ik vroeg me af hoe ik meerdere query's update naarmate de speler het invult.

Ik heb een form gemaakt en een while waauit ik enkele spelers haal via database, met dit script zou ik alle spelers hun score moeten kunnen aanpassen, je hebt dus per gebruiker een input voor de score te verhogen. alles werkt, behalve die query omdat ik niet egt snap welke gegevens ik erin moet zetten.

  1. <?php
  2. if ( isset ( $_GET['edit'] ) ) {
  3. echo '<p><span class="BLACK">Hier kunt u scores van de gebruikers wijzigen.</span></p>';
  4.  
  5. echo '
  6. <table width="100%">
  7. <tr>
  8. <td><b><span class="GREEN">Gebruikersnaam</span></b></td>
  9. <td><b><span class="GREEN">Score</span></b></td>
  10. </tr>
  11. ';
  12.  
  13. $sQuery = "SELECT * FROM uitslagen ORDER by score DESC";
  14. $sResult = mysql_query($sQuery);
  15. while ($gebruikers = mysql_fetch_assoc($sResult)) {
  16. echo '
  17. <tr>
  18. <td><span class="BLACK">'.$gebruikers['gebruikersnaam'].'</span></td>
  19. <td>
  20. <form method="POST">
  21. <span class="BLACK">+</span> <input type="text" name="score" value="0">
  22. </td>
  23. </tr>
  24. ';
  25. }
  26. echo '<tr><td><input type="submit" name="submitedit" value="wijzig"></td></tr>';
  27. echo '</table>';
  28.  
  29. if ( isset ( $_POST['submitedit'] ) ) {
  30. if ( empty ( $_POST['score'] ) ) {
  31. echo '<p><span class="BLACK">U moet invullen met hoeveel u de score wilt verhogen</span></p>';
  32. }
  33. else {
  34. mysql_query("UPDATE `uitslagen` SET `score` = `score` + '".$_POST['score']."' WHERE gebruikersnaam = '".$gebruikers['gebruikersnaam']."' ");
  35. echo '<p><span class="BLACK">U heeft de gebruiker(s) hun score gewijzigd.</span></p>';
  36. }
  37. }
  38. }
  39. ?>

14 antwoorden

Gesponsorde links
Offline roberini - 24/01/2009 18:38
Avatar van roberini HTML beginner Dit kan zo.

Voorbeeld:
  1. if ($_POST['lala'] ) {
  2. mysql_query("UPDATE `test1` SET`test2` = `test2` + `test3`");
  3. mysql_query("UPDATE `test4` SET`test5` = `test5` + `test6`");
  4. }


gewoon onder elkaarzetten, dan kan je ze allebei updaten
Offline ArcanA - 24/01/2009 18:41
Avatar van ArcanA PHP beginner ja oké, en hoe weet ik hoeveel query's ik moet uitvoeren?
Offline GijsB - 24/01/2009 18:43
Avatar van GijsB Nieuw lid Waarom het niet werkt is vrij simpel. Je gebruikt in je query nog een variabele van je al afgesloten while. Deze variabele moet je dus eerst opslaan in een gewone variabele en die dan in je query gebruiken.

Verder zul je wanneer je iets submit ook wel de gebruiker moeten meegeven om dit goed te laten werken.

Ik hoop dat je hiermee wat verder kunt.

Concreet moet je dus het volgende doen:

Zorgen dat je de gebruikersnaam die bij de aangepaste score hoort meegeeft in je formulier. Die kun je dan weer in je query op dezelfde manier gebruiken zoals je gedaan hebt met $_POST['score'].
Offline roberini - 24/01/2009 18:43
Avatar van roberini HTML beginner Dat weet ik niet. Als jij alleen score wil updaten, hoef je er maar een. Maar als je score en geld bijvoorbeeld wilt updaten, dan moet je dat doen.
Offline GijsB - 24/01/2009 18:46
Avatar van GijsB Nieuw lid
roberini schreef:
Dat weet ik niet. Als jij alleen score wil updaten, hoef je er maar een. Maar als je score en geld bijvoorbeeld wilt updaten, dan moet je dat doen.


Zijn basisstructuur is al fout. Hij gebruikt een variabele uit zijn while zomaar buiten zijn while. Maar buiten zijn while is $gebruikers['gebruikersnaam'] niet gedefinieerd. Daarnaast moet hij zoals ik al eerder zei eerst zorgen dat hij desbetreffende gebruikersnaam met het formulier meestuurt.
Offline roberini - 24/01/2009 18:47
Avatar van roberini HTML beginner
GijsB schreef:
[..quote..]

Zijn basisstructuur is al fout. Hij gebruikt een variabele uit zijn while zomaar buiten zijn while. Maar buiten zijn while is $gebruikers['gebruikersnaam'] niet gedefinieerd. Daarnaast moet hij zoals ik al eerder zei eerst zorgen dat hij desbetreffende gebruikersnaam met het formulier meestuurt.


Daar heb je gelijk in, maar dat had ik nog geeneens gezien toen ik antwoorde:P
Offline ArcanA - 24/01/2009 18:51
Avatar van ArcanA PHP beginner GijsB : Het werkt bedankt, had idd die while te vroeg afgesloten, foutje dat iedereen wel eens kan maken, die gebruikersnaam hoef ik niet eens in een INPUT te zetten, wat hij update zo ook al 

Bedankt!
Offline GijsB - 24/01/2009 18:53
Avatar van GijsB Nieuw lid
ArcanA schreef:
GijsB : Het werkt bedankt, had idd die while te vroeg afgesloten, foutje dat iedereen wel eens kan maken, die gebruikersnaam hoef ik niet eens in een INPUT te zetten, wat hij update zo ook al 

Bedankt!


Ja, als je je while langer open laat moet dat inderdaad niet. Dat kan al een oplossing geven. Maar als ik met een bestandje van 500 scriptregels werk, wat wel regelmatig gebeurt dan sluit ik liever alles zo vroeg mogelijk af een geef ik de waarde op een andere manier mee. Hoe meer while, if, ... lussen er nog openstaan hoe meer conflicten er kunnen ontstaan die het script niet laten werken. Ga dan de fout maar eens zoeken ;)
Offline ArcanA - 24/01/2009 19:07 (laatste wijziging 24/01/2009 19:08)
Avatar van ArcanA PHP beginner Hij werkt nog altijd niet, damn..
Het is een Event die start om 20:00 en het werkt nog altijd niet (admin gedeelte)

  1. <?php
  2.  
  3. if ( isset ( $_GET['edit'] ) ) {
  4. echo '<p><span class="BLACK">Hier kunt u scores van de gebruikers wijzigen.</span></p>';
  5.  
  6. echo '
  7. <table width="100%">
  8. <tr>
  9. <td><b><span class="GREEN">Gebruikersnaam</span></b></td>
  10. <td><b><span class="GREEN">Score</span></b></td>
  11. </tr>
  12. ';
  13.  
  14. $sQuery = "SELECT * FROM uitslagen ORDER by score DESC";
  15. $sResult = mysql_query($sQuery);
  16. while ($gebruikers = mysql_fetch_assoc($sResult)) {
  17. echo '
  18. <tr>
  19. <td><span class="BLACK">'.$gebruikers['gebruikersnaam'].'</span></td>
  20. <td>
  21. <form method="POST">
  22. <span class="BLACK">+</span> <input type="text" name="score" value="0">
  23. </td>
  24. </tr>
  25. ';
  26.  
  27. if ( isset ( $_POST['submitedit'] ) ) {
  28.  
  29. mysql_query("UPDATE `uitslagen` SET `score` = `score` + '".$_POST['score']."' WHERE gebruikersnaam = '".$gebruikers['gebruikersnaam']."' ");
  30.  
  31. echo '<p><span class="BLACK">U heeft de gebruiker(s) hun score gewijzigd.</span></p>';
  32.  
  33.  
  34. }
  35.  
  36. }
  37.  
  38.  
  39. echo '<tr><td><input type="submit" name="submitedit" value="wijzig"></td></tr></form>';
  40. echo '</table>';
  41. }
  42. ?>
Offline GijsB - 24/01/2009 19:17
Avatar van GijsB Nieuw lid Je gaat toch echt wel je gebruikersnaam met het formulier moeten meegeven hoor. Het is vrij simpel. $gebruikers['gebruikersnaam'] bevat dus op dit moment de laatste gebruiker die in je while lus gestopt is. Dus diegene met de laagste score. Daarnaast heb ik ook al eens gekeken, je hebt even veel inputs met de naam score als gebruikers. Je gaat toch echt iets van een ID moeten meegeven aan dat input field, en de gebruiker moeten meegeven met je formulier. Het kan hier gewoon niet anders.
Offline ArcanA - 24/01/2009 19:29
Avatar van ArcanA PHP beginner Nu heb ik het zo .... maar dat werkt nog altijd niet.
Enig idee wat ik nog kan doen?

  1. <?php
  2. if ( isset ( $_GET['edit'] ) ) {
  3. echo '<p><span class="BLACK">Hier kunt u scores van de gebruikers wijzigen.</span></p>';
  4.  
  5. echo '
  6. <table width="100%">
  7. <tr>
  8. <td><b><span class="GREEN">Gebruikersnaam</span></b></td>
  9. <td><b><span class="GREEN">Score</span></b></td>
  10. </tr>
  11. ';
  12.  
  13. $sQuery = "SELECT * FROM uitslagen ORDER by score DESC";
  14. $sResult = mysql_query($sQuery);
  15. while ($gebruikers = mysql_fetch_assoc($sResult)) {
  16. echo '
  17. <tr>
  18. <td><span class="BLACK">'.$gebruikers['gebruikersnaam'].'</span></td>
  19. <td>
  20. <form method="POST">
  21. <input type="text" name="user" value="'.$gebruikers['gebruikersnaam'].'">
  22. <span class="BLACK">+</span> <input type="text" name="score" value="0">
  23. </td>
  24. </tr>
  25. ';
  26.  
  27. if ( isset ( $_POST['submitedit'] ) ) {
  28. if ( $_POST['score'] > 0 )
  29. {
  30. mysql_query("UPDATE `uitslagen` SET `score` = `score` + '".$_POST['score']."' WHERE gebruikersnaam = '".$_POST['user']."' ");
  31.  
  32. echo '<p><span class="BLACK">U heeft de gebruiker(s) hun score gewijzigd.</span></p>';
  33. }
  34. else
  35. {
  36. echo 'Niet geupdate:"'.$_POST['user'].'';
  37. }
  38.  
  39. }
  40. }
  41.  
  42. echo '<tr><td><input type="submit" name="submitedit" value="wijzig"></td></tr></form>';
  43. ec
  44. ho '</table>';
  45. }
  46. ?>
Offline Ibrahim - 24/01/2009 19:41
Avatar van Ibrahim PHP expert Wat werkt er dan nog niet aan ? Meer informatie is handig voor het begrijpen van je probleem.
Offline GijsB - 24/01/2009 19:59 (laatste wijziging 24/01/2009 20:00)
Avatar van GijsB Nieuw lid
  1. <input type="text" name="user" value="'.$gebruikers['gebruikersnaam'].'">
  2.  
  3. <span class="BLACK">+</span> <input type="text" name="score" value="0">


Dit werkt nu niet. Lijkt me logisch 

als hij 100 gebruikers heeft. Heeft hij 100 velden 'user' en 100 velden 'score'

Dus als hij er eentje aanpast staat er nergens welke hij aanpast. Elke veld in je formulier moet wel een unieke naam hebben he!
Offline ArcanA - 24/01/2009 20:12
Avatar van ArcanA PHP beginner Ik heb het anders opgelost, elke knop een wijzig met daar de get in van de gebruiker. Daarna een veld een via een query de gebruiker uit de get gehaalt.

Mvg,
Niels
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.236s