warum wird wert doppelt dargestellt?

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

  • warum wird wert doppelt dargestellt?

    Hi! habe mit folgenden Code geschrieben. Anfangs werden aus der DB alte Daten gelöscht dann die Daten ausgelesen die aus dem bestimmten Folder stammen und dem "verdate"(veranstaltungsdatum) am nächsten liegen. Das geht ja auch. dann möchte ich aber die auf den Veranstaltungstag folgenden 2 Termine(bei wiederkehrenden Terminen) anzeigen lassen- habe ich gelöst mir LIMIT 1, 2, es geht ja auch nur er zeigt mir jetzt alles Doppelt an(http://www.auferstehungskirche-wrn.n...ibel/bibel.php)

    der Code:
    PHP-Code:
    <?
    require("root.inc");
    require($include."db.php");
    include($include."config.ini");
    include($include."lang.ini");
    $heute = date("Y-m-d");

    // Löschen alter Daten
    $sql_delete = "DELETE FROM nbuilder_article WHERE verdate <curdate()+0";
    mysql_query($sql_delete,$db);

    //Nächster Bibelkreis
    $query=("SELECT `intro`,`verdate`,`verort` FROM `nbuilder_article` WHERE 1 AND
    `folder` LIKE 'f8d610d98d005ed41272f9ee9e25b4c6' ORDER BY `verdate` ASC LIMIT 0, 1 ");
    $result=mysql_query($query);

    // 4. Ausgabe in einer Tabelle:
    printf("<table>");
    while($output=mysql_fetch_array($result))
            {
            printf("<b><H5>Nächster Bibelkreis am:</H5></b>
    <tr><td><H5><font color=#0000FF>$output[1]</font></H5></td></tr>
    <tr><td><H5><font color=#0000FF>in $output[2]</font></H5></td></tr>
    <tr><td><H5><font color=#0000FF>in $output[0]</font></H5></td></tr>");
            }
    printf("</table>");

    //Kommender Bibelkreis
    $query=("SELECT `verdate`FROM `nbuilder_article` WHERE 1 AND
    `folder` LIKE 'f8d610d98d005ed41272f9ee9e25b4c6' ORDER BY `verdate` DESC LIMIT 1, 2 ");
    $result=mysql_query($query);

    printf("<table>");
    while($output=mysql_fetch_array($result))
            {
            printf("<b><H5>Kommende Termine:</H5></b>
    <tr><td><H5><font color=#0000FF>$output[0]</font></H5></td></tr>");
            }
    printf("</table>");



    // 5. Schließen der MySQL-Verbindung:
    mysql_close;
    ?>
    achja noch was:
    was muss ich einfügen damit das Datum nocht als "20020527" erscheint sondern als 27.05.2002 ???

    Liebe Grüße
    Clemens aus .at )
    Zuletzt geändert von whistler81; 27.05.2002, 16:39.

  • #2
    Tatüü, tataa der hand aus austria is da!

    Step for step ...

    1. Schreibweise des select, bzw Verwendung von = anstatt like
    Like benötigst Du nur wenn Du nach einem Teil eines Strings suchst z.b. LIKE '%ier' Ergebnsi alle Records mit 'Bier', 'Eier', 'Manier', etc.
    Die Backticks kannst Du weglassen.
    PHP-Code:
    $query=("SELECT intro, verdate, verort FROM nbuilder_article
    WHERE folder = 'f8d610d98d005ed41272f9ee9e25b4c6'
    ORDER BY verdate ASC LIMIT 0, 1 "
    ); 
    2. Zum Datum Welchen Feldtyp hat das Feld verdate?
    Du solltest Feldtyp DATETIME oder DATE verwenden. Ist das so? Wenn ja, ok. Wenn Nein, kannst Du das noch ändern?

    Falls Du nicht weißt welchen Typ das Feld hat, am besten DOS-Fenster öffnen
    mysql datenbankname
    describe tabellenname;


    Der Rest ist vom Feldtyp abhängig, dann schauen wir weiter ...
    Zuletzt geändert von hand; 27.05.2002, 19:04.

    Kommentar


    • #3
      PHP-Code:
      <?
      require("root.inc");
      require($include."db.php");
      include($include."config.ini");
      include($include."lang.ini");
      $heute = date("Y-m-d");

      // Löschen alter Daten
      $sql_delete = "DELETE FROM nbuilder_article WHERE verdate < curdate()+0";
      mysql_query($sql_delete,$db);

      //Nächster Bibelkreis
      $query=("SELECT intro,verdate,verort FROM nbuilder_article
                  WHERE folder = 'f8d610d98d005ed41272f9ee9e25b4c6'
                  ORDER BY verdate ASC LIMIT 0,1");
      $result=mysql_query($query);

      // 4. Ausgabe in einer Tabelle:
      printf("<table>
              <tr><th><b><H5>Nächster Bibelkreis am:</H5></b></th></tr>");
      while($output=mysql_fetch_array($result)) {
          printf("<tr><td><H5><font color=#0000FF>$output[intro]&nbsp;</font></H5></td></tr>
                  <tr><td><H5><font color=#0000FF>in $output[verdate]</font></H5></td></tr>
                  <tr><td><H5><font color=#0000FF>in $output[verort]</font></H5></td></tr>");
      }
      printf("</table>");

      //Kommender Bibelkreis
      $query=("SELECT verdate FROM nbuilder_article
                  WHERE folder = 'f8d610d98d005ed41272f9ee9e25b4c6'
                  ORDER BY verdate DESC LIMIT 1,2");
      $result=mysql_query($query);

      printf("<table>
              <tr><th><b><H5>Kommende Termine:</H5></b></th></tr>");
      while($output=mysql_fetch_array($result)) {
          printf("<tr><td><H5><font color=#0000FF>$output[verdate]&nbsp;</font></H5></td></tr>");
      }
      printf("</table>");

      // 5. Schließen der MySQL-Verbindung:
      mysql_close;
      ?>
      Fehlt nur noch der Feldtyp

      Kommentar


      • #4
        THANX!

        danke, danke es geht!

        hab den Feldtyp auf Date umgeändert. jetzt steht das Datum eh schon im Format 2002-01-01 da. wäre jetzt nurmehr Kosmetik- könntest Du es mit aber trotzdem verraten wie es geht?

        P.S.: Ich fand das Forum total super, man bekommt immer antworten, und jeder hilft einen....nicht wie in anderen Foren wo sich mal 1000 leute aufregen dass man falsch "quotet" etc.

        Clemens

        Kommentar


        • #5
          Noch a bissale anfocha:
          PHP-Code:
          <?php
          require("root.inc");
          require(
          $include."db.php");
          include(
          $include."config.ini");
          include(
          $include."lang.ini");
          $heute date("Y-m-d");

          // Löschen alter Daten
          $sql_delete "DELETE FROM nbuilder_article WHERE verdate < curdate()+0";
          mysql_query($sql_delete,$db);

          //Nächster Bibelkreis
          $query=("SELECT intro,verdate,verort FROM nbuilder_article
                      WHERE folder = 'f8d610d98d005ed41272f9ee9e25b4c6'
                      ORDER BY verdate ASC LIMIT 0,3"
          );
          $result=mysql_query($query);

          // 4. Ausgabe in einer Tabelle:
          print "<table>\n";

          while(
          $output=mysql_fetch_array($result)) {
              
          $index++;
              if (
          $index == 1) {
                  print 
          "<tr><th><b><H5>Nächster Bibelkreis am:</H5></b></th></tr>\n";
                  print 
          "<tr><td><H5><font color=#0000FF>$output[intro]&nbsp;</font></H5></td></tr>
                         <tr><td><H5><font color=#0000FF>in 
          $output[verdate]</font></H5></td></tr>
                         <tr><td><H5><font color=#0000FF>in 
          $output[verort]</font></H5></td></tr>\n";

                  
          //Kommender Bibelkreis
                  
          print "<tr><th><b><H5>Kommende Termine:</H5></b></th></tr>\n";     
              } else {
                  print 
          "<tr><td><H5><font color=#0000FF>$output[verdate]&nbsp;</font></H5></td></tr>\n";
              }
          }
          print 
          "</table>\n";

          // 5. Schließen der MySQL-Verbindung:
          mysql_close;
          ?>

          Kommentar


          • #6
            Ob jetzt das Löschen noch funzt, mußt Du noch testen, Du hast ja jetzt ein anderes Feld-Format.
            Wenn Du:
            "DELETE FROM nbuilder_article WHERE verdate < now()"
            verwendest löscht Du vermutlich noch einen heutigen aktuellen Termin.

            Deshalb isses vermutlich sichere Du löscht die Termine des aktuellen Datums abzüglich einem Tag (gestern )
            "DELETE FROM nbuilder_article WHERE verdate < DATE_SUB(now(), INTERVAL 1 DAY)"

            Das müßtest Du aber checken.

            PHP-Code:
            <?php
            require("root.inc");
            require(
            $include."db.php");
            include(
            $include."config.ini");
            include(
            $include."lang.ini");
            $heute date("Y-m-d");

            // Löschen alter Daten
            $sql_delete "DELETE FROM nbuilder_article WHERE verdate < curdate()+0";
            mysql_query($sql_delete,$db);

            // DATE_FORMAT(date,format) %e.%c.%Y für 1.1.2002, %d.%m.%y für 01.01.02 

            //Nächster Bibelkreis
            $query=("SELECT intro, DATE_FORMAT(verdate,'%d.%m.%Y') AS datum, verort FROM nbuilder_article
                        WHERE folder = 'f8d610d98d005ed41272f9ee9e25b4c6'
                        ORDER BY verdate ASC LIMIT 0,3"
            );
            $result=mysql_query($query);

            // 4. Ausgabe in einer Tabelle:
            print "<table>\n";

            while(
            $output=mysql_fetch_array($result)) {
                
            $index++;
                if (
            $index == 1) {
                    print 
            "<tr><th><b><H5>Nächster Bibelkreis am:</H5></b></th></tr>\n";
                    print 
            "<tr><td><H5><font color=#0000FF>$output[intro]&nbsp;</font></H5></td></tr>
                           <tr><td><H5><font color=#0000FF>in 
            $output[datum]</font></H5></td></tr>
                           <tr><td><H5><font color=#0000FF>in 
            $output[verort]</font></H5></td></tr>\n";

                    
            //Kommender Bibelkreis
                    
            print "<tr><th><b><H5>Kommende Termine:</H5></b></th></tr>\n";     
                } else {
                    print 
            "<tr><td><H5><font color=#0000FF>$output[datum]&nbsp;</font></H5></td></tr>\n";
                }
            }
            print 
            "</table>\n";

            // 5. Schließen der MySQL-Verbindung:
            mysql_close;
            ?>

            Kommentar


            • #7
              danke

              funktioniert alles wunderbar


              was bewirkt eigtentlich das:
              PHP-Code:
              while($output=mysql_fetch_array($result)) {
                  
              $index++;
                  if (
              $index == 1) {.... 
              Clemens

              Kommentar


              • #8
                Du holst Dir alle Records aus der Datenbank, die Du über die while Schleife abarbeitest.

                Der erste Record ist der nächste Termin, die weiteren Records die Termine danach.

                $index++;
                entspricht
                $index = $index + 1;

                Nachdem $index zum ersten Mal angesprochen wird ist sein Inhalt zunächst 0. Nach
                $index++;
                ist sein Wert 1. Dieser Wert wird abgefragt ist er 1, so handelt es sich um den 1. Record.
                PHP-Code:
                if ($index == 1) {
                   
                // Verarbeitung des ersten Records
                } else {
                   
                // Verarbeitung aller anderen Records

                Bei jedem weiterem Schleifendurchlauf erhöht sich sein Wert um 1

                Übrigens, wenn Du das Format DATETIME für verdate verwendest, kannst Du auch gleich die Uhrzeit mit angeben das Format sieht dann so aus: 'YYYY-MM-DD HH:MM:SS', also beispielsweise '2002-05-25 19:00:00'

                Mit DATE_FORMAT(verdate,'%d.%m.%Y') würdest Du dasselbe Datumsformat erhalten wie jetzt oder DATE_FORMAT(verdate,'%d.%m.%Y %T') '25.05.2002 19:00:00'

                http://www.mysql.com/doc/D/a/Date_an...functions.html

                Dann könntest Du ganz sicher die Daten mit
                "DELETE FROM nbuilder_article WHERE verdate < now()" löschen.

                Sieht sich jemand die Seite um 18:00 Uhr desselben Tages an, bleibt der Record erhalten, um 19:01 Uhr gäbe es ihn dann eben nimmer, der Termin wäre ja bereits überschritten.

                Kommentar


                • #9
                  sehr schön geht alles wunderbar

                  kannst es dir ja auf den Seiten derAuferstehungskirche Wiener Neustadt ansehen

                  Vielen Dank!

                  Liebe Grüße
                  Clemens

                  Kommentar


                  • #10
                    DATE_FORMAT(verdate,'am %d.%m.%Y um %H:%i Uhr')
                    ist vielleicht besser, ergibt 'am 25.05.2002 um 19:00 Uhr'
                    (Sekundenangabe ist doch etwas übertrieben )

                    ciao

                    Kommentar

                    Lädt...
                    X