2006 ist nicht gleich 2006.12.30
Versuche es mal mit LIKE.
Ist auch nicht perfekt. Aber mehr faellt mir gerade nicht ein.
Hallo,
ich habe eine mysql-Datenbank und möchte die Daten
aus einem Formularlistenfeld nach Datum suchen und
anzeigen lassen.
Das Datumsformat hat den Typ Date also: ####.##.##
Wenn ich nun im Listenfeld <= oder => oder <> als z.b 2006 eingebe,
wird alles nach diesem Wert angezeigt.
Gebe ich aber = 2006 ein, wird nichts angezeigt obwohl einige Datensätze mit diesem Jahr vorhanden sind.
Hier mein Code:
PHP-Code:<?php
$colname_Recordset1 = "-1";
if (isset($_POST['wann'])) {
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_POST['wann'] : addslashes($_POST['wann']);
}
mysql_select_db($database_gigs, $gigs);
$query_Recordset1 = sprintf("SELECT wann, wo, mitwem, gage FROM gigs WHERE wann = '%s' ORDER BY wann ASC", $colname_Recordset1);
Harleylujar, Michael!!
Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...
www.mikel-mueller.de
www.sanitaertechnik-mueller.de
2006 ist nicht gleich 2006.12.30
Versuche es mal mit LIKE.
Ist auch nicht perfekt. Aber mehr faellt mir gerade nicht ein.
Gruss Guin
Mein Blog
Ich denke mal, das wird Dich interessieren:
Date and Time Functions
Insbesondere die Funktion YEAR()...
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
Klappt nicht mit LIKE und auch nicht mit Year.
Wahrscheinlich ist mein Verständnis noch nicht so weit.
LIKE verstehe ich ja wohl, kann ich aber nicht mit der Auswahlliste verknüpfen.
Kann man das Datum nicht zerschneiden und nur die die ersten 4 Werte
abfragen?
Harleylujar, Michael!!
Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...
www.mikel-mueller.de
www.sanitaertechnik-mueller.de
Dafür ist ja YEAR() gedacht gewesen. Hast Du die Beschreibung der Datumsfunktionen mal durchgelesen?Zitat von MichaelM
In Deinem würde das ungefähr so aussehen:
...WHERE YEAR(wann) = '1979'...
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
Ja, mit dem Code funktioniert das jetzt.
Wie kann ich aber jetzt aus einem Listenmenü das Jahr übergeben.
WHERE YEAR(wann) = '1979'
so wäre es ja ein manueller Auswahlbereich.
Müßte also für jedes Jahr eine eigene Seite machen.
Bekomme auch noch eine Fehlermeldung mit SUM(gage) as summe
Fehlermeldung:PHP-Code:$query_Recordset1 = 'SELECT SUM(gage) AS summe, wann, wo, mitwem, gage FROM gigs WHERE YEAR( wann ) = \'2005\' ORDER BY wann ASC' ;
HTML-Code:Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Harleylujar, Michael!!
Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...
www.mikel-mueller.de
www.sanitaertechnik-mueller.de
Lies Dir mal das hier durch, dann sollte klar sein, warum ein GROUP BY erwartet wird.
OK, dass habe ich jetzt verstanden.
Aber wie schaffe ich das?
Wie kann ich jetzt aus dem Formular-Listenmenü an die Selelctabfrage übergeben?
Als Eintrag in den Listenmenü habe ich zb. 2005 stehen.
Das Jahr möchte ich jetzt an die Selectabfrage übergeben und anzeigen lassen.
WHERE YEAR(wann) = '1979'
so wäre es ja ein manueller Auswahlbereich.
Müßte also für jedes Jahr eine eigene Seite machen.
Geändert von MichaelM (25.03.2007 um 18:27 Uhr)
Harleylujar, Michael!!
Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...
www.mikel-mueller.de
www.sanitaertechnik-mueller.de
WHERE YEAR( wann ) = \''.$_POST['wann'].'\'
Jau Danke Webcreate,Zitat von webcreate
das hat schon einmal wunderbar geklappt.
Noch eine bescheidene Frage:
Ist es eigentlich auch möglich, in einer Selectabfrage mehrere Felder zur Auswahl anzubieten?
Das heißt ausser das Datum noch den Ort, Gagenhöhe usw.![]()
Harleylujar, Michael!!
Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...
www.mikel-mueller.de
www.sanitaertechnik-mueller.de
Sicherlich kann man das machen.
Hier stellt sich auch erstmal die Frage, soll nur ein Feld die WHERE Klausel bestimmen, oder mehrere?
Bei einem Feld wäre es recht einfach.
Einfach mit if abfragen, welches Feld gewählt wurde und damit dann die WHERE Klausel erstellen.
Wenn mehrere zusammen arbeiten sollen, muss man da schon eine weitere Prüfung machen und dann mit AND verknüpfen.
Nur 1 WHERE-Klausel soll die Abfrage bestimmen.
Die Abfrage könnte dann aber zum Beispiel über 3 Formulareingabefelder
stattfinden.
Kann mir im Moment nicht so Recht vorstellen, wie das aussehen soll.
Habe ja in der Klausel WHERE-Klausel das Feld YEAR(wann) als Abfragefeld
festgelegt.
Wie kann ich das jetzt so anpassen, dass ich das Feld YEAR(gage) undPHP-Code:<?php
mysql_select_db($database_gigs, $gigs);
$query_Recordset1 = 'SELECT SUM(gage) AS gesamtgage, wann, wo, mitwem, gage FROM gigs WHERE YEAR( wann ) = \''.$_POST['wann'].'\' group by wann' ;
$Recordset1 = mysql_query($query_Recordset1, $gigs) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
\''.$_POST['wann'].'\' mit einer If-Abfrage und neuer Variable ersetzen kann![]()
Harleylujar, Michael!!
Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...
www.mikel-mueller.de
www.sanitaertechnik-mueller.de
In etwa so:
PHP-Code:if(!empty($_POST['wann'])) $sql = "YEAR( wann ) = \''.$_POST['wann'].'\'";
else if(!empty($_POST['wo'])) $sql = "wo = \''.$_POST['wo'].'\'";
else if(!empty($_POST['mitwem'])) $sql = "mitwem = \''.$_POST['mitwem'].'\'";
$query_Recordset1 = 'SELECT SUM(gage) AS gesamtgage, wann, wo, mitwem, gage FROM gigs WHERE '.$sql.' group by wann' ;
Hallo,
habe mal folgendermaßen versucht:
Bekomme folgende Fehlermeldung:PHP-Code:<?php
mysql_select_db($database_gigs, $gigs);
if(!empty($_POST['wann'])) $sql = "YEAR( wann ) = \''.$_POST['wann'].'\'";
else if(!empty($_POST['wo'])) $sql = "wo = \''.$_POST['wo'].'\'";
else if(!empty($_POST['mitwem'])) $sql = "mitwem = \''.$_POST['mitwem'].'\'";
$query_Recordset1 = 'SELECT SUM(gage) AS gesamtgage, wann, wo, mitwem, gage FROM gigs WHERE '.$sql.' group by wann' ;
$Recordset1 = mysql_query($query_Recordset1, $gigs) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
Woran liegt das?HTML-Code:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/2/m/mm-orkester/www/gigkalender/suchen2.php on line 5
Harleylujar, Michael!!
Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...
www.mikel-mueller.de
www.sanitaertechnik-mueller.de
Resultat
Edit: Da hab ich wohl nicht zuende gelesen ...
So sollte er es schlucken
PHP-Code:<?php
mysql_select_db($database_gigs, $gigs);
if(!empty($_POST['wann'])) $sql = "YEAR( wann ) = \'".$_POST['wann']."\'";
else if(!empty($_POST['wo'])) $sql = "wo = \'".$_POST['wo']."\'";
else if(!empty($_POST['mitwem'])) $sql = "mitwem = \'".$_POST['mitwem']."\'";
$query_Recordset1 = 'SELECT SUM(gage) AS gesamtgage, wann, wo, mitwem, gage FROM gigs WHERE '.$sql.' group by wann' ;
$Recordset1 = mysql_query($query_Recordset1, $gigs) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
Geändert von webcreate (27.03.2007 um 21:08 Uhr)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)