if-abfrage

Alles, was PHP betrifft, kann hier besprochen werden.

if-abfrage

Postby Short » 06. October 2003 17:58

Hallo Leute

Ich habe ein Problem was ich überhaupt nicht nachvollziehen kann.
Ich habe ein if-abfrage wo ich zwei Datums miteinander vergleiche.
Das eine Datum hole ich mir aus der Datenbank. Das Datenbankfeld ist date. Das andere Datum hole ich mir von der Funktion date(). Wie kann ich die beiden werte mit einnander vergleichen ?
So habe ich es aufgebaut. Auch wenn das selbe Datum ist, leider für ihn nicht gleich. Bin am verzweifeln.
$vardatum = date('Y-m-d', strtotime("$vartag day",$time_stamp)) ;
if( $vardatum == $zeile[flddatum] )

Dank im voraus
shorty
Short
 

Verwechselt?

Postby Straffi » 07. October 2003 19:18

Hallo,

Der Datentyp DATE von mySQL speichert ds Datum im Format YYYY-MM-DD also für heute etwa 2003-10-07.

Das selbe ereichst du unter PHP mit:

date("Y-m-d", timestamp)

ODER!!

strftime("%Y-%m-%d", timestamp)

wobei timestamp eine Zeitangabe im UNIX-Format sein muss.


gruß straffi
User avatar
Straffi
 
Posts: 120
Joined: 07. October 2003 17:48

Postby HardySim » 07. October 2003 19:21

ich würds einfach mit nem timestamp allgemein machen...

also in der tabelle nen normale spalte mit dem timestamp (INT oder so) und dann time();
[url=http://www.hardysim.de]
Image[/url]
www.party-safari.net
User avatar
HardySim
 
Posts: 325
Joined: 19. June 2003 10:22
Location: Geisenheim

Postby Straffi » 07. October 2003 19:49

Yepp,

damit hätte sich die ganze Sache mit den denglischen Datumsproblemen in Luft aufgelöst :D


mfg straffi
User avatar
Straffi
 
Posts: 120
Joined: 07. October 2003 17:48

Postby shorty » 07. October 2003 21:37

allso einfach den timestamp vergleichen ?
den jjjj-mm-dd mit jjjj-mm-dd zu vergleichen, da kann ich machen was ich will. das bekomme ich nicht hin
shorty
 

Postby HardySim » 08. October 2003 11:45

eben, du sollst ja einfach cen timestamp vergleichen, also diese 8stellige zahl (oder so) das einfaches mathe ;) und dann kannsze den tzimestamp ja mit date() beliebig formatieren

nur isses halt IN DER DATENBANK einfacher :)
[url=http://www.hardysim.de]
Image[/url]
www.party-safari.net
User avatar
HardySim
 
Posts: 325
Joined: 19. June 2003 10:22
Location: Geisenheim

Postby Shorty » 08. October 2003 17:24

Ist es den ein allgemeines Problem jjjj-mm-dd mit jjjj-mm-dd zu vergleichen ? Ich meine zwei Werte die gleich sind, müssten doch eigentlich auch gleich sein. Habe mit getype() nachgeschaut was es für variablen sind. Er sagt bei beiden, es sind Strings.

shorty
Shorty
 

Postby Oswald » 08. October 2003 18:27

Hallo Shorty!

Bist Du Dir sicher, dass $vardatum auch wirklich gleich $zeile[flddatum] ist?

Ein kleines Testskript beweist, dass es geht:

Code: Select all
<?
        $jetzt=strftime("%Y-%m-%d", time());
        $heute="2003-10-08";
        if($heute==$jetzt)
                echo "Jetzt ist heute";
        else
                echo "Jetzt ist nicht heute";
?>


Kannst Du Dein Programm noch ein bisschen ausführlicher hier posten? Irgendwo muss ja der Fehler sein.

Lieben Gruß
Oswald
User avatar
Oswald
Apache Friends
 
Posts: 2718
Joined: 26. December 2002 19:51
Location: Berlin, Germany
Operating System: Linux

Postby Shorty » 09. October 2003 18:29

Hallo Oswald

Ja, ich muss sagen dein Script ist ok. Es läuft auch bei mir. Also, ich möchte einen Besprechungsraum belegen können. Ich muß wissen an welchen Tag und von wieviel Uhr bis wann wieviel Uhr. In der DB habe ich für Tag = Date, für Uhrzeit = Time. Um meine Abfrage hinzubekommen hole ich mir mit Date() welchen Tag wir in der Woche haben. Da nach hole ich mir mit strtotime( - tag, now) den Montag. Den formatiere ich wieder mit Date(). Somit habe ich mein Datum und vergleiche ihn mit dem Datum aus der DB. Na ja, genau das klppt nicht. Ich zähle die Schleife auch richtig hoch. Leider kann ich dir so kein Script mehr zeigen, es ist völlig ausernader gebaut. Alles sagen ich muss über timestmap gehen. Jetzt das blöde an der Geschicht, das klappt leider auch nicht bei mir. Ich muss einen richtigen Denkfehler haben.

Gruß
Shorty
Shorty
 

Postby Oswald » 09. October 2003 19:21

Hallo Shorty!

Hast Du schon mal versucht beide Variablen (die, die Du vergleichst) auszugeben? So kannst Du mal sehen, was er da genau vergleicht!

Viel Erfolg
Oswald
User avatar
Oswald
Apache Friends
 
Posts: 2718
Joined: 26. December 2002 19:51
Location: Berlin, Germany
Operating System: Linux

Postby Shorty » 09. October 2003 20:50

Hallo Oswald

Habe hier mein altes Script gefunden. Ist ein wenig durcheinander.

function taganzeigen($t,$b)
{
// Hier werden die Buchungen von dieser Woche rausgesucht
$sql = "SELECT * FROM $GLOBALS[tabelle] WHERE WEEK($GLOBALS[tabelle].flddatum) >= WEEK(CURRENT_DATE) ORDER BY $GLOBALS[tabelle].flddatum ASC";

$abfrage = mysql_query($sql,$GLOBALS[verbindung])
or die("SQL-Abfrage hat nicht geklappt") ;
$anzahl = mysql_num_rows($abfrage) ;
echo "<h3>$anzahl<h3>" ;
$zeile = mysql_fetch_array($abfrage) ;

$time_stamp = strtotime('now') ; // Timestamp von heute ermitteln
$vartag = date('w', $time_stamp) ;
echo "<b>Tag = $vartag<b>". "<br>" ;

$vardatum = date('Y-m-d', strtotime("$vartag day",$time_stamp)). "<br>" ;
echo " hier vardatum = $vardatum" ;

$varstunde = date('G:00:00', strtotime("$vartag day",$time_stamp)). "<br>" ;
echo "varstunde = $varstunde" ;
echo "$zeile[flddatum]" ;


for($s = 0; $s < 5 ; $s++) // Hier geht es um den Tag
{
if( $vardatum == $zeile[flddatum] ) // vergleiche datum
{
echo "<tr><td>Montag</td>" ;
for($z = 0; $z < 13; $z++)
{
if($varstunde == $zeile[fldzeitvon])
{

echo date('G:i:s', strtotime("+ 1 hours",$time_stamp)). "hier ist meine zeit" ;
}
else
{
echo "<td>Rest</td>" ;
}
}
echo "</tr>" ;
}
else
{
echo "<tr><td>Montag</td>" ;
for($x = 0; $x < 13; $x++)
{
echo "<td>$vardatum</td>" ;
}
echo "</tr>" ;
}
$vartag++ ;
$vardatum = date('Y-m-d', strtotime(" + $vartag day",$time_stamp)) ;
}
}

Ich habe die variablen mit getype() sogar kontrolliert. Sie sehen einfach gleich aus und sind vom type String. Vielleicht kannst du ein richtigen Fehler sehen.
Gruß
Shorty
Shorty
 

Oh Mann...

Postby Straffi » 13. October 2003 13:39

Moin,

da sieht man doch ab und zu den Baum vor lauter Wäldern nicht...

Code: Select all
$vardatum = date('Y-m-d', strtotime("$vartag day",$time_stamp)). "<br>" ;

Du hängst hier ein br hinten dran, das zwar beim echo nicht (direkt) angezeigt, beim direkten Vergleich aber sehr wohl berücksichtigt wird.

mfg straffi

P.S.: strtotime("last Monday", timestamp) funktioniert auch...
User avatar
Straffi
 
Posts: 120
Joined: 07. October 2003 17:48

Postby Shorty » 17. October 2003 10:15

Danke an alle für die Hilfe
Damit bin ich weiter gekommen. Habe es aber besser nicht gewusst.

Shorty
Shorty
 


Return to PHP

Who is online

Users browsing this forum: No registered users and 18 guests