Janos: Variable bleibt null

Hallo zusammen.

Ich habe ein seltsames Problem... und hoffe, es vernünftig genug beschreiben zu können.

Ersteinmal die Methode aus der Klasse 'user'

  public function countUsernames($accid) {  
    $this->count = 0;  
  
    $query =  
      mysql_query("SELECT `user_id` FROM `ze_user` WHERE `user_acc_id` = '$accid'");  
    while($row = mysql_fetch_object($query)){  
      $this->count++;  
    }  
    return $this->count;  
  }

Die ist nicht mein Problem - sie funktioniert, habe es an anderer Stelle getestet.

Mein Problem ist viel eher beim AJAX updater, der via JSON antwortet.
Hier der Problempart:

if($ZE_USER->countUsernames($accid) >= $ZE_SETT->max_nicks){  
      $confirm_color = "#990000";  
      $confirm_state = "Maximale Anzahl Namen erreicht.";  
      unset($name_valid); }

und weiter unten dann

    $json .= '"id": "1",  
              "color": "'.$confirm_color.'",  
              "state": "'.$confirm_state.'"  
                },';

Das Problem ist nun folgendes... offensichtlich, liefert countUsernames() keinen wert zurück, ist also null und die Abfrage trifft nie zu, selbst wenn sie zutreffen sollte.

Ich hatte dann aus Spaß an der Freude mir das mal direkt ausgeben lassen.

    $json .= '"id": "1",  
              "color": "'.$confirm_color.'",  
              "state": "'.$ZE_USER->countUsernames($accid).'"  
                },';

liefert mir dann den korrekten Wert. Der Aufruf der Methode funktioniert also.

$test = $ZE_USER->countUsernames($accid);  
      if($test >= $ZE_SETT->max_nicks){  
      $confirm_color = "#990000";  
      $confirm_state = "Maximale Anzahl Namen erreicht.";  
      unset($name_valid); }

und

    $json .= '"id": "1",  
              "color": "'.$confirm_color.'",  
              "state": "'.$test.'"  
                },';

bzw

    $json .= '"id": "1",  
              "color": "'.$confirm_color.'",  
              "state": "'.$confirm_state.'"  
                },';

bleibt $test jedoch wieder null und damit funktioniert auch die Abfrage wieder nicht.

Ich bin mit meinem Latein am Ende und hoffe, jemand hat einen Tipp, der mir weiter hilft.

Danke schonmal.

  1. Hi,

    $query =
          mysql_query("SELECT user\_id FROM ze\_user WHERE user\_acc\_id = '$accid'");
        while($row = mysql_fetch_object($query)){
          $this->count++;

    Sowas ich hochgradiger Unfug.
    Mache dich mit Aggregatfunktionen wie COUNT vertraut.

    Das Problem ist nun folgendes... offensichtlich, liefert countUsernames() keinen wert zurück, ist also null und die Abfrage trifft nie zu, selbst wenn sie zutreffen sollte.

    Ich hatte dann aus Spaß an der Freude mir das mal direkt ausgeben lassen.

    $json .= '"id": "1",

    "color": "'.$confirm_color.'",
                  "state": "'.$ZE_USER->countUsernames($accid).'"
                    },';

    
    >   
    > liefert mir dann den korrekten Wert. Der Aufruf der Methode funktioniert also.  
      
    Es funktioniert also „offensichtlich“ nicht, aber es funktioniert - das ist ja tolles Debugging ...  
      
    
    > ~~~php
    
        $json .= '"id": "1",  
    
    >               "color": "'.$confirm_color.'",  
    >               "state": "'.$test.'"  
    >                 },';
    
    

    bzw

    $json .= '"id": "1",

    "color": "'.$confirm_color.'",
                  "state": "'.$confirm_state.'"
                    },';

    
    >   
    > bleibt $test jedoch wieder null und damit funktioniert auch die Abfrage wieder nicht.  
      
    Du hast hoffentlich das error\_reporting auf E\_ALL und display\_errors auf 1 stehen?  
    Wie sieht der erzeugte JavaScript-Code aus?  
      
    MfG ChrisB  
      
    
    -- 
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    
    1. Danke ^^

      Count, so hieß das, genau. Danke dafür ^^

      {"name": {"creation":[ {"id": "1","color": "#009900","state": "0"},]'}}

      Ist die Antwort, wenn ich es mit $test ausgeben  lasse, sprich den Fehlerhaften Weg gehe.

      Du hast hoffentlich das error_reporting auf E_ALL und display_errors auf 1 stehen?

      Zu meiner Schande muss ich gestehen - nein. Aber wird gleich mal erledigt.