PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit MySQL-Query



magpie
10-04-2003, 18:29
Ich habe eine Datenbank in der ich Termine verwalte. Eine Spalte beinhaltet ein Datum. Zur Datumsausgabe möchte ich nun den MySQL-Befeht DATE_FORMAT() verwenden. Ich habe das ganze im phpMyAdmin getestet und da funktioniert es auch. Wenn ich nun die Abfrage in meinen PHP-Script mach krieg ich keine Ausgabe.

Hier ein bischen Code:

Die Tabelle

CREATE TABLE b_termine (
b_id int(4) unsigned NOT NULL auto_increment,
b_date date default '0000-00-00',
b_where varchar(20) default NULL,
b_league varchar(10) default NULL,
b_time time default '00:00:00',
b_who varchar(60) default NULL,
b_rank varchar(8) default NULL,
PRIMARY KEY (b_id)
) ENGINE=MyISAM;

Das PHP-Script

<?php
/* Stellt eine Verbindung zur Datenbank her */
$db = db_connect()
or die ("cannot connect to server");

/* Anfrage an MySQL-Server*/

$query = 'SELECT DATE_FORMAT(b_date,"%d.%m.%Y"), b_where, b_league, b_time, b_who, b_rank ';
$query .= 'FROM b_termine ';
$query .= 'WHERE b_date like \'%' .$fo_jahr. '%\' ';
$query .= 'AND b_league like \'%' .$fo_liga. '%\' ';
$query .= 'AND b_rank like \'%' .$fo_rang. '%\' ';
$query .= 'ORDER BY b_date DESC';

$result = mysql_query ($query)
or die ("cannot execute query");

mysql_close($db);

?>

<br>
<table cellpadding="4" cellspacing="2" border="0" align="center">

<?php

while($daten = mysql_fetch_array($result))
{
$i++;
$color = ($i % 2) ? "#c9c9c9" : "#e5e5e5";

?>

<tr bgcolor="<?=$color?>">
<td><b><?=$daten['b_date']?></b></td>
<td><?=$daten['b_where']?></td>
<td><?=$daten['b_league']?></td>
<td><b><?php $t = explode(':',$daten['b_time']); echo "$t[0]:$t[1]"; ?></b></td>
<td><?=$daten['b_who']?></td>
<td><?=$daten['b_rank']?></td>
</tr>

<?php

}

?>
Bei den ' vor und nach den % sollte noch ein backslash sein zum escapen

In der Ausgabe erscheint einnfach ein leeres Feld, keine Fehlermeldung oder so.
Wenn es im phpMyAdmin geht sollte es doch auch Im Script gehen :confused:


magpie

mehlvogel
10-04-2003, 21:32
Ich weis nicht, wie sich das dann äußerst, aber vielleicht sind einfach die Shorttags deaktiviert?

ICh benutz sie eh nicht, weil sie (einfach) schlechter Stil sind, also probier jenes bei jeder Ausgabe:



<coole HTML Tags>
<?php
echo $daten["Feld"];
?>


Oder, hast du mal die Anzahl der Zeilen im Ergebniss abgefragt? (Denn wo keine Ergebnisse sind, kann auch nichts ausgegeben werden...)

magpie
10-04-2003, 21:51
Also an den Shorttags ligt es nicht die gehen. Hab es anders auch ausprobiert, geht auch nicht. Ich bekomme ja auch alle Daten angezeigt. Nur die Spalte mit dem Datum bleibt leer. Irgendwie hab ich das gefühl dass etwas mit der Datumsumwandlung nicht recht funktioniert.

[EDIT] Wenn ich DATE_FORMAT aus der Anfrage nehm, wird die spalte ausgegeben.

elrond
11-04-2003, 07:20
gib dem feld einfach mal einen namen, also nicht

SELECT DATE_FORMAT(b_date,"%d.%m.%Y"), b_where, ...
sondern

SELECT DATE_FORMAT(b_date,"%d.%m.%Y") as b_date , b_where...

mehlvogel
11-04-2003, 11:21
Dann hatte ich das Probvelm falsch verstanden :D nichts für ungut ;)

magpie
11-04-2003, 17:06
Super Danke nun gehts :)

Vieleicht kann mir aber trotzdem jemand erklähren warum das im phpMyQdmin geht. Oder wie die das machen.


magpie

magpie
13-04-2003, 15:44
Hmm ich hab noch ne Frage :D

Das mit dem Datum klapt ja jetzt. Nun möchte ich die Zeitausgabe gleich machen.
Das geht aber auch nicht. Er macht zwar ne Ausgabe, aber nur 00:00.

DATE_FORMAT( b_time, "%H:%i" )
Ich habs auch schon so probiert, ohne Erfolg.

DATE_FORMAT( b_time, "%H:%i" ) as b_time

Wenn jemand eine Idee hat wäre ich dankbar :)


gruss magpie

elrond
14-04-2003, 08:28
blöde gegenfrage: wie sieht denn das Ergebnis auf der shell oder im phpmysqladmin aus, wenn du "select b_time from..." abfragst ? steht als Uhrzeit vileicht 00:00 drin ??
Welchen Datentyp hat das Feld b_time ?

magpie
14-04-2003, 19:20
Hi

Den Aufbau der Tabelle kannst dem ersten Post entnehmen ;)

In der Shell und im phpMyAdmin komm ich auf die gleichen Resultate.

mysql> SELECT b_time FROM b_termine LIMIT 0,5;
+----------+
| b_time |
+----------+
| 13:00:00 |
| 10:00:00 |
| 13:00:00 |
| 13:00:00 |
| 13:00:00 |
+----------+
5 rows in set (0.00 sec)

mysql> SELECT DATE_FORMAT(b_time,"%H:%i") FROM b_termine LIMIT 0,5;
+-----------------------------+
| DATE_FORMAT(b_time,"%H:%i") |
+-----------------------------+
| 00:00 |
| 00:00 |
| 00:00 |
| 00:00 |
| 00:00 |
+-----------------------------+
5 rows in set (0.00 sec)

elrond
15-04-2003, 10:24
sorry, hab ich überlesen...:eek:

das Problem ist wahrscheinlich die Funktion date_time die als parameter ein datum erwartet, und da b_time nur ein time ist...

aber so funxt es:


date_format(concat(b_date,b_time),'%H:%i')

oder aber die funktion time_format() benutzen:

select time_format(b_time,'%H:%i') from b_termine;

funxt ebenso...:D

magpie
15-04-2003, 10:45
Das ist mir ja schon fast peinlich :rolleyes: Ich hab mich nur auf DATE_FORMAT fixiert weil da die Zeitangaben auch gemacht werden können, so stehts in meinem Buch. Auf die Idee mit TIME_FORMAT bin ich nicht gekommen.
Hauptsache nu gehts :D

Danke für die Hilfe

magpie

elrond
15-04-2003, 11:50
...lassen wir eben noch mal durchgehen...: