login  Naam:   Wachtwoord: 
Registreer je!
 Forum

SQL credits afschrijven en hints toevoegen

Offline Lucius - 03/11/2012 14:00 (laatste wijziging 03/11/2012 14:01)
Avatar van LuciusNieuw lid Het is de bedoeling dat er 3 credits worden afgeschreven en 3 hints worden toegevoegd. Dit gebeurd wel, maar hij schoot qua credits continue onder 0.

Nu heb ik dit probleem opgelost, maar hij weigert nu volledig dienst om credits af te schrijven en hints toe te voegen.

In de Processes staat

  1. function add_hints3($process) {
  2.  
  3. $username = $_SESSION['username'];
  4.  
  5. $sql = $this->query("SELECT * FROM ".DBTBLE." WHERE username = '$username'");
  6. $num_rows = count($sql);
  7. $credits = $this->create_show_credits($result, $num_rows);
  8.  
  9. if ($credits >= '2' && $num_rows > 1 ){
  10. $sql = $this->query("UPDATE cw_users SET hints = hints + 3 WHERE username = '".$username."'");
  11. $sql = $this->query("UPDATE cw_users SET credits = credits - 3 WHERE username = '".$username."'");
  12. }
  13.  
  14. else{
  15. return "Niet genoeg credits om dit te kopen.";
  16.  
  17. }


word opgeroepen met:

  1. <?
  2. include_once 'include/processes.php';
  3. $Login_Process = new Login_Process;
  4. $Login_Process->add_hints3();
  5. header( "Location: creditmenu.php" );
  6. ?>

5 antwoorden

Gesponsorde links
Offline Martijn2008 - 03/11/2012 19:08 (laatste wijziging 03/11/2012 19:09)
Avatar van Martijn2008 PHP beginner Hi,

Ik zie een aantal mogelijke oorzaken:
- in methode 'add_hints3' wordt een parameter (process) meegegeven die vervolgens niet wordt gebruikt;
- in de methode op lijn 7 staat een variabele genaamd (result) die niet is gedefinieerd en geïnitialiseerd;
- de inhoud van variabele credits is onbekend na het uitvoeren van methode 'create_show_credits'.
Offline Lucius - 03/11/2012 23:39
Avatar van Lucius Nieuw lid - Wat gebeurd er op het moment dat ik ook de process weg haal?
- Mmm, daar heb ik overheen gekeken.
- De create_show_credits word ergens anders gedefinieerd.
Offline Giant - 04/11/2012 02:09
Avatar van Giant PHP beginner
Lucius schreef:
- Wat gebeurd er op het moment dat ik ook de process weg haal?


Dan zal je code hoogst waarschijnlijk weer gaan werken. Op dit moment gooit PHP een error uit in de trand van: "method add_hints3 expects 1 argument, 0 given!"...
Offline Lucius - 04/11/2012 12:13 (laatste wijziging 04/11/2012 12:13)
Avatar van Lucius Nieuw lid
  1. function add_hints3 (){
  2.  
  3. $username = $_SESSION['username'];
  4.  
  5. $sql = $this->query("SELECT * FROM ".DBTBLE." WHERE username = '$username'");
  6. $num_rows = count($sql);
  7. $credits = $this->create_show_credits($num_rows);
  8.  
  9. if ($credits >= '2' && $num_rows > 1 ){
  10. $sql = $this->query("UPDATE cw_users SET hints = hints + 3 WHERE username = '".$username."'");
  11. $sql = $this->query("UPDATE cw_users SET credits = credits - 3 WHERE username = '".$username."'");
  12. }
  13.  
  14. else{
  15. return "Niet genoeg credits om dit te kopen.";
  16.  
  17. }
  18.  
  19. }


Met als create_show_credits:
  1. function show_credits(){
  2. $username = $_SESSION['username'];
  3.  
  4. $sql = $this->query("SELECT * FROM ".DBTBLE." WHERE username = '$username'");
  5. $result = $sql['sql'];
  6. $num_rows = $sql['num_rows'];
  7. $this->create_show_credits($result, $num_rows);
  8.  
  9.  
  10. }
  11.  
  12. function create_show_credits($result, $num_rows) {
  13.  
  14. for($i=0; $i<$num_rows; $i++){
  15. $userid=mysql_result($result,$i,"userid");
  16. $credits=mysql_result($result,$i,"credits");
  17.  
  18.  
  19. echo $credits;
  20.  
  21.  
  22.  
  23.  
  24. }}


Weigert hij nog altijd dienst....
Offline Gerard - 04/11/2012 22:06
Avatar van Gerard Ouwe rakker Ik vind de code nogal moeilijk te volgen zonder de hele classes te hebben. Ik zie namelijk dat je een query uitvoert met een door jouzelf geschreven query methode. Daarop voer je dan een count uit, wat mij doet vermoeden dat jouw query() methode de resultaten al vertaald naar een array o.i.d.

De telling geef je dan weer door aan create_show_credits(), die helemaal geen integer verwacht maar een mysql resource en als tweede argument de telling. Die laatste is niet nodig, omdat je gewoon door een mysql resource (het result van je query) kan loopen met een while(). Als je alleen maar gebruik maakt van mysql_result, dan zal je het inderdaad wel moeten.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.263s