login  Naam:   Wachtwoord: 
Registreer je!
 Forum

array updaten in database.

Offline Babak - 23/03/2009 11:16
Avatar van BabakMySQL interesse Hallo allemaal,

Ik zit met een probleem, heb er echt veel tijd ingestoken maar kan maar niet bedenken hoe ik het wél moet doen.

Ik heb een kolom in mijn database: Crimes, varchar, 0,0,0,0,0

De 5 nullen staan ieders voor een crime, en die waardes houden de slagingspercentage in.

Ik heb zelf al een klein begin gemaakt door een form te maken die de crimeid invoert, dus een form met 5 radio buttons, value 0 t/m 4. Als een iemand crime1 aanklikt, value = 0. Maar ik kom maar niet verder, hoe kan ik het dan updaten?

Ik hoop dat jullie het snappen.

mvg

12 antwoorden

Gesponsorde links
Offline ArieMedia - 23/03/2009 11:19
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Je kan ook gewoon 1 veld maken en dan alles via PHP.net: serialize en PHP.net: unserialize wegschrijven in de database. En via je script kan je dit updaten ;). Je leest gewoon de array uit en doet (+/- een random getal)
Offline Babak - 23/03/2009 11:19 (laatste wijziging 23/03/2009 11:20)
Avatar van Babak MySQL interesse Komt er dan bij elke 0 iets bij? Of alleen bij 1tje? Kan je misschien een klein voorbeeldje geven?
Offline Rik - 23/03/2009 11:22
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Laat even zien wat voor code je nu al hebt, dat is makkelijker. 

Na het verzenden van het formulier kun je met PHP.net: implode de getallen weer aan elkaar plakken met komma's ertussen en dan weer in de database zetten.

Natuurlijk is het beter genormaliseerd als je die waarden in aparte kolommen / tabellen zet.

Offline Babak - 23/03/2009 11:23
Avatar van Babak MySQL interesse Ik heb nu dit: http://plaatscode.be/121763/

Je ziet dus al wel dat ik die waardes eruithaal, en kijk wanneer eentje slaagt. Maar ik kom maar niet verder...
Offline ArieMedia - 23/03/2009 11:36 (laatste wijziging 23/03/2009 11:37)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Denk dat ik je in mn vorige comment niet helemaal begreep, je wilt dus checken welke box is aangeklikt en de slagingspercentage is.

Ik neem aan dat je alles al uit de database hebt uitgehaald, dus ik begin met het maken van de array in de radio-button geef je de waarde mee

  1. <input type="radio" name="crime" value="1" />
  2. <input type="radio" name="crime" value="2" />


  1. $array = unserialize($veld);
  2. /* VB van 1 crime"item"
  3. $array[0] = 15;
  4. */
  5. if(isset($_POST['crime']) && isset($_POST['docrime']))
  6. {
  7. $slagingsperc = $array[$_POST['crime']];
  8. $lukt = rand(0,100);
  9. if($lukt > $slagingsperc) { die('mislukt'); }
  10. else { die('gelukt'); }
  11. }
Offline Babak - 23/03/2009 11:39
Avatar van Babak MySQL interesse Denk dat ik nog niet echt duidelijk genoeg ben geweest, sorry.

Nog een keer:

Ik ben nu op het stuk aanbeland waar ik die 5 nullen moet updaten, hoe doe ik dit?

Dat is mijn probleem, het opvragen van de % dus van de 5 nullen is al gelukt. En ook om te kijken welke van de 5 nullen iemand selecteert. Het gaat nu puur om het updaten van die 5 nullen nadat een crime is gelukt.

Dus: Iemand voert een crime uit, als hij slaag (en als hij niet slaagt) worden die 5 nullen ge-update.. met een rand(1,2).
Offline ArieMedia - 23/03/2009 11:48 (laatste wijziging 23/03/2009 11:51)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
  1. /* ik neem aan dat je al alles uit de database hebt gehaald */
  2. $array = unserialize($veld);
  3. /* $array is nu dus een array en bevat de slaginspercentages
  4. VB:
  5. $array[0] = 15;
  6. $array[1] = 6;
  7. $array[2] = 1; ect..
  8. Opdaten crime 1 en 2:
  9. */
  10. $array[0] = $array[0] + rand(1, 2);
  11. $array[1] = $array[1] + rand(1, 2);
  12. serialize($array);
  13. // en nu nog wegschrijven
Offline Babak - 23/03/2009 11:54
Avatar van Babak MySQL interesse Heb nu dit:

  1. <?
  2.  
  3. $fetch=mysql_fetch_array(mysql_query("SELECT * FROM members WHERE `id`='$userid'"));
  4. $crimes=explode(",",$fetch['crimes']);
  5. $lastcrime = $fetch['crimetime'];
  6.  
  7. if(isset($_POST['submit'])){
  8.  
  9.  
  10. $crimeid=$_POST['crime'];
  11. if($crimeid==""){ echo "Please select a crime!";
  12. }
  13. else{
  14. $crimechance=$crimes[$crimeid];
  15. $success=mt_rand(0,100);
  16.  
  17. if($crimechance > $success){
  18. echo "Sucess!";
  19. }
  20. else{
  21.  
  22. echo "Fail!";
  23.  
  24. $array[0] = $crimes[0] + rand(1, 2);
  25. $array[1] = $crimes[1] + rand(1, 2);
  26. $array[2] = $crimes[2] + rand(1, 2);
  27. $array[3] = $crimes[3] + rand(1, 2);
  28. $array[4] = $crimes[4] + rand(1, 2);
  29.  
  30.  
  31. serialize($array);
  32.  
  33. mysql_query("UPDATE members SET `crimes`='$array'");
  34.  
  35. }
  36.  
  37. }
  38. }
  39.  
  40.  
  41. ?>


Maar dat werkt nog niet, hij update ze niet.. krijg nu iets heel aparts ipv cijfers
Offline ArieMedia - 23/03/2009 12:06
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Dat klopt, bovenin het script moet je het nog unserialzen, Dus

$crimes= unserialize($velduitdetabel);

en dit gedeelte

  1. $array[0] = $crimes[0] + rand(1, 2);
  2. $array[1] = $crimes[1] + rand(1, 2);
  3. $array[2] = $crimes[2] + rand(1, 2);
  4. $array[3] = $crimes[3] + rand(1, 2);
  5. $array[4] = $crimes[4] + rand(1, 2);
  6.  
  7. // kan ook zo
  8. $i = 0;
  9. foreach($crimes as $crime)
  10. {
  11. if($crime < 99)
  12. {
  13. $array[$i] = $crime + rand(1,2);
  14. }
  15. $i++;
  16. }

Zo kan je later nog weer crimes toevoegen
Offline Babak - 23/03/2009 12:12
Avatar van Babak MySQL interesse Ik heb nu bovenaan gezet: $crimes =unserialize($crimes);

Maar toch doet ie het niet...
Offline ArieMedia - 23/03/2009 13:33 (laatste wijziging 23/03/2009 14:01)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
al eens print_r($crimes); geprobeerd?

na de unserialize natuurlijk..

krijg je nu een array te zien?
Offline Rik - 23/03/2009 14:03
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Misschien staat er nu wel gewoon onzin in je database. Zet daar anders eens handmatig de geserializde versie van de 0 array in.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.243s