[PHP] Blätterfunktion - "weiter" & "zurück"?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Z0mbiE, 5. September 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 5. September 2010
    Blätterfunktion hinzufügen?

    Hallo Community,

    In einem anderen Threat erwähnte ich das ich erst seit 2 Wochen mich intensiv mit PHP beschäftige und baue im Zuge dessen eine kleine Homepage.

    Ein weiteres Problem oder nennen wir es Aufgabe besteht darin eine Blätterfunktion in aktuelle News reinzubekommen.

    Ich lasse mir im Moment die 3 neusten News anzeigen, alle anderen sind aber weg und nichtmehr einsehbar für die Leser, daher die Idee mit der Blätterfunktion die sich dann doch schwieriger in der Umsetzung gestalltet als gedacht.

    Hier mein Quellcode um den es geht:
    PHP:
    <!--
    Die Ausgabe der aktuellen Nachrichten
    -->
    <?php
    include  "aktuelles_admin_connect.php" ;                 //Es wird sich mit der Datenbank verbunden
    mysql_select_db ( "fi10s" , $verbindung );                  //Die zustaendige Datenbank wird ausgewaehlt

    //Die Daten werden aus der Datenbank ausgesucht in der Reihenfolge: 
    //Betreff / Inhalt / Datum und sortiert, so dass das aktuelle zuerst 
    //zu lesen ist. Die Drei aktuellsten Nachrichten werden angezeigt.
    $sql  "SELECT `aktuelles`.`betreff`, `aktuelles`.`inhalt`, `aktuelles`.`datum`\n"
        
    "FROM `aktuelles`\n"
        
    " ORDER BY `aktuelles`.`beitragsnummer`\n DESC "
        
    " LIMIT 0, 3 " ;

    $wertemenge  mysql_query ( $sql $verbindung );

    //Die Datensaetze werden in einer Tabelle hinterlegt und verschieden formatiert.
    while ( $datensatz  mysql_fetch_row ( $wertemenge ))
    {
    echo 
    "<table width=\"300\""
    echo 
    "<tbody>" ;
    echo 
    "<br />" ;
      echo 
    "<tr>" ;
    echo 
    "<img src=\"/images/news_1.png\" width=\"30\" height=\"25\" border=\"0\" alt=\"Nachrichten\">" ;
      for (
    $i = 0 $i < mysql_num_fields ( $wertemenge );  $i ++)
      {
        echo 
    "<td>" ;
        if(
    $i == 0 )
        {
          echo 
    "<b>" . $datensatz [ $i ]. "</b>" ;                                  //Der Betreff ist Fett
        
    }
         if(
    $i == 1 )
        {
          echo 
    "<i>" . $datensatz [ $i ]. "</i>" ;                                  //Der Inhalt ist kursiv
        
    }
        
        if(
    $i == 2 )
        {
          echo 
    "<font size=1>" . $datensatz [ $i ]. " von " . $admin . "</font>" ;      //Das Datum und die Information sind kleiner
        
    }
        
        
        echo 
    "</td>" ;
        echo 
    "</tr>" ;
      }
    }    
    echo 
    "</tbody>" ;
    echo 
    "</table>" ;
    mysql_close ( $verbindung );    //Am Ende wird die Verbindung zur Datenbank wieder getrennt.
    ?>
    Nun habe ich hier ein Tutorial gelesen bin aber echt überfordert und bekomme es nicht hin. Das maximalste was ich hinbekommen hatte war eine Ausgabe von Timestamps der Beiträge aber mehr leider nicht.

    Vielleicht könnte mir das einer an meinem Code als Beispiel erklären?

    LG
    Z0mbiE
     
  2. 5. September 2010
    AW: Blätterfunktion hinzufügen?

    mach das LIMIT in deiner sql anfrage dynamisch.

    übergib der seite mit get die seiten nummer und daraus berechnest du dann die angezeigten news.

    seite 0 = Limit 0,9, 1 = 10-19 als beispiel.
     
  3. 5. September 2010
    AW: Blätterfunktion hinzufügen?

    PHP:
    $offset  0 ;
    $limit   3 ;

    if(!empty(
    $_GET [ 'page' ])) {
        
    $toffset  intval ( $_GET [ 'page' ]);
        if(
    $toffset  1 $offset  = ( $toffset  1 ) *  $limit ;
    }

    $sql  'SELECT ... LIMIT '  $offset  ', '  $limit ;
    um eine gute blätterfunktion zu bauen benötigst du noch: [g]SQL_CALC_FOUND_ROWS[/g] und mathe
     
  4. 5. September 2010
    AW: Blätterfunktion hinzufügen?

    Okay, daraus entnehme ich das so eine Funktion für einen Anfänger noch etwas zu heavy ist?
     
  5. 5. September 2010
    AW: Blätterfunktion hinzufügen?

    Nö der Großteil des Codes den du brauchst wurde ja schon gepostet.
    Vllt eine kleine Erklärung zu Murdocs code:
    Der Offset ist die Nr. ab welchem Datensatz du Ergebnisse haben willst. Dh bei Offset = 5 werden die ersten 5 Datensätze im Ergebniss ignoriert bzw. nicht ausgegeben.
    Das Limit sagt dann wie viele Datensätze man haben will.

    Gruß,
    Figger
     
  6. 5. September 2010
    AW: Blätterfunktion hinzufügen?

    du weißt schon, dass das einfache mathematik ist.

    geh mal den code von murdoc durch...

    PHP:
    $offset  0 //startseite bzw. starteintrag
    $limit   3 //anzahl der auszugebenden news

    if(!empty( $_GET [ 'page' ])) {  //falls in der addresse eine seite angegeben ist
        
    $toffset  intval ( $_GET [ 'page' ]);  // konvertiert den wert zu intwert
        
    if( $toffset  1 $offset  = ( $toffset  1 ) *  $limit //bestimmen starteintrag für mysqlabfrage
    }

    $sql  'SELECT ... LIMIT '  $offset  ', '  $limit
     
  7. 6. September 2010
    AW: Blätterfunktion hinzufügen?

    Sodele, habe heute meine Datei hinbekommen, dank eurer Hilfe und einem Tutorial: Wen es interessiert ich hab es so gelöst:

    PHP:
    <? php
    $seite 
    $_GET [ "seite" ]; 
    if(!isset(
    $seite ))
      {
      
    $seite  1 ;
      }
       
    include 
    "aktuelles_admin_connect.php" ;
    mysql_select_db ( "fi10s" , $verbindung );

    $eintraege_pro_seite  3 ;
    $start  $seite  $eintraege_pro_seite  $eintraege_pro_seite ;

    //Die Daten werden aus der Datenbank ausgesucht in der Reihenfolge: 
    //Betreff / Inhalt / Datum und sortiert, so dass das aktuelle zuerst 
    //zu lesen ist. Die Drei aktuellsten Nachrichten werden angezeigt.
    $abfrage  "SELECT `aktuelles`.`betreff`, `aktuelles`.`inhalt`, `aktuelles`.`datum`\n"
                
    "FROM `aktuelles`\n"
                
    " ORDER BY `aktuelles`.`beitragsnummer`\n DESC LIMIT  $start $eintraege_pro_seite " ;

    $ergebnis  mysql_query ( $abfrage );

    //Die Datensaetze werden in einer Tabelle hinterlegt und verschieden formatiert.
    while( $row  mysql_fetch_object ( $ergebnis ))
    {
      echo 
    "<table width=\"300\""
      echo 
    "<tbody>" ;
      echo 
    "<br />" ;
      echo 
    "<tr>" ;
      echo 
    "<img src=\"/images/news_1.png\" width=\"30\" height=\"25\" border=\"0\" alt=\"Nachrichten\">" ;
      echo 
    "<td>" ;
      echo 
    "<b>" . $row -> betreff . "</b>" ;                                 //Der Betreff ist Fett
      
    echo  "<br />" ;
      echo 
    "<i>" . $row -> inhalt . "</i>" ;                                  //Der Inhalt ist kursiv
      
    echo  "<br />" ;
      echo 
    "<font size=1>" . $row -> datum . " von " . $admin . "</font>" ;       //Das Datum und die Information sind kleiner
      
    echo  "</td>" ;
      echo 
    "</tr>" ;
    }    
    echo 
    "</tbody>" ;
    echo 
    "</table>" ;

    $result  mysql_query ( "SELECT * FROM aktuelles" );
    $menge  mysql_num_rows ( $result );

    //Errechnen wieviele Seiten es geben wird
    $wieviel_seiten  $menge  $eintraege_pro_seite ;

    //Ausgabe der Seitenlinks:
      
    echo  "<div align=\"center\">" ;
      echo 
    "<b>Seite:</b> " ;

    //Ausgabe der Links zu den Seiten
    for( $a = 0 $a  $wieviel_seiten $a ++)
       {
       
    $b  $a  1 ;

       
    //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
       
    if( $seite  ==  $b )
          {
          echo 
    "  <b> $b </b> " ;
          }

       
    //Auf dieser Seite ist der User nicht, also einen Link ausgeben
       
    else
          {
          echo 
    "  <a href=\"index.php?klick=3&seite= $b \"> $b </a> " ;
          }
       }
    echo 
    "</div>" ;
    mysql_close ( $verbindung );
    ?>
    ---

    Ich hänge wieder einmal und hoffe ihr könnt mir auch dieses mal so super helfen? Wie ihr seht hab ich nun eine Blätterfunktion in mein Script gebaut allerdings möchte ich noch einen ">>weiter" und einen "<<zurück" link haben der jeweils immer eine Seite in entsprechende Richtung blättert und hab keine Idee wie ich dieses anfangen kann.

    Erst wollte ich was mit einer FOR schleife machen, hat aber nicht hingehauen, nun hoffe ich auf hilfe.
     
  8. 6. September 2010
    AW: Blätterfunktion hinzufügen?

    schaus dir einfach mal an und bilde dir ein urteil... wenn dus checkst ist der code kein problem mehr.
     
  9. 6. September 2010
    AW: Blätterfunktion - "weiter" & "zurück"?

    Das funktioniert nun mehr oder weniger, er geht aber noch auf seiten mit dem "nächste Seite" auf denen nichts steht???

    PHP:
    //Ausgabe der Links zu den Seiten


    if ( $wieviel_seiten  &&  $eintraege_pro_seite  2
    {
      echo 
    '<a href="index.php?klick=3&seite=1" title="Seite 1"><<</a> ' ;
    }

    if (
    $wieviel_seiten  &&  $eintraege_pro_seite  1
    {
      echo 
    '<a href="index.php?klick=3&seite=' .( $seite - 1 ). '" title="zurück"><</a> ' ;
    }

    for (
    $i = 1 $i  <=  $eintraege_pro_seite $i ++) 
    {
      echo 
    '[<a href="index.php?klick=3&seite=' . $i . '" title="Seite ' . $i . '">' . $i . '</a>] ' ;
    }

    if (
    $wieviel_seiten  $eintraege_pro_seite  &&  $eintraege_pro_seite  1
    {
      echo 
    '<a href="index.php?klick=3&seite=' .( $seite + 1 ). '" title="vorwärts">></a> ' ;
    }

    if (
    $wieviel_seiten  < ( $eintraege_pro_seite - 1 ) &&  $eintraege_pro_seite  2
    {
      echo 
    '<a href="index.php?klick=3&seite=1" title="letzte seite">>></a>' ;
    }
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.