 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
10.07.2008, 13:38
|
#1
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
Komisches Datum bei strtotime(
Hallo zusammen,
bin gerade auf ein sonderbares Problem bei der Anwendung der Funktion strtotime( gestoßen. Diese habe ich verwendet, um mein echo-Ausgabe des Datums ans deutsche Format ('d.m.Y') anzupassen.
Nun klappt das eigentlich, nur leider nicht an folgender Stelle:
PHP-Code:
<?php if($totalRows_Detailabfrage_7 > 0) ?>
<?php do { ?>
<tr>
<td><span><strong><?php echo $row_Detailabfrage_7['name']; ?></strong></span></td>
<td><span><strong><?php echo date('d.m.Y', strtotime($row_Detailabfrage_7['datum'])); ?></strong></span></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td colspan="4"><span><?php echo $row_Detailabfrage_7['text']; ?></span></td>
</tr>
<tr>
<td colspan="4"><hr></td>
</tr>
<?php } while ($row_Detailabfrage_7 = mysql_fetch_assoc($Detailabfrage_7)); ?>
Dabei werden die Treffer nacheinander aus der DB mit dem jeweiligen ausgelesen und angezeigt. Bevor aber der erste Treffer angezeigt wird, steht da das komische Datum 01.01.1970.
Im Quelltext steht dann da:
<td><span><strong>01.01.1970</strong></span></td>
Kann mir jemand sagen wie das da hinkommt und schnellstmöglich wieder verschwindet? (Schaut nämlich ziemlich komisch aus...)
Vielen Dank!
|
|
|
10.07.2008, 14:58
|
#2
|
|
TP-Moderator
Registriert seit: Nov 2004
Ort: Wuppertal
|
Was steht denn in der Variable $row_Detailabfrage_7['datum'] drin bzw. steht da überhaupt was drin?
Denn wie du weißt, gibt der Timestamp die Sekunden, beginnend bei einem bestimmten Datum an - und jetzt darfst du raten, bei welchem 
Wenn also strtotime() kein Datum in der Variable erkennen kann, gibt es keinen Timestamp zurück und das dürfte die Funktion date() als 0 auffassen und das dazu passende Datum ausgeben.
__________________
Chuck Norris darf während der Fahrt mit dem Busfahrer sprechen!
|
|
|
10.07.2008, 15:58
|
#3
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
Das Datum wird per TIMESTAMP gespeichert, da hast du richtig vermutet. Allerdings wird mir das 1970er Datum sowohl angezeigt, wenn der String ein leeres Ergebnis liefert, als auch wenn Treffer angezeigt werden.
Allerdings: Wenn Treffer da sind, erkennt er ja die Daten, er schiebt mir nur an den Anfang der Liste das 1970er.
Wenn keine Treffer da sind, sollte er doch eigentlich das echo nicht ausführen... 
Was kann ich also machen?
|
|
|
10.07.2008, 16:06
|
#4
|
|
TP-Moderator
Registriert seit: Nov 2004
Ort: Wuppertal
|
a) Wenn du schon einen Timestamp hast: Wieso benutzt du dann strtotime()?
b) Wo kommt $totalRows_Detailabfrage_7 her?
Da könnte man doch einfach in der if-Abfrage stattdessen
count($row_Detailabfrage_7) einsetzen. Das ist viel sicherer, weil du die Variable prüfst, die du später auch ausgeben willst
__________________
Chuck Norris darf während der Fahrt mit dem Busfahrer sprechen!
|
|
|
10.07.2008, 16:54
|
#5
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
zu a) Ich bin auf diese Funktion gestoßen, habe sie an verschiedenen Stellen auch schon erfolgreich angewendet.Nur hier scheint sie nicht zu gehen.
zu b) Der Abfragestring:
PHP-Code:
mysql_select_db($database_Studios, $Studios);
$query_Detailabfrage_7 = sprintf("SELECT id, bewertungsid, name, datum, text, freigeben FROM tbl_bew_kommentieren WHERE bewertungsid = $colname_Detailabfrage_3", GetSQLValueString($colname_Detailabfrage_7, "int"));
$Detailabfrage_7 = mysql_query($query_Detailabfrage_7, $Studios) or die(mysql_error());
$totalRows_Detailabfrage_7 = mysql_num_rows($Detailabfrage_7);
Und wie kann ich da das count verwenden?
|
|
|
10.07.2008, 17:47
|
#6
|
|
TP-Moderator
Registriert seit: Nov 2004
Ort: Wuppertal
|
Zitat:
Zitat von Marki87
zu a) Ich bin auf diese Funktion gestoßen, habe sie an verschiedenen Stellen auch schon erfolgreich angewendet.Nur hier scheint sie nicht zu gehen.
|
Nunja, wenn du versuchst einen Timestamp in einen Timestamp zu wandeln... 
Zitat aus der PHP-Doku: "Diese Funktion erwartet einen String mit einem Datum im englischen Format und versucht diesen in einen Unix-Timestamp umzuwandeln".
Wir verweisen nicht auf die Dokumentationen von PHP um dich zu ärgern, sondern weil dort steht, was eine Funktion tut und welche Alternativen man hat, die es besser können.
Die haben auch die Möglichkeit, dass man sich die PHP-Suche direkt ins Firefox-Suchfeld integrieren kann.
Zitat:
Zitat von Marki87
Und wie kann ich da das count verwenden?
|
Du ersetzt dein <?php if($totalRows_Detailabfrage_7 > 0) ?> durch
<?php if(count($row_Detailabfrage_7) > 0) ?> .
Wenn du das Array nicht vorher von Hand zusammenbastelst, sondern durch MySQL oder sonstwas generiert wird, sollte das funktionieren.
Siehe auch count()-Doku, gelbes Feld. Denn falls die Variable innerhalb einer if-Abfrage erstellt wird, kannst du noch einfacher mit isset() prüfen, ob die Variable überhaupt exisitert.
__________________
Chuck Norris darf während der Fahrt mit dem Busfahrer sprechen!
|
|
|
10.07.2008, 18:31
|
#7
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
Gibt es dann eine Alternative für strtotime, die genau das Gleiche bewirkt, aber den String nicht in einen TIMESTAMP umwandelt?
Denn mit dem Ergebnis bin ich ja wie gesagt an anderer Stelle zufrieden.
Das mit dem count habe ich jetzt übrigens geändert.
|
|
|
10.07.2008, 18:47
|
#8
|
|
TP-Moderator
Registriert seit: Nov 2004
Ort: Wuppertal
|
Nochmal für mich:
Habe ich das richtig verstanden, du hast das Datum als Timestamp in der Datenbank stehen?
Warum um alles in der Welt, willst du dann den Timestamp in einen Timestamp konvertieren?! Das ist ja so, als wollte ich eine grüne Wand im gleichen Grün neu anstreichen, weil mir die Farbe nicht gefällt...
Nimm einfach date(), wie du es jetzt hast und setze die Variable direkt ohne strtotime() ein.
__________________
Chuck Norris darf während der Fahrt mit dem Busfahrer sprechen!
|
|
|
10.07.2008, 20:58
|
#9
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
Wenn ich nur date() nehme,zeigt er mir das amerikanische Datumsformat an:
Das
PHP-Code:
<?php echo date($row_Detailabfrage_2['datum']); ?>
führt zu dem : 2008-07-06 17:41:55
Alles was ich will, ist eine europäische Datumsanzeige: 6.7.2008 17:41.
Das war mein Ziel.
Kannst du mir sagen, wie ich date() verwenden muss, um die europäische Version zu bekommen?
|
|
|
10.07.2008, 21:11
|
#10
|
|
TP-Insider
Registriert seit: Nov 2006
Ort: Lübeck
|
Nabend,
ganz oben hast du date doch schon richtig benutzt.
Unter: http://de3.php.net/date kannst du dir die verschiedenen Formatierungsmoeglichkeiten ansehen.
|
|
|
10.07.2008, 22:17
|
#11
|
|
TP-Moderator
Registriert seit: Jun 2004
Ort: Hannover
|
Wär es nicht langsam mal Zeit, ein Vernünftiges PHP- Buch durchzuarbeiten, und dabei wenigstens die Grundlagen zu lernen?
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
|
|
|
11.07.2008, 04:16
|
#12
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 20:41 Uhr.
|
 |