Datensatzausgabe nur ab einem bestimmten datum

skydragon

Mitglied
Hab ein kleines Problem

ich hab ne terminabfrage und möchte das immer nur die datensätze ausgegeben werden, die heute oder in der nächsten zeit anstehen
dazu folgenden code
PHP:
$datum = date(d.".".m.".".Y);
echo $datum;
  $term = "SELECT * FROM termine WHERE datum >= '$datum' ORDER BY datum ASC";
  //echo $term;
  $erg = mysql_query($term);
  //echo mysql_errno() . ": " . mysql_error(). "\n";
  $num = mysql_affected_rows();
  if ($num > 0){ 
  while($row = mysql_fetch_array($erg,MYSQL_ASSOC)){
      
    $id = $row['id'];
    $dat = $row['datum'];
    $termin = $row['termin'];
    
    ?>
    <center width = "400px">
    <p>
      <table bgcolor = "#FFFF00">
        <tr>
          <td width = "200px">
            Datum:
          </td>
          <td width = "200px">
            <? echo $dat; ?>
          </td>
        </tr> 
        <tr><td colspan = 2 height=3px bgcolor=#FFFFFF> </td></tr>
			     
        <tr>
          <td colspan = "2">
            <? echo $termin; ?>
          </td>          
        </tr>
      </table>  
      <p>
      <p>
      </center>
  <?
  }
}
else
  {echo "Leider sind noch keine Termine bekannt!";}
 ?>

leider funktioniert dies nicht so wie es soll. er prüft nur ob der tag und nicht das gesamte datum.
 
Aloah,

wenn ich mir so die Definition von date() auf der php.net seite anschaue, ist mir schon klar, warum das wohl nicht geht:
string date ( string format [, int timestamp] )

Returns a string formatted according to the given format string using the given integer timestamp or the current local time if no timestamp is given. In other words, timestamp is optional and defaults to the value of time().

Was du bräuchtest ist mktime(). Bei dieser Funktion wird das Datum in einen int-Wert umgewandelt, der den Abstand von einem festen Zeitpunkt (Unix-Timestamp) berechnet. Dadurch sparst du dir zum einen nervige Datumsformate und du kannst zum anderen einfach int-Wert der Größe nach vergleichen.
Hoffe das hilft dir weiter.

Gulasch!
 
so hab das mal auspobiert und mir die werde ausgeben lassen. wenn ich die mktimewerte ausgeben lasse, hab ich etwas gemerkt, was mich verwundert hat.
in der DB sind die Daten so hinterlegt: 25.07.2006.
wenn ich nun einen termin auf den 30.07.2006 und 30.07.2007 ansetze bekomme ich zwei identische int werte. ist doch ein wenig komisch weil die daten ein jahr auseinander liegen
 
PHP:
$datum = date(d.".".m.".".Y);
$go = "geil";

$test = mktime($geil). "<br>";
echo $test;
  $term = "SELECT * FROM termine WHERE datum >= '$test' ORDER BY datum ASC";
  //echo $term;
  $erg = mysql_query($term);
  //echo mysql_errno() . ": " . mysql_error(). "\n";
  $num = mysql_affected_rows();
  if ($num > 0){ 
  while($row = mysql_fetch_array($erg,MYSQL_ASSOC)){
      
    $id = $row['id'];
    $dat = $row['datum'];
    $termin = $row['termin'];
    echo mktime($dat);
    ?>
    <center width = "400px">
    <p>
      <table bgcolor = "#FFFF00">
        <tr>
          <td width = "200px">
            Datum:
          </td>
          <td width = "200px">
            <? echo $dat; ?>
          </td>
        </tr> 
        <tr><td colspan = 2 height=3px bgcolor=#FFFFFF> </td></tr>
			     
        <tr>
          <td colspan = "2">
            <? echo $termin; ?>
          </td>          
        </tr>
      </table>  
      <p>
      <p>
      </center>
 
Ah ja,
ich bräucht jetzt allerdings noch die Info was genau
Code:
$geil
ist.
Ausserdem:
Code:
$test = mktime($geil). "<br>"; 
echo $test; 
  $term = "SELECT * FROM termine WHERE datum >= '$test' ORDER BY datum ASC";
Hier setzt du $test auf eine String-Variable indem du sie mit "<br>" verbindest und anschließend vergleichst du datum mit eben diesem String. Das kann nicht klappen.
 
das war eigentlich nur um was zu testen habs vergessen wieder um zu ändern

PHP:
$datum = date(d.".".m.".".Y);


$test = mktime($datum). "<br>";
echo $test;
  $term = "SELECT * FROM termine WHERE datum >= $test ORDER BY datum ASC";
  //echo $term;
  $erg = mysql_query($term);
  //echo mysql_errno() . ": " . mysql_error(). "\n";
  $num = mysql_affected_rows();
  if ($num > 0){ 
  while($row = mysql_fetch_array($erg,MYSQL_ASSOC)){
      
    $id = $row['id'];
    $dat = $row['datum'];
    $termin = $row['termin'];
    echo mktime($dat);
    ?>
    <center width = "400px">
    <p>
      <table bgcolor = "#FFFF00">
        <tr>
          <td width = "200px">
            Datum:
          </td>
          <td width = "200px">
            <? echo $dat; ?>
          </td>
        </tr> 
        <tr><td colspan = 2 height=3px bgcolor=#FFFFFF> </td></tr>
			     
        <tr>
          <td colspan = "2">
            <? echo $termin; ?>
          </td>          
        </tr>
      </table>  
      <p>
      <p>
      </center>
  <?
  }
}
else
  {echo "Leider sind noch keine Termine bekannt!";}
 
Schau dir mal den Aufruf von mktime genau an. Versuch es mal mit:
php.net hat gesagt.:
It is possible to use date() and mktime() together to find dates in the future or the past.
Example 3. date() and mktime()example
PHP:
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),  date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),  date("d"),  date("Y")+1);
 
Zurück