Ankündigung

Einklappen
Keine Ankündigung bisher.

Treuebalkenscript funktioniert nicht!

Einklappen

Neue Werbung 2019

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

  • Treuebalkenscript funktioniert nicht!

    Ich habe mich vor ein paar Tagen an die Arbeit gemacht, ein eigenes Browsergame zu entwickeln. Da ich aber noch keine Erfahrung mit PHP hatte, musste ich erstmal anfangen, es zu lernen, in meinem Fall per Online-Tutorials.

    Nun habe ich mich vorhin drangesetzt und mal ausprobiert, ob ich nicht ein simples Script zum Anzeigen eines Balkens für die Treue des Charakters hinbekommen, denkste, wurde nichts draus.

    Mein Browser stoppt beim Aufrufen folgender Datei immer abrupt den Seitenaufbau ohne jeden Fehler anzuzeigen:

    Code:
    <?php
    include("_mysql.php");
    
      $treue = safe_query("SELECT treue FROM user");
    
      if($treue < 20)
          {
        echo <img src="images/treue/0.png">;
        }
      elseif($treue >= 20 and §treue < 60)
        {
        echo <img src="images/treue/4.png">;
        }
      
    // Hier folgen weitere eleifs
    
      else
        {
        echo <img src="images/treue/100.png">;
        }
    
    ?>
    Ich hoffe, jemand kann mir erklären, was für einen Fehler ich gemacht habe.

  • #2
    Setzte bitte error_reporting auf E_ALL und schau mal in deiner php.ini nach ob display_errors auf ON ist. Eigentlich sollte dir nämlich bei obigem Quelltext, mehr als nur eine Fehlermeldung um die Ohren fliegen.

    Im else-if § statt $, bei echo hast du die strings nicht in Anführungszeichen gesetzt und wer weiß wie deine safe_query-Funktion aussieht...
    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

    Kommentar


    • #3
      Das ganze sieht leider auf meiner Seite wie folgt aus:



      Eigentlich zeigt er die Fehler immer an, aber hier scheint er es nicht zu können.

      Ich habe jetzt schonmal das Paragraphen-Zeichen in $ umgewandelt und auch die Anführungszeichen gesetzt, trotzdem funktioniert es nicht.

      Code:
      <?php
      include("_mysql.php");
      
        $treue = mysql_query("SELECT treue FROM user");
      
        if($treue < 20)
            {
          echo "<img src="images/treue/0.png">";
          }
        elseif($treue = 20 and $treue < 60)
          {
          echo "<img src="images/treue/4.png">";
          }
        else
          {
          echo "<img src="images/treue/100.png">";
          }
      
      ?>
      edit: Keine Ahnung, was das safe_query da sollte, aber es sollte eine normale Abfrage, also mysql_query sein! Funktioniert aber immernoch nicht.

      Kommentar


      • #4
        Zitat von Crud3li0 Beitrag anzeigen
        Code:
        <?php
        include("_mysql.php");
        
          $treue = mysql_query("SELECT treue FROM user");
        
          if($treue < 20)
              {
            echo "<img src="http://www.php.de/images/treue/0.png">";
            }
          elseif($treue = 20 and $treue < 60)
            {
            echo "<img src="http://www.php.de/images/treue/4.png">";
            }
          else
            {
            echo "<img src="http://www.php.de/images/treue/100.png">";
            }
        
        ?>
        Schau dir bitte im Manual an was mysql_query() für einen Rückgabewert hat bzw. schau dir an wie man mysql_fetch_array() und co. benutzt.
        Außerdem sind deine echo-Zeilen immernoch fehlerhaft: Anführungszeichen innerhalb von Anführungszeichen musst du escapen...

        Das wird eigentlich auch in jedem Grundlagentutorial erklärt - einfach nochmal in Ruhe durchmachen. Es bringt nichts wenn wir jetzt hier irgendwie versuchen müssen dir die absoluten Grundlagen einzutrichtern....

        edit: Keine Ahnung, was das safe_query da sollte, aber es sollte eine normale Abfrage, also mysql_query sein! Funktioniert aber immernoch nicht.
        Wenn du nicht weißt was es da sollte, wer dann? Du sollst nicht einfach rumraten und irgendwie ohne Sinn und Logik rumprobieren...


        UND: Fehlermeldungen sind nicht einfach so mal da und mal weg - ohne Fehlermeldungen wirst du wohl so nicht weit kommen... Ich habe jedenfalls keine große Lust, dass du jetzt alle deine Versuche hier postest und ich dann die Parse-Errors finden darf
        [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

        Kommentar


        • #5
          Hi Leute,

          habe inzwischen ziemlich vieles ausprobiert, unter anderem mysql_fetch_array.

          Ich bin irgendwie am Verzweifeln, meinen Code habe ich jetztüberarbeitet, dass die Bilder richtig verlinkt sind, etc. und ich komme nicht mehr weiter.

          Was mir fehlt, ist ein Befehl, um die Information aus der Treuezeile in der Variable $treue zu speichern.

          Hier nochmal der Code:

          Code:
          <?php
          
              $treueabfrage = mysql_query("SELECT treue FROM user WHERE userID = '$userID'");
              $treue['treue'] = mysql_fetch_array($treueabfrage);
          
            if($treue['treue'] < 20)
                {
              echo "<img src=\"images/treue/0.png\">";
              }
            elseif($treue['treue'] = 20 and $treue['treue'] < 60)
              {
              echo "<img src=\"images/treue/4.png\">";
              }
            else
              {
              echo "<img src=\"images/treue/100.png\">";
              }
          
          ?>

          Kommentar


          • #6
            Zitat von Crud3li0 Beitrag anzeigen
            Ich bin irgendwie am Verzweifeln, meinen Code habe ich jetztüberarbeitet, dass die Bilder richtig verlinkt sind, etc. und ich komme nicht mehr weiter.

            Was mir fehlt, ist ein Befehl, um die Information aus der Treuezeile in der Variable $treue zu speichern.
            Was dir fehlt sind Grundkenntnisse. Die musst du schon selbst lernen...

            Wie gesagt wird das in so gut wie jedem Tutorial erklärt. Hier findest du ein Beispiel:
            #php/QuakeNet Tutorial - MySQL / Mit PHP aus MySQL lesen

            Im Manual gibt es auch beispiele:
            PHP: mysql_fetch_array - Manual
            [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

            Kommentar


            • #7
              Ja ok, das mit den Grundkenntnissen stimmt, aber in jedem Tutorial, das ich mir bisher angesehen habe, wurde der Befehl anhand einer while-Schleife erklärt. Das Problem ist jetzt, dass ich keine wirkliche Verbindung zwischen dieser mysteriösen while-Schleife, die ich nicht verstehe, und meinen if-Bedingungen sehe. Gäbe es ein Tutorial, welches mir dieses mysql_fetch_array oder mysql_fetch_assoc an sich erklären würde und nicht als Beispiel die while-Schleife bringen würde, würde ich es vielleicht verstehen.

              Sorry, aber deshalb habe ich ja auch im PHP-Einsteiger-Forum gepostet, gerade, weil ich erst eingestiegen bin und mir die Tutorials in dieser Hinsicht wenig bringen.

              Kommentar


              • #8
                Dann solltest du dir eben erstmal anschauen was eine WHILE-Schleife ist und wie sie funktioniert. Eigentlich hat die nämlich absolut nichts mit deinem Problem zu tun und das Prinzip ist das gleiche - egal ob mit oder ohne while:

                mysql_fetch_array() liefert dir ein Array zurück mit den Spaltennamen als Index.
                Code:
                $row = mysql_fetch_array($res);
                echo $row['treue'];
                [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                Kommentar


                • #9
                  Hi,

                  Dein elseif hat einen Fehler.
                  PHP-Code:
                  $treue['treue'] = 20 and $treue['treue'] < 60 
                  Es muss richtig heißen:
                  PHP-Code:
                  $treue['treue'] == 20 and $treue['treue'] < 60 
                  Dieser Fehler würde dir übrigens auffallen, wenn du die Anweisung drehst:
                  PHP-Code:
                  20 $treue['treue'] and 60 $treue['treue'
                  Hier würde dir PHP sofort eine Fehlermeldung auswerfen.

                  Gruß Thomas

                  Kommentar


                  • #10
                    wie weit bistdu mit deinem code? poste mal oder schick per pm, würde dir das eine machen...

                    ps: musst " in der echo durch \" ersetzen...
                    Under Construktion

                    Kommentar


                    • #11
                      Naja, eigentlich sollte in das elseif ein >= rein, dass zwischen 20 und 60 der Wert liegen muss. Aber ich hab das jetzt in < 20, < 60, < 100, etc. abgeändert, da das doch eigentlich nach der Reihe abgearbeitet werden müsste.

                      Momentan sieht mein Code folgendermassen aus:

                      Code:
                      <?php
                      
                          $treueabfrage = mysql_query("SELECT * FROM user WHERE userID = '$userID'");
                          $treue = mysql_fetch_array($treueabfrage);
                          
                          $ergebnistreue = $treue[treue] / 100;
                          
                          echo "Treue: $ergebnistreue %"; // Das als Ausgabe, da unteres
                                                         // nicht funktioniert, daher als Kommentar.
                      
                      /*  if($treue['treue'] < 200)
                            {
                          echo '<img src="http://www.php.de/images/treue/0.png">';
                          }
                        elseif($treue['treue'] < 600)
                          { 
                          echo '<img src="http://www.php.de/images/treue/4.png">';
                          }
                        else
                          { 
                          echo '<img src="http://www.php.de/images/treue/100.png">';
                          }*/
                      
                      ?>

                      Kommentar


                      • #12
                        Mit einer Fehlerbeschreibhung á la "geht nicht" kann keiner was anfangen....
                        WAS geht nicht? Was erwartest du? Was passiert? Fehlermeldung?

                        Du hast dich scheinbar leider immernoch nicht um die Fehlermeldungen gekümmert - mit error_reporting(E_ALL); und angeknipsten Meldungen müsstest du bei deinem Quellcode nämlich einen Hinweis für diese Zeile:
                        [code]$ergebnistreue = $treue[treue] / 100;[/quote] erhalten. (da gehören Anführungszeichen hin....).



                        ... Bist du dir SICHER, dass dein Code nicht funktioniert oder werden nur die Bilder nicht _angezeigt_? Wie sieht der Quellcode aus der bei deinem PHP-Code rauskommt? (rechtsklick->Quelltext anzeigen od. im Firefox STRG + U)
                        [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                        Kommentar


                        • #13
                          agrajag, ich danke dir für den Denkanstoß. Die angezweifelte Zeile mit der Rechenoperation ist tatsächlich korrekt. Man kann nämlich im Array ruhig die Apostrophe weglassen, kann schiefgehen, ja, tuts hier aber nicht.

                          Das Problem lag einfach darin, dass ich vergessen habe, die JPGs vom Server runterzuschmeißen und die PNGs draufzupacken. Wird nicht wieder vorkommen.

                          Kommentar

                          Lädt...
                          X