Datum nur einmal am Tag ausgeben!

Dieses Thema im Forum "Webentwicklung" wurde erstellt von RaKo, 6. November 2005 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 6. November 2005
    Hallo,

    ist bischen schwer zu beschreiben was ich haben will, hat auch bischen was mit php zu tun, darum wenns hier falsch ist dann bitte verschieben.

    Also:
    Ich habe hier so ein kleins "script" geschrieben, das in die zeile das Datum, den eintrag und namen und sowas einträgt, was man halt angegeben hat.

    Wenn ich das nun ausgebe, wird das so angezeigt:
    4.11.05
    eintrag1
    4.11.05
    eintrag2
    4.11.05
    eintrag3
    5.11.05
    eintrag1
    5.11.05
    eintrag2....
    u.s.w.!

    $sql = mysql_query("SELECT * FROM e_accept WHERE mov!='' ORDER BY id ASC");

    so ist dann halt die abfrage.
    wie kann ich das nun so machen, das ein Datum nur einmal angezeigt wird an dem Tag? Also so:

    4.11.05
    eintrag1
    eintrag2
    eintrag3
    5.11.05
    eintrag1
    eintrag2

    würde das gehen? wenn ja wie?

    Danke schonmal für die Hilfe, Greetz RaKo
     
  2. 6. November 2005
    ist die zeile wo das dutm drin steht eine TIME zeile?
    dann mach doch als erstes einen query für das datum und dann ein nächstes query für die einträge.
    also so:

    echo $datum;
    echo $einträge;

    bei $einträge dann halt WHERE Datum=now();

    Oder verstehe ich was falsch?
     
  3. 6. November 2005
    PHP:
    CREATE TABLE  ` e_accept ` (
      `
    id int ( 7 NOT NULL auto_increment ,
      `
    email varchar ( 20 NOT NULL  default  '' ,
      `
    name varchar ( 10 NOT NULL  default  '' ,
      `
    url varchar ( 50 NOT NULL  default  '' ,
      `
    news text NOT NULL ,
      `
    mov text NOT NULL ,
      `
    gam text NOT NULL ,
      `
    apps text NOT NULL ,
      `
    mp3 text NOT NULL ,
      `
    xxx text NOT NULL ,
      `
    books text NOT NULL ,
      `
    datum date NOT NULL  default  '0000-00-00' ,
      `
    zeit time NOT NULL  default  '00:00:00' ,
      
    PRIMARY KEY   (` id `)
    )

    PHP:
    <? include( "mysql.php" );  ?>
    <?

    $sql 
    mysql_query ( "SELECT * FROM e_accept WHERE mov!='' ORDER BY id ASC" );

    while (
    $row  mysql_fetch_array ( $sql )) 

    $id  $row [ "id" ];
    $email  $row [ "email" ];
    $name  $row [ "name" ];
    $url  $row [ "url" ];
    $news  $row [ "news" ];
    $mov  $row [ "mov" ];
    $gam  $row [ "gam" ];
    $apps  $row [ "apps" ];
    $mp3  $row [ "mp3" ];
    $xxx  $row [ "xxx" ];
    $books  $row [ "books" ];
    $datum  $row [ "datum" ];
    $zeit  $row [ "zeit" ];

    $explode  explode ( "-" , $datum );
    $gerdate  " $explode [ 2 ] . $explode [ 1 ] . $explode [ 0 ] " ;

    $explode2  explode ( ":" , $zeit );
    $gerzeit  " $explode2 [ 0 ] : $explode2 [ 1 ] " ;

    echo 
    "<table border='0' cellspacing='1' cellpadding='3' width='100%'>
      <tr>
         <td valign='top'>
          <div class='smalltext'>Last check: 
    $gerdate $gerzeit  Uhr</div>
        </td>
      </tr>
      <tr>
         <td align='left'>
           <div class='header'><a href='
    $url '> $name </a></div></td>
      </tr>
      <tr>
         <td align='{align}' valign='top'>
           <div class='news'>
    $mov </div></td>
      </tr>
    </table>

    "
    ;
    }
    ?>
    So habe ich das im moment!
    So und wenn ich mir das angucke steht da immer wieder das datum doppel, is ja klar ich will aber das das nicht so ist .. dachte erst an eine if abfrage, if datum doppelt dann so .. wenn nur einmal dann so oder irgend sowas

    Danke, Greetz RaKo
     
  4. 6. November 2005
    Nee guck ma...

    Die $row abfrage nimmt ja wegen dem * in dem query alle sachen.

    Und listet die dann auf. Aber in dieser auflistung ist das Datum drin. also wird er das auch jedesmal mit anzeigen.

    Code:
    <? include("mysql.php"); ?>
    <?
    
    $sql = mysql_query("SELECT * FROM e_accept WHERE mov!='' ORDER BY id ASC");
    
    $info = mysql_fetch_array ($sql);
    
    $info["datum"] = $datum;
    $info["zeit"] = $zeit;
    
    $explode = explode("-",$datum);
    $gerdate = "$explode[2].$explode[1].$explode[0]";
    
    $explode2 = explode(":",$zeit);
    $gerzeit = "$explode2[0]:$explode2[1]";
    
    echo "<table border='0' cellspacing='1' cellpadding='3' width='100%'>
     <tr>
     <td valign='top'>
     <div class='smalltext'>Last check: $gerdate, $gerzeit Uhr</div>
     </td>
     </tr>
    ";
    
    while ($row = mysql_fetch_array($sql)) 
    { 
    $id = $row["id"];
    $email = $row["email"];
    $name = $row["name"];
    $url = $row["url"];
    $news = $row["news"];
    $mov = $row["mov"];
    $gam = $row["gam"];
    $apps = $row["apps"];
    $mp3 = $row["mp3"];
    $xxx = $row["xxx"];
    $books = $row["books"];
    
    echo "<table border='0' cellspacing='1' cellpadding='3' width='100%'>
     <tr>
     <td align='left'>
     <div class='header'><a href='$url'>$name</a></div></td>
     </tr>
     <tr>
     <td align='{align}' valign='top'>
     <div class='news'>$mov</div></td>
     </tr>
    
    ";
    }
    echo "</table>";
    ?>
    
    Was kommt denn wenn du die datei so machst. Wenn fehler drin sind, sags mir bidde ich bin gerade bischen müde, sry!
     
  5. 6. November 2005
    Die Einträge stehen zwar da, habe auch welche mti unterschiedlichem datum, aber es steht oben nur EINMAL! das hier:
    Last check: .., : Uhr

    und es soll ja immer wieder kommen .. halt wenn das datum anders ist.

    das heisst wenn ich 5 Einträge mit dem gestrigen datum habe, dann soll der das datum nur einmal oben drüber ausgeben. dann habe ich noch 2 einträge von heute und da soll er auch einmal das heutige datum drüberschreiben.

    Greetz RaKo
     
  6. 6. November 2005
    Achso, ok probiers mal hiermit und lads dann hoch udn schreib mit mal entweder per PN oder hier im thread die URl damit ich mir des mal angucken kann plz.

    Code:
    <? include("mysql.php"); ?>
    <?
    
    $sql = mysql_query("SELECT * FROM e_accept WHERE mov!='' ORDER BY id ASC");
    $sqldatumzeit = mysql_query("SELECT datum, zeit FROM e_accept WHERE mov!='' LIMIT 1");
    
    while ($row = mysql_fetch_assoc($sqldatumzeit)) 
    { 
    $datum = $row["datum"];
    $zeit = $row["zeit"];
    
    $explode = explode("-",$datum);
    $gerdate = "$explode[2].$explode[1].$explode[0]";
    
    $explode2 = explode(":",$zeit);
    $gerzeit = "$explode2[0]:$explode2[1]";
    
    echo "<table border='0' cellspacing='1' cellpadding='3' width='100%'>
     <tr>
     <td valign='top'>
     <div class='smalltext'>Last check: $gerdate, $gerzeit Uhr</div>
     </td>
     </tr>
     ";
     
     while($row = mysql_fetch_assoc($sql))
     {
     $id = $row["id"];
    $email = $row["email"];
    $name = $row["name"];
    $url = $row["url"];
    $news = $row["news"];
    $mov = $row["mov"];
    $gam = $row["gam"];
    $apps = $row["apps"];
    $mp3 = $row["mp3"];
    $xxx = $row["xxx"];
    $books = $row["books"];
    echo "
     <tr>
     <td align='left'>
     <div class='header'><a href='$url'>$name</a></div></td>
     </tr>
     <tr>
     <td align='{align}' valign='top'>
     <div class='news'>$mov</div></td>
     </tr>
    ";
     }
     
     echo "
    </table>
    
    ";
    }
    ?>
    Ich kanns gerade nicht probieren also wie gesagt, lad hoch zeig mir mal die URL.
     
  7. 6. November 2005
    Hast ne PN
     
  8. 7. November 2005
    kann mir tortzdem nochmal jemand helfen?
    Habe es immernoch nicht geschafft!
     
  9. 7. November 2005
    das script sollte erstmal so aussehen da html tag im php code ist

    und dann war die sql abfrage falsch die aber schon korrigiert wurde und noch ein fehler der aber nichts ausmacht man speichert seine db connection immer als inc.php ab

    dazu hattest du die abfrage vorhergeschlossen als bevor die tabel geschlossen wurde


    PHP:
    <? include( "mysql.php" );




    $info [ "datum" ] =  $datum ;
    $info [ "zeit" ] =  $zeit ;

    $explode  explode ( "-" , $datum );
    $gerdate  " $explode [ 2 ] . $explode [ 1 ] . $explode [ 0 ] " ;

    $explode2  explode ( ":" , $zeit );
    $gerzeit  " $explode2 [ 0 ] : $explode2 [ 1 ] " ;

    ?>

    <table border='0' cellspacing='1' cellpadding='3' width='100%'>
      <tr>
         <td valign='top'>
          <div class='smalltext'>Last check:<?  echo   $gerdate $gerzeit  ; ?>Uhr</div>
        </td>
      </tr>


    <?
    $sql 
    mysql_query ( "SELECT * FROM e_accept WHERE mov!='' ORDER BY id ASC" );
    $info  mysql_fetch_array  ( $sql );
    while (
    $row  mysql_fetch_array ( $info )) 

    $id  $row [ "id" ];
    $email  $row [ "email" ];
    $name  $row [ "name" ];
    $url  $row [ "url" ];
    $news  $row [ "news" ];
    $mov  $row [ "mov" ];
    $gam  $row [ "gam" ];
    $apps  $row [ "apps" ];
    $mp3  $row [ "mp3" ];
    $xxx  $row [ "xxx" ];
    $books  $row [ "books" ];
    ?>

    <table border='0' cellspacing='1' cellpadding='3' width='100%'>
      <tr>
         <td align='left'>
           <div class='header'><a href='<?  echo  $url ; ?>'><?  echo  $name ; ?></a></div></td>
      </tr>
      <tr>
         <td align='{align}' valign='top'>
           <div class='news'><?  echo  $mov ; ?></div></td>
      </tr>
    </table>
    <?
    }
    ?>

     
  10. 7. November 2005
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/local/pem/vhosts/13979/webspace/httpdocs/test/movies.php on line 28
    Last check: $gerdate, $gerzeit Uhr

    kommt nun leider ein Fehler, aber danke schonmal, das du das so ordentlich gemacht hast.


    Edit: habe gerade noch gesagt bekommen, das es besser ist, wenn ich das in timestamp speicher oder so.


    Edit2:
    Nun habe ich in einem anderen FOrum noch das hier bekommen damit das datum nur einmal gepostet wird:


    PHP:
    function  newsticker () {
     
    $out  "" ;
     
    temptime  "" ;
     while(
    deine dbabfrage hier ) {
      if(
    $temptime  !=  db [ 'time' ]) {
       
    $temptime  db [ 'time' ];
       
    $out  .=  "news, " . $temptime . "<br>" ;
      }
      
    $out  .=  db [ 'topic' ]. "<br>" . "\n" ;
     }
     return 
    $out ;
    }

    echo 
    newsticker ();
     
  11. 7. November 2005
    für mich kommt es immer auf den phpmyadmin an der das ausgibt der neue ist ok der alte nicht

    wenn das feld datum heißt und timestamp wird es im alten so gespeichert

    18590007112005 und im neuem 18:59:00-07-11-2005

    und so kannst du es einfügen in die Db

    deine varialbe z.b.
    datum

    datum=now()



    ich mache es lieber über int und time()

    ist aber jedem überlassen



    Code:
    <table border='0' cellspacing='1' cellpadding='3' width='100%'>
     <tr>
     <td valign='top'>
     <div class='smalltext'>Last check:<? echo $gerdate;?>, <? echo$gerzeit ;?>Uhr</div>
     </td>
     </tr>
    
    ersetzen ^^
     
  12. 7. November 2005
    Habe das nun so hier stehen:

    PHP:
    <? include( "mysql.php" );

    $sql  mysql_query ( "SELECT * FROM e_accept WHERE mov!='' ORDER BY id ASC" );
    while (
    $row  mysql_fetch_array ( $sql )) 

    $id  $row [ "id" ];
    $email  $row [ "email" ];
    $name  $row [ "name" ];
    $url  $row [ "url" ];
    $news  $row [ "news" ];
    $mov  $row [ "mov" ];
    $gam  $row [ "gam" ];
    $apps  $row [ "apps" ];
    $mp3  $row [ "mp3" ];
    $xxx  $row [ "xxx" ];
    $books  $row [ "books" ];
    $time  $row [ "time" ];
    ?>

    <table border='0' cellspacing='1' cellpadding='3' width='100%'>
      <tr>
         <td valign='top'>
          <div class='smalltext'>Last check:<?  echo  $time ; ?>Uhr</div>
        </td>
      </tr>
      <tr>
         <td align='left'>
           <div class='header'><a href='<?  echo  $url ; ?>'><?  echo  $name ; ?></a></div></td>
      </tr>
      <tr>
         <td align='{align}' valign='top'>
           <div class='news'><?  echo  $mov ; ?></div></td>
      </tr>
    </table>
    <?
    }
    ?>

    wie baue ich nun das hier ein? wurde mir so in einem anderen forum gesagt, damit das Datum nicht doppelt kommt, oder das datum, was im Timestamp drinne steht:

    PHP:
    function  newsticker () {
     
    $out  "" ;
     
    temptime  "" ;
     while(
    deine dbabfrage hier ) {
      if(
    $temptime  !=  db [ 'time' ]) {
       
    $temptime  db [ 'time' ];
       
    $out  .=  "news, " . $temptime . "<br>" ;
      }
      
    $out  .=  db [ 'topic' ]. "<br>" . "\n" ;
     }
     return 
    $out ;
    }

    echo 
    newsticker ();

    Auserdem wurde mir noch das hier geschrieben:

    als erstes bringst du deinen timestamp in ein geeignetes format:
    http://www.php.net/manual/en/function.date.php - die selbe funktion gibts imho auch für mysql, hab sie aber auf die schnelle nicht gefunden. hab mir sagen lassen das es besser ist wenn du das datum schon in mysql formatierst, soll wohl schneller sein.

    dann diesen timestamp innerhalb deiner schleife (in welcher du die ergebnisse aus der db durchläufst) mit dem aus der vorherigen vergleichen - wenns der selbe string ist mach nix, ansonsten temp-var mit neuem wert überschreiben und datum ausgeben.
    sollte etwa so aussehen

    Danke, Greetz RaKo

    p.s. das mit dem timestamp speichern geht ja jetzt!
     
  13. 7. November 2005
    Es ist immer einfacher, wenn der programierer es selbst schreibt. Da lernt er was und außerdem kann der sich das auch besser vorstellen, da er sich am längsten damit beschäftigt hat.

    Du hast momentan eine schleife da drin. Diese Schleife gibt immer das datum und eine eintrag aus. Meiner Meinung nach brauchst du 2 schleifen. Eine fürs datum und eine für die einträge. In den query fürs datum kannst du ja mal LIMIT 1 dranhängen. Dann macht der vielleicht nur eins.
     
  14. 7. November 2005
    Kannst das mit dem Datum nochmal hier machen?
    Is ja jetzt mit timestamp gespeichert:

    PHP:
    <? include( "mysql.php" );

    $sql  mysql_query ( "SELECT * FROM e_accept WHERE mov!='' ORDER BY id ASC" );
    while (
    $row  mysql_fetch_array ( $sql )) 

    $id  $row [ "id" ];
    $email  $row [ "email" ];
    $name  $row [ "name" ];
    $url  $row [ "url" ];
    $news  $row [ "news" ];
    $mov  $row [ "mov" ];
    $gam  $row [ "gam" ];
    $apps  $row [ "apps" ];
    $mp3  $row [ "mp3" ];
    $xxx  $row [ "xxx" ];
    $books  $row [ "books" ];
    $time  $row [ "time" ];
    ?>

    <table border='0' cellspacing='1' cellpadding='3' width='100%'>
      <tr>
         <td valign='top'>
          <div class='smalltext'>Last check:<?  echo  $time ; ?>Uhr</div>
        </td>
      </tr>
      <tr>
         <td align='left'>
           <div class='header'><a href='<?  echo  $url ; ?>'><?  echo  $name ; ?></a></div></td>
      </tr>
      <tr>
         <td align='{align}' valign='top'>
           <div class='news'><?  echo  $mov ; ?></div></td>
      </tr>
    </table>
    <?
    }
    ?>
    Wäre die sehr dankbar
     
  15. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.