[Variablen] falsche variabeln ausgabe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Variablen] falsche variabeln ausgabe

    Ich habe da folgendes Problem, aus einer Datenbank frage ich den wert regstatus ab.
    Je nach ergebnis soll $restatanz einen inhalt erhalten jedoch egal wie ich es drehe es es wird immer nur der wert aus der Variable 0 übergeben.

    Die beiden echo anweisungen sind nur zur kontrolle drinnen und übergeben mir auch die richtigen werte. Also laut dem wäre regstatus=1

    PHP-Code:
            if(!$mode)
            {
                    
    $regstat $db_zugriff->query("SELECT regstatus FROM
    rs"
    .$n."_user_table WHERE userid = '$user_id'");
                    while(
    $row $db_zugriff->fetch_array($regstat))
                    echo 
    $row['regstatus'];
                    echo 
    $user_id;

                     {
                      if(
    $row['regstatus']==0)
                            
    $regstatanz"nicht freigeschaltet";

                      if (
    $row['regstatus']==1)
                      {
                          
    $regstatanz "freigeschaltet";
                      }
                      elseif(
    $row['regstatus']==2)
                      {
                             
    $regstatanz "gespeert";
                      }
                    }
            } 
    Das ist das stk aus einer anderen Datei das für die ausgabe zuständig ist.

    PHP-Code:
                  <tr
                    <
    td align="center">&nbsp;</td>
                    <
    td><font face="{font}" size=2><b><a href="profile.php?mode=regstatus$session">» 
                      Sie sind im Registrierungsystem 
                       $regstatanz
                      
    </a></b><br>
                      </
    font></td>
                  </
    tr
    Jemand eine Idee was ich da jetzt seit 2 Tagen dezent übersehe ?
    Den Wind kann man nicht ändern, aber die Segel richtig setzen.

  • #2
    Ich habe das Gefühl, dass du nicht den Realcode postest, denn so kann
    die While-Schleife garnicht funz. Also bitte, wenn man dir helfen soll,
    dann sollst du auch das posten, was wirklich ist. Ausserdem, was soll
    denn das hier:
    <a href="profile.php?mode=regstatus$session">
    so wie du postest, muss man von reinem HTML-Sektion ausgehen. Ist
    das so?

    Kommentar


    • #3
      Also das zuständige stk habe ich real mit copy und past hier rein gepostet (nur einen Zeilenumbruch bei der sql abfrage zwecks lesbarkeit)

      OK also das system Arbeitet template basierend und die sind html ja.
      und bis auf dieses 1 teil funktioniert es ganau so.


      Wieso kann meine schleife nicht funktionieren ?
      Den Wind kann man nicht ändern, aber die Segel richtig setzen.

      Kommentar


      • #4
        Wieso kann meine schleife nicht funktionieren ?
        klar, die schleife funktioniert bestimmt.
        PHP-Code:
        while($row $db_zugriff->fetch_array($regstat))
          echo 
        $row['regstatus']; 
        diese schleife

        beim letzten while($row=...) ist $row false, somit müßte $regstatanz undefined sein? leer? anders besetzt?

        switch...
        E_ALL...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          mit der userid als bedingung solltest du noch nur maximal einen datensatzbekommen oder?
          dann brauchst du doch gar keine schleife
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Original geschrieben von Abraxas
            Wieso kann meine schleife nicht funktionieren ?
            Ähm.. sorry, die { vor dem 1. if ist etwas verwirrend .

            OK versuch mal mit if (trim($row...)=='0') uws.
            Ist switch hier nicht besser? ausserdem wenn userid in der Tabelle ne Zahl
            ist dann lass die ' weg.

            Kommentar


            • #7
              PHP-Code:
              //funktioniert das echt?
                
              while($irgendwas)
                              echo 
              $ausgabe;
                               {
                         
              //irgendwas
                                
              }

              //dacht immer eine while muss so geschrieben werden wenn mit Klammern
                
              while($irgendwas)
                          {
                        echo 
              $ausgabe;
                         
              //irgendwas
                                

              mfg
              marc75

              <Platz für anderes>

              Kommentar


              • #8
                Original geschrieben von marc75
                [PHP]
                //funktioniert das echt?
                [...]

                //dacht immer eine while muss so geschrieben werden wenn mit Klammern
                klar "funktioniert" das - nur das ergebnis ist u.U. ein ganz anderes, als das erwünschte.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  ok, habs mal nachgestellt, das wirkt sich bei meinem test dann in eine Endlosschleife aus, das heisst das es daduch nicht in die {} geht, was ja eigentlich logisch ist.

                  PHP-Code:
                  <?php
                  $test 
                  10;
                  $testb 'b';
                  $count 0;
                  while(
                  $count $test)
                  echo 
                  $testb;
                  {
                  echo 
                  $count;
                  $count++;
                  }
                  ?>
                  mfg
                  marc75

                  <Platz für anderes>

                  Kommentar


                  • #10
                    gut erkannt, dass passiert Abraxas aber nicht, weil seine Bedingunge einen Funktionsaufruf enthält,dessen Rückgabewert ausgewertet wird
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Original geschrieben von mrhappiness
                      gut erkannt, dass passiert Abraxas aber nicht, weil seine Bedingunge einen Funktionsaufruf enthält,dessen Rückgabewert ausgewertet wird
                      richtig, er sperrt aber seine if bedingungen von der while aus.

                      PHP-Code:
                      if(!$mode)
                              {
                                      
                      $regstat $db_zugriff->query("SELECT regstatus FROM
                      rs"
                      .$n."_user_table WHERE userid = '$user_id'");
                                      while(
                      $row $db_zugriff->fetch_array($regstat))
                                      echo 
                      $row['regstatus'];
                                      echo 
                      $user_id;

                                       {  
                      //<- mit dieser Klammer, hier endet seine While durch die echo ausgabe
                                        
                      if($row['regstatus']==0)
                                              
                      $regstatanz"nicht freigeschaltet";

                                        if (
                      $row['regstatus']==1)
                                        {
                                            
                      $regstatanz "freigeschaltet";
                                        }
                                        elseif(
                      $row['regstatus']==2)
                                        {
                                               
                      $regstatanz "gespeert";
                                        }
                                      }
                              } 
                      mfg
                      marc75

                      <Platz für anderes>

                      Kommentar


                      • #12
                        nicht ganz

                        ohne klammerung wird nur der nächste befehl innerhalb der schleife ausgeführt
                        das wäre also echo $row['regstatus']

                        auch das echo $user_id ist schon außerhalb der schleife
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Original geschrieben von marc75
                          das heisst das es daduch nicht in die {} geht, was ja eigentlich logisch ist.
                          klar ist das logisch - if, while, for etc. führen bei zutreffender bedingung alle den nächsten anweisungsblock aus.
                          anweisungsblöcke fasst man in geschweifte klammern ein - und wenn die nicht direkt nach der schleife/abfrage kommen, dann wird halt nur die nächste einzel-anweisung ausgeführt.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Fazit: wenn While beendet ist, ist $row = false und so mit kommt nur 1. if
                            in Frage und wird auch ausgeführt . Würgaround: einfach $row=...
                            ohne Schleife, dann sollte funz.

                            OffTopic:
                            ich hab vorhin wieder nicht richtig gelesen **schäm**

                            Kommentar


                            • #15
                              Original geschrieben von wahsaga
                              klar ist das logisch - if, while, for etc. führen bei zutreffender bedingung alle den nächsten anweisungsblock aus.
                              anweisungsblöcke fasst man in geschweifte klammern ein - und wenn die nicht direkt nach der schleife/abfrage kommen, dann wird halt nur die nächste einzel-anweisung ausgeführt.
                              meine Vermutung war ja erst das es ein pharseerror geben würde wenn die {} so alleine im raum stehen, wusste nicht das es php egal ist wenn er die zweite dazu findet.
                              mfg
                              marc75

                              <Platz für anderes>

                              Kommentar

                              Lädt...
                              X