Daten aus Datenbank rausholen bezogen auf Eintragsdatum
ricardillo
- php
hallo an alle,
hier habe ich eien frage.
ich will aus ein Datenbank gewise information rausholen, dafür gebe ich ein zahl der entspricht ab wie viel tage sollen die dateien eingezeigt werden.
dafur habe ich folgende code gebaut.
Code:
<form action="select.php" method="post">
<input type="text" size="10" name="tagen" >
<input type="submit" name="taste2" value="Tage setzen">
<br>
<br>
<?
include "../../connect/connect_mssql.inc.php4";
$connect = new mssql_connection("rt4049","Baken_Oefen");
$start1=date("d.m.Y ", time()-(3600*24)*$tagen);//---- Start setzt die anzahl von Tage ab den die Tabelle erstellt wird
$sql = " select *
from Baken_Belegung where Start_zeit >= '$start1'";
$connect->dbSelect($sql);
$connect->show_data();
in mein datenbank gibt es daten von gestern und heute. ich habe noch dazu information eingegeben aber als eintragsdatum habe ich ein mal der 26. jul und auf anderes der 20.Apr. (nur zum testen, das habe ich gerade gemacht)
obwohl ich auf mein eingabefeld nur der zahl 1 eingebe ich bekomme auch die information mit eintragsdatum 26. jul und wenn ich 7 eingebe dan kommt noch dazu die information mit eintragsdatum 20.Apr. beim eingabe von zahlen zwischen 26 bis 30 bekomme ich überhaupt keine tabelle.
kann jeman mir helfen habe ich vielleicht mein $start1 falsch programiert
Hallo!
$start1=date("d.m.Y ", time()-(3600*24)*$tagen);//---- Start setzt die anzahl von Tage ab den die Tabelle erstellt wird
$sql = " select *
from Baken_Belegung where Start_zeit >= '$start1'";
$connect->dbSelect($sql);
$connect->show_data();
1. Welchen Spaltentyp hat den die Spalte Start_zeit?
2. Mit dem "deutsche" Datumsformat ("d.m.Y) kann MySQL nicts anfangen.
MfG, André Laugks
ich habe das datum mit folgende code gemacht
Code:
<td>
<input type="text" size="17" name="start1" style="background-color:#FFFF99";
value="<?php @print $_REQUEST['start1'];
if(isset($_POST['taste1']) && $start1=="")
{
$start1=date("d.m.Y H:i:s"); echo "$start1";
}
?>"
</td>
im daten bank hat folgende format:
20.04.2004 11:31:51
mit time stamp sahs so aus 20.jul.2004
Moin ricardillo,
im daten bank hat folgende format:
20.04.2004 11:31:51
so funktioniert das nicht. Du kannst nicht mit dem Datumsformat rechnen.
Du benötigst ein Feld vom Typ int oder Bigint in der DB.
Darin speicherst du das aktuelle Datum als Unix Timestamp.
Nehmen wir an der Name ist Start_zeit_timestamp.
$Current_Date=time();
Wenn Du nun als Eingabe 2 Tage hast, dann rechnest du die Tage in Sekunden um. $Day_Sec= Anzahl Tage * 86400 (1 Tag )
Tagesdatum - Anzahl Tage ( Zurückliegendes Datum )
$Past_Date=time();
$Past_Date-$Day_Sec;
Jetzt das statment ( select .... where Start_zeit_timestamp >= $Past_Day )
Grüsse
Mike
Hallo!
Du benötigst ein Feld vom Typ int oder Bigint in der DB.
Darin speicherst du das aktuelle Datum als Unix Timestamp.
Nehmen wir an der Name ist Start_zeit_timestamp.
Besser ist DATETIME.
Man muß ein Script oder SQL-Statment bauen, das die Daten von "20.04.2004 11:31:51" nach "2004-04-02 11:31:51" konvertiert.
Wenn Du nun als Eingabe 2 Tage hast, dann rechnest du die Tage in Sekunden um. $Day_Sec= Anzahl Tage * 86400 (1 Tag )
Mit SQL geht das kürzer. Dafür gibt es genug Funktionen.
MfG, André Laugks
Moin André,
Du benötigst ein Feld vom Typ int oder Bigint in der DB.
Darin speicherst du das aktuelle Datum als Unix Timestamp.
Nehmen wir an der Name ist Start_zeit_timestamp.Besser ist DATETIME.
OK
Wenn Du nun als Eingabe 2 Tage hast, dann rechnest du die Tage in Sekunden um. $Day_Sec= Anzahl Tage * 86400 (1 Tag )
Mit SQL geht das kürzer. Dafür gibt es genug Funktionen.
Ich wollte das Prinzip erklären ;-)
Grüsse
Mike
Moin icardillo,
$start1=date("d.m.Y ", time()-(3600*24)*$tagen);//---- Start setzt die anzahl von Tage ab den die Tabelle erstellt wird
$sql = " select *
from Baken_Belegung where Start_zeit >= '$start1'";
$connect->dbSelect($sql);
$connect->show_data();
Wenn ich das richtig deute, dann rechnest du mit Werten im Datumsformat. Was für ein Datentyp hat das Feld Start_zeit in der DB?
Du solltest besser mit dem timestamp arbeiten. time()
Grüsse
Mike
laß doch mysql rechnen:
where Start_zeit >= (NOW() - INTERVAL xxx DAY)
Hallo!
where Start_zeit >= (NOW() - INTERVAL xxx DAY)
Ja, aber nicht mit dem Format in der Spalte.
MfG, André Laugks
Ja, aber nicht mit dem Format in der Spalte.
welches format ??
Hallo
welches format ??
ricardillo hat sich eine Spalte mit selbstgebasteltem Zeitformat (21.07.2004 14:56:34) angelegt.
Somit kann er auch nicht das DBMS rechnen lassen, weil selbiges sein Format nicht versteht.
Er sollte also die dafür vorgesehenen Typen (date, time, datetime, timestamp) benutzen.
Dann funktioniert auch dein Vorschlag.
Tschö, Auge
mir ist kein 'selbstgebastelter' datentyp in mysql bekannt, sondern nur convertangaben beim schreiben/lesen.
für DatumZeit nehme ich immer datetime. dann kann man mit diesem datum rechnen.
hier ein auszug aus meinem programm für älter als 3 tage:
$MySQL->nimmWHERE('DatumZeit < DATE_SUB(NOW(), INTERVAL 3 DAY)');
der sql teil:
DatumZeit < DATE_SUB(NOW(), INTERVAL 3 DAY)
wobei DatumZeit vom type datetime ist.
um mehr transparenz zu bekommen, nutze ich die funktion date_sub, geht aber auch ohne.
Hallo
mir ist kein 'selbstgebastelter' datentyp in mysql bekannt, sondern nur convertangaben beim schreiben/lesen.
für DatumZeit nehme ich immer datetime. dann kann man mit diesem datum rechnen.
Ist ja alles schön und gut und richtig. Er aber benutzt _doch_
einen selbsgebastelten Typ: https://forum.selfhtml.org/?t=88314&m=526403
Tschö, Auge
?????????????????????????????????????
ich habe leider keine sql-doku gefunden, welche 'selbstgebastelte' datentypen ermöglicht.
wäre nett, wenn du mal die quelle nennen könntest.
ich habe leider keine sql-doku gefunden, welche 'selbstgebastelte' datentypen ermöglicht.
Das ist kein SQL sondern Sache des Datenbanksystems!
MfG, André Laugks
Hallo
?????????????????????????????????????
Taste kaputt?
ich habe leider keine sql-doku gefunden, welche 'selbstgebastelte' datentypen ermöglicht.
Ok ok ok, noch mal ganz genau: Es geht natürlich nicht um einen Datentypen,
sondern um ein Feld der DB, in dem er Datum und Zeit in einem selbst
festgelegten Format speichert, welches nicht dem Format entspricht, daß
das DBMS anbietet und mit dem es auch rechnen könnte.
Wolltest du darauf hinaus?
Tschö, Auge