News-Script hat Fehler... hängt auch mit MySQL zusammen...

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

  • News-Script hat Fehler... hängt auch mit MySQL zusammen...

    PHP-Code:
    <?php
    include("config.php");
    $limit $_GET['limit'];
    if (empty(
    $limit) || !isset($limit)) {
        
    $limit 1;
    }
    $query mysql_query("SELECT * FROM tpp_news ORDER BY date DESC LIMIT $limit");
    if (!
    mysql_fetch_object($query)) {
        echo 
    "Es sind keine Eintr&auml;ge vorhanden!<br>";
    }
    while (
    $ds mysql_fetch_object($query)) {
        
    $title $ds -> title;
        
    $autor $ds -> autor;
        
    $date $ds -> date;
        
    $content $ds -> content;
        
    $content htmlentities($content);
        
    $content nl2br($content);
        echo 
    "<table width=\"450\" border=\"0\" class=\"td\"><tr><td class=\"tdhead\">";
        echo 
    "<font size=\"4\"><b><u>$title</b></u></font>";
        echo 
    "</tr></td><tr><td class=\"td\"><font size=\"2\">";
        echo 
    "Geschrieben am "mysql_query("SELECT DATE_FORMAT('$date', '%d.%m.%y')");
        echo 
    "um "mysql_query("SELECT DATE_FORMAT('$date', '%H:%i')"). "Uhr";
        echo 
    "von $autor</font></td></tr><tr><td class=\"td\">";
        echo 
    "$content";
        echo 
    "</td></tr></table><br><br>";
    }
    ?>
    Er zeigt mir eine leere Seite an... ich habe auch schon bei LIMIT eine normale Nummer statt der Variablen eingefügt und 1000 andere Sachen probiert, aber er macht das einfach nicht...
    Wahrscheinlich ist das jetzt wieder so ein saukleiner Fehler den ich auch hätte finden können, habe ich aber nicht

    Hoffentlich kann mir jmd. helfen...
    icecream
    icedcream.de Webdesign Regensburg

  • #2
    Man man man,

    Testausgaben gemacht?
    - Query ausgegeben
    - Anzahl DS
    - einfach mal so ein Hallo World
    - und und und,

    das ist doch nicht so schwer!


    Hast du in den HTML-Quelltext im Browser nachgesehen?

    echo "Geschrieben am ". mysql_query("SELECT DATE_FORMAT('$date', '%d.%m.%y')");
    echo "um ". mysql_query("SELECT DATE_FORMAT('$date', '%H:%i')"). "Uhr";
    Der witz ist gut! *lol*

    Kommentar


    • #3
      Na gut, habe das geändert:

      PHP-Code:
          $clock mysql_query("SELECT DATE_FORMAT('$date', '%H:%i')");
          
      $date2 mysql_query("SELECT DATE_FORMAT('$date', '%d.%m.%y')");
          echo 
      "<table width=\"450\" border=\"0\" class=\"td\"><tr><td class=\"tdhead\">";
          echo 
      "<font size=\"4\"><b><u>$title</b></u></font>";
          echo 
      "</tr></td><tr><td class=\"td\"><font size=\"2\">";
          echo 
      "Geschrieben am $date2 um $clock Uhr";
          echo 
      "von $autor</font></td></tr><tr><td class=\"td\">";
          echo 
      "$content";
          echo 
      "</td></tr></table><br><br>"
      Aber das ändert trotzdem nicht daran, dass er eine leere Seite ausgibt, warum auch ?

      Der PHP-Code dürfte doch ansonsten stimmen... habe ihn nämlich auch mit meinem alten Newsscript verglichen... Und er kriegt ja was aus der Datenbank, sonst würde er schreiben, dass keine Einträge vorhanden sind....



      Gruß
      icecream
      icedcream.de Webdesign Regensburg

      Kommentar


      • #4
        Na gut, habe das geändert:

        Aber das ändert trotzdem nicht daran, dass er eine leere Seite ausgibt, warum auch ?
        Na super, das macht die sache viel besser. Irgendwie hast du immer noch ne menge unnütze Queries in deinem Newsscript.

        Warum aber gehst du nicht auf die sachen ein, die dir helfen könnten, das problem zu lösen. Wenn du kein interesse daran hast, dann erspar uns solche Threads doch direkt...

        Und er kriegt ja was aus der Datenbank, sonst würde er schreiben, dass keine Einträge vorhanden sind...
        Wers glaubt. Dem ist eindeutig nicht so.

        Und wenn du das erkennst, wird auch klar, wieso das ganze nicht klappt.

        Also gehe wie folgt vor.

        1) lass dir die Query ausgeben.
        -> Wie viele Einträge sollten nach dieser Query zurückgegeben werden (Limit)?

        2) Guck mal nach, wo du diesen(!) ersten Datensatz aus dem Ergebnis verwendest und wie.

        3) Und wo soll jetzt noch großartig die bedingung der while() schleife erfüllt werden??

        Kommentar


        • #5
          Also...
          Wenn ich echo $query; schreibe, dann liefert er Resource id #4. Was heißt das?
          Der Sinn der Whileschleife:
          $limit könnte ja z.B. 10 sein...
          2) Guck mal nach, wo du diesen(!) ersten Datensatz aus dem Ergebnis verwendest und wie.
          Äh... wie...?^^
          icedcream.de Webdesign Regensburg

          Kommentar


          • #6
            Wenn ich echo $query; schreibe, dann liefert er Resource id #4. Was heißt das?
            Dann heißt das, dass du zunächst mal nicht das gemacht hast, was du solltest. Du solltest die Query ansich ausgeben. Nicht irgend eine Resource-id, die mysql_query() zurück gibt, wenns geklappt hat...

            Bevor du nicht die Query ausgegeben hast, macht die beantwortung weiterer Fragen keinen Sinn...

            Kommentar


            • #7
              Hm, ja gut, verstehe, aber was meinst du mit "Query ausgeben"...??
              Bzw. wie mache ich das?
              Naja.... anscheinend bin ich zu newbie dafür... wenn's jmdm. hilft, hier die Datenbank:
              Code:
              `tpp_news` (
              `id` TINYINT( 11 ) NOT NULL AUTO_INCREMENT ,
              `title` VARCHAR( 45 ) NOT NULL ,
              `autor` VARCHAR( 30 ) NOT NULL ,
              `date` DATETIME NOT NULL ,
              `content` TEXT NOT NULL ,
              PRIMARY KEY ( `id` )
              ) TYPE = MYISAM ;
              Gruß
              icecream

              P.S.: Nicht vergessen, ich bin neu in der PHP-Welt
              Zuletzt geändert von icecream; 27.01.2006, 20:08.
              icedcream.de Webdesign Regensburg

              Kommentar


              • #8
                Gut, ich habe es jetzt nochmal um eine kleine if-Else-Abfrage erweitert, was eigentlich beweisen sollte, dass die query nichts oder was fehlerhaftes zurückliefert, bzw. er die Schleife nicht ausführt...

                PHP-Code:
                <?php
                include("config.php");
                $limit $_GET['limit'];
                if (empty(
                $limit) || !isset($limit)) {
                    
                $limit 1;
                }
                $query mysql_query("SELECT * FROM tpp_news ORDER BY date DESC LIMIT $limit");
                if (!
                mysql_fetch_object($query)) {
                    echo 
                "Es sind keine Eintr&auml;ge vorhanden!<br>";
                }
                elseif(
                mysql_fetch_object($query)) {
                while (
                $ds mysql_fetch_object($query)) {
                    
                $title $ds -> title;
                    
                $autor $ds -> autor;
                    
                $date $ds -> date;
                    
                $content $ds -> content;
                    
                $content htmlentities($content);
                    
                $content nl2br($content);
                    
                $clock mysql_query("SELECT DATE_FORMAT('$date', '%H:%i')");
                    
                $date2 mysql_query("SELECT DATE_FORMAT('$date', '%d.%m.%y')");
                    echo 
                "<table width=\"450\" border=\"0\" class=\"td\"><tr><td class=\"tdhead\">";
                    echo 
                "<font size=\"4\"><b><u>$title</b></u></font>";
                    echo 
                "</tr></td><tr><td class=\"td\"><font size=\"2\">";
                    echo 
                "Geschrieben am $date2 um $clock Uhr";
                    echo 
                "von $autor</font></td></tr><tr><td class=\"td\">";
                    echo 
                "$content";
                    echo 
                "</td></tr></table><br><br>";
                }
                }
                else {
                echo 
                "Error";
                    
                mysql_error();
                }
                ?>
                Also:
                Er schreibt Error
                ABER WARUM?! WORAN KANN DAS DENN SONST NOCH LIEGEN??

                Gruß
                icecream
                Zuletzt geändert von icecream; 27.01.2006, 21:40.
                icedcream.de Webdesign Regensburg

                Kommentar


                • #9
                  vielleicht solltest du
                  ECHO mysql_error();
                  schreiben und nicht nur mysql_error() -.-

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Ooops... hab' ich vergessen zu posten^^


                    Er zeigt keinen MySQLError an.... und wenn ich die Query driekt in PHPMYADMIN eingebe, kommt auch das, was man eigentlich erwartet hätte...
                    icedcream.de Webdesign Regensburg

                    Kommentar


                    • #11
                      HEEEEEEEEEEUUUUULLLLLLLL


                      1. NIEMALS einen Get-Parameter einfach in einen Query schreiben, d.h. das
                      PHP-Code:
                      $limit $_GET['limit']; 
                      wird zu
                      PHP-Code:
                      $limit intval($_GET['limit']); 
                      2. was macht mysql_fetch_object?
                      den momentanen Datensatz zurückgeben UND DEN INTERNEN ZEIGER EINS VOR RÜCKEN
                      z.B. du hast nur EINEN Datensatz:
                      PHP-Code:
                      // Der Datensatz wird zurückgegeben, der Zeiger eines vorgerückt, Datensatz wird aber NICHT gespeichert, sondern verfällt
                      if (!mysql_fetch_object($query)) {
                       ...
                      // nur ein Datensatz vorhanden, Zeiger ist am Ende, d.h. das ergibt FALSE)
                      } elseif(mysql_fetch_object($query)) {
                       ...
                      // hier unten wird else ausgeführt 
                      was du für die if's benutzen willst lautet mysql_num_rows()

                      und 3. die Variable die du $query genannt hast, nennt man standardmäßig eher $result, weil man dann nämlich auch schreiben kann
                      PHP-Code:
                      $query 'SELECT * FROM table';
                      $result mysql_query($query); 
                      und sich $query später ausgeben lassen kann (ansonsten gibt es so nette $temp-Konstrukte ...)

                      und zu guter letzt: Was du kannst besorgen mit php, lasse nicht mysql erledigen
                      PHP-Code:
                      $clock mysql_query("SELECT DATE_FORMAT('$date', '%H:%i')");
                      $date2 mysql_query("SELECT DATE_FORMAT('$date', '%d.%m.%y')"); 
                      siehe unterem Code, wie man es mit php macht


                      d.h. mal etwas überarbeitet der Code
                      PHP-Code:
                      <?php

                      include("config.php");
                      $limit intval($_GET['limit']);
                      if (
                      $limit 1) {
                          
                      $limit 1;
                      }

                      $query mysql_query("SELECT * FROM tpp_news ORDER BY date DESC LIMIT $limit");
                      if (
                      mysql_errno() != 0) {
                          echo 
                      mysql_error();
                      } elseif (
                      mysql_num_rows($query) == 0) {
                              echo 
                      "Es sind keine Eintr&auml;ge vorhanden!<br>";
                      } else {
                          while (
                      $ds mysql_fetch_object($query)) {
                              
                      $title $ds -> title;
                              
                      $autor $ds -> autor;
                              
                      $date $ds -> date;
                              
                      $content $ds -> content;
                              
                      $content htmlentities($content);
                              
                      $content nl2br($content);
                              
                      $clock date('H:i'strtotime($date));
                              
                      $date2 date('d.m.Y'strtotime($date));
                              echo 
                      "<table width=\"450\" border=\"0\" class=\"td\"><tr><td class=\"tdhead\">";
                              echo 
                      "<font size=\"4\"><b><u>$title</b></u></font>";
                              echo 
                      "</tr></td><tr><td class=\"td\"><font size=\"2\">";
                              echo 
                      "Geschrieben am $date2 um $clock Uhr";
                              echo 
                      "von $autor</font></td></tr><tr><td class=\"td\">";
                              echo 
                      "$content";
                              echo 
                      "</td></tr></table><br><br>";
                          }
                      }

                      ?>

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        Wow! Es funktioniert! Aber warum denn jetzt auf einmal?? Ich verstehe das nicht ganz... war es das mit dem mysql_num_rows??
                        Weil an der Query-Anweisung z.B. hat sich ja nichts geändert... aber vielen vielen Dank!



                        Gruß
                        icecream
                        icedcream.de Webdesign Regensburg

                        Kommentar


                        • #13
                          Tip für die Zukunft...

                          http://tut.php-q.net <- LESEN!

                          Kommentar


                          • #14
                            Du solltest dir einfach mal ansehen, was die Funktionen, die du benutzt in wirklichkeit machen und zurück geben. Dann erkennst du auch irgendwann was daran falsch ist...

                            Kommentar

                            Lädt...
                            X