Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Foren-Ticker

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Foren-Ticker

    Tachü... ich hab in der suche nichts gefunden, also starte ich mal nen neuen Thread:


    Folgendes Problem (naja eigentlich weniger *g*):


    Ich habe mir einen Forenticker gebastelt... läuft soweit auch, bis auf eine sache, die ich vorhin so teilweise gefixt habe.

    Doppelte Topicnamen nur als eines anzeigen.

    Wie gesagt, läuft es, jedoch bringt mir der implode-befehl eine meldung, da $saved erst nach dem implode definiert wird.

    Gibt es da Lösungsvorschläge?


    PHP-Code:
     
    function forumticker(){  
    //5 Datensätze auslesen & sortieren  
    $query="SELECT p.topic_id,t.topic_title FROM gpbb_posts AS p LEFT JOIN gpbb_topics AS t ON p.topic_id  = t.topic_id ORDER BY post_time DESC LIMIT 5";  
    $result=mysql_query($query) or die(mysql_error(LINK));  
    //Return auf '' setzen  
    $return="";  
    //Gespeicherte (Debug)-Werte auf '' setzen  
    $saved="";  
    // schleife auf 0 setzen  
    $i=0;  
      while(
    $row=mysql_fetch_array($result)){  
      
    $i++;  
      
    $topictitle=$row[topic_title]; // $topictitle definieren  
      
    $twosaved=implode(",",$saved); // Den Array $saved trennen  
      
    if(!strchr($twosaved,$topictitle)) $saved[$i]=$topictitle// wenn $topictitle in $twosaved nicht vorkommt, $saved[$i] definieren  
        
    if(strlen($saved[$i])>20){ // Falls der Titel von $saved[$i] > 20 ist, $saved[$i] k¨rzen und mit '...' verlängern  
          
    $saved[$i]=substr($saved[$i],0,20).'...';  
        }  
        if(
    $saved[$i]){ // und das ganze ausgeben  
      
    $return.="» [url='../forum/viewtopic.php?t=".$row[topic_id]. "']".$saved[$i]."[/url]
    "
    ;  
        }  
      }  
      return 
    $return;  


    Das ganze wird auf http://fds.hadrielnet.ch/html/index2.fds ausgegeben.


    Danke schonmal für die Hilfe

  • #2
    Warum setzt du dann $saved nicht vor der Schleife als leeres Array statt als leere Zeichenkette?
    Also $saved = array() statt $saved = ''.

    Kommentar


    • #3
      Soweit so gut...

      nur werden die werte jetzt auch doppelt statt nur einzeln gespeichert (also alle neuen tests nehmen einen platz im array ein)...


      PHP-Code:
       
      function forumticker(){  
      //5 Datensätze auslesen & sortieren  
      $query="SELECT t.topic_id,t.topic_title FROM gpbb_topics AS t LEFT JOIN gpbb_posts AS p ON p.topic_id  = t.topic_id ORDER BY post_time DESC LIMIT 5";  
      $result=mysql_query($query) or die(mysql_error(LINK));  
      //Return auf '' setzen  
      $return="";  
      //Gespeicherte (Debug)-Werte auf '' setzen  
      $saved=array();  
      // schleife auf 0 setzen  
      $i=0;  
        while(
      $row=mysql_fetch_array($result)){  
        
      $i++;  
        
      $topictitle=$row[topic_title]; // $topictitle definieren  
        
      $twosaved=implode(",",$saved); // Den Array $saved trennen  
        
      if(!strchr($twosaved,$topictitle)) $saved[$i]=$topictitle// wenn $topictitle in $twosaved nicht vorkommt, $saved[$i] definieren  
          
      if(strlen($saved[$i])>20){ // Falls der Titel von $saved[$i] > 20 ist, $saved[$i] k¨rzen und mit '...' verlängern  
            
      $saved[$i]=substr($saved[$i],0,20).'...';  
          }  
          if(
      $saved[$i]){ // und das ganze ausgeben  
        
      $return.="» [url='../forum/viewtopic.php?t=".$row[topic_id]. "']".$saved[$i]."[/url]
      "
      ;  
          }  
        }  
        return 
      $return;  

      Kommentar


      • #4
        Richtig debuggen
        1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
        2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
        3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
        4. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
        5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
        6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
        7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

        Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

        Gruß
        phpfan

        Kommentar


        • #5
          Abgesehen davon nerven mich diese Folgefragen. Wenn Problem A gelöst ist, taucht Problem B auf. Ah da war ja jemand im Forum der mir geholfen hat, gleich Problem B posten, dann gehts weiter mit Problem C....

          Wie von phpfan gesagt: Benutz nen Debugger!

          Kommentar

          Lädt...
          X