Ankündigung

Einklappen
Keine Ankündigung bisher.

Kalender nach Datum ordnen und alte Termine nicht anzeigen. Wie?

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

  • Kalender nach Datum ordnen und alte Termine nicht anzeigen. Wie?

    Hi,

    ich möchte gerne den Kalender unserer Band (Auftrittstermine) nach Datum ordnen und die alten termine nicht mit anzeigen bzw. nen link dazu sätzen.
    Hab schon dies und das probiert, aber ich komm nich drauf.

    Könnt ihr mir helfen?
    Grüße Ricardo
    http://www.irish-butter.de


  • #2
    Dafür müssten wir zuerst einmal wissen, wie du die Termine in deinem Kalender speicherst! Ich nehme mal an in einer (MySQL) Datenbank oder vielleicht sonst irgendwie?

    Kommentar


    • #3
      Ja genau, in einer MySQL Datenbank.
      Der Quelltext sieht zur Zeit noch so aus:
      PHP-Code:
      <?php
      //Einträge auslesen
      if(isset($_GET['pos'])==0){
          
      $pos=0;
      }else{
          
      $pos=(int)$_GET['pos'];
      }
      $count=10;
      $tour_SQL="SELECT * FROM tbl_tour ORDER BY tour_ID LIMIT $pos,$count";
      $tour_result=mysql_query($tour_SQL);

      //Anzahl der Datensätze ermitteln
      $no_data=mysql_num_rows(mysql_query("SELECT tour_ID FROM tbl_tour"));

      //Links für das Blättern
      $new_pos_next=$pos+$count;
      if(
      $new_pos_next>=$no_data){
          
      $link_next=" ";
      }else {
          
      $link_next="<a href=\"unterwegs/unterwegs.php?pos=" $new_pos_next "\">weiter >></a>";
      }
      $new_pos_prev=$pos-$count;
      if(
      $new_pos_prev<0){
          
      $link_prev=" ";
      }else {
          
      $link_prev="<a href=\"unterwegs/unterwegs.php?pos=" $new_pos_prev "\"><< zurück</a>";
      }
      ?>
      <div class="main2">
      <h2>Unterwegs</h2><br />
      <br />
        <table class="termin" border="1px">
          <tr class="thead">
            <th>Datum/Uhrzeit</th> <th>Veranstaltungort</th> <th>Info</th>
          </tr>
      <?php
      //Einträge auslesen
      while($tour_data=mysql_fetch_array($tour_result)){
          
      //Datum und Uhrzeit formatieren
      $unixtime strtotime($tour_data['tour_date']);

      echo 
      "<tr>";
      echo 
      "<td>" $tour_data['tour_date'] . "</td>";
      echo 
      "<td>" $tour_data['tour_ort'] . "</td>";
      echo 
      "<td>" $tour_data['tour_info'] . "</td>";
      echo 
      "</tr>";
      }
      ?>
        </table>
        <p><?php echo $link_prev " " $link_next ?></p>
      Grüße Ricardo
      http://www.irish-butter.de

      Kommentar


      • #4
        Hat keiner ne Idee? Brauche Eure Hilfe.
        Grüße Ricardo
        http://www.irish-butter.de

        Kommentar


        • #5
          In welchem Format ist das Datum denn in der Datenbank gespeichert und welchen Typ hat das MySQL-Feld?

          Kommentar


          • #6
            als datetime. format is yyyy-mm-dd usw. muss ich das auf primärschlüssel setzen?
            Grüße Ricardo
            http://www.irish-butter.de

            Kommentar


            • #7
              Nein, musst du nicht! Mach deinen Query einfach à la

              Code:
              SELECT * FROM tbl_tour ORDER BY tour_date
              Wenn du nur Daten aus einem bestimmten Abschnitt haben willst, kannst du dich mal über BETWEEN informieren (ist eine Spezialart von WHERE).

              Kommentar


              • #8
                Aber ein Index ist für die Sortierung und eine WHERE Bedingung schon nützlich. Es muss nur halt nicht gleich der Primärschlüssel sein. Ein "normaler", non-unique Index auf tour_date tut's genauso.

                Dann brauchst Du noch die WHERE Bedingung, dass tour_date größer (sprich: neuer) als heute (00:00 Mitternacht) ist.

                Und bei Mysql kannst Du die Anzahl aller Datensätze trotz LIMIT berechnen lassen. Das ist "billiger" (sprich: schneller) als die Abfrage zweimal Laufen zu lassen.
                PHP-Code:
                $sql="SELECT SQL_CALC_FOUND_ROWS tour_date,tour_ort,tour_info
                FROM tbl_tour
                ORDER BY tour_date
                WHERE tour_date > Curdate()
                LIMIT 
                $pos,$count";
                $tour_result=mysql_query($sql) or exit(mysql_error());
                $sql 'SELECT FOUND_ROWS()';
                $no_data=mysql_query($sql) or exit(mysql_error());
                $no_data=mysql_result($no_data0); 

                Kommentar


                • #9
                  hm, danke werd ich mal nachforschen.

                  hab die funktion curdate() nich gefunden.
                  Was meinst du damit?
                  Grüße Ricardo
                  http://www.irish-butter.de

                  Kommentar


                  • #10
                    MySQL AB :: MySQL 5.0 Reference Manual :: 10.6 Date and Time Functions

                    Kommentar

                    Lädt...
                    X