Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

mehrfach filter problem

hi,

ich hab das problem schonmal gepostet, allerdings unter meinem 2. nick :) Damals hab ich auch alles so hingekriegt wie es sein sollte.. aber nun werde ich bald verrückt.. ich finde den fehler einfach nicht..

Mittels verschiedener Formular Elemente (Dropdown etc) soll eine Abfrage erzeugt werden. Leider funktioniert dies nur bedingt..

[PHP]
<?php

mysql_select_db($database_bo_con, $bo_con);
$kriterium = "";

if ($_POST['monat'] != "") {
if($kriterium != ""){
$kriterium .= " AND ";
}
$kriterium .= "tel_monat = ".$_POST['monat'];
}

if ($_POST['jahr'] != "") {
if ($kriterium != "") {
$kriterium .= " AND ";
}
$kriterium .= "tel_jahr = ".$_POST['jahr'];
}

if ($_GET['besitzer'] != "") {
if ($kriterium != "") {
$kriterium .= " AND ";
}
$kriterium .= "tel_besitzer = ".$_POST['besitzer'];
}

if ($_GET['rufnr'] != "") {
if ($kriterium != "") {
$kriterium .= " AND ";
}
$kriterium .= "tel_nr = ".$_POST['rufnr'];
}

if ($_GET['betrag'] != "") {
if ($kriterium != "") {
$kriterium .= " AND ";
}
$kriterium .= "tel_betrag = ".$_POST['betrag'];
}


$query_tel_kosten = "SELECT * FROM tel_erfassung ";
if ($kriterium != "") {
$query_tel_kosten .= "WHERE ".$kriterium;
}

// $query_tel_kosten .= " ORDER BY tel_jahr DESC ";

echo $query_tel_kosten;
[/PHP]

Ich hoffe ihr könnt mir helfen..

Hier gehts zum Orginal Eintrag "mehrfach filter problem" im Forum

Antworten

Ganz tolle Fehlerbeschreibung. Was passiert? Was sollte passieren? Was gibt das echo dann aus? Wieso ist das, was ausgegeben wird falsch?


2.

Das Formular
wird mit post versendet die felder sind auch auf das obige script bezogen richtig benannt.. als action hat das script <?php $_SERVER['PHP_SELF'];?>

@Oliver: ich bin doch noch gar nicht mit dem Post fertig.. soviele Zeichen darf ein post nunmal net haben :)

das sql
[PHP]
-- Tabellenstruktur für Tabelle `tel_erfassung`
--

CREATE TABLE `tel_erfassung` (
`tel_id` int(11) NOT NULL auto_increment,
`tel_besitzer` varchar(255) NOT NULL default '',
`tel_nr` varchar(15) NOT NULL default '',
`tel_betrag` int(6) NOT NULL default '0',
`tel_jahr` varchar(4) NOT NULL default '',
`tel_monat` varchar(15) NOT NULL default '',
`tel_back` varchar(4) default NULL,
`tel_erh` varchar(4) default NULL,
`tmp_wert` int(11) NOT NULL default '1',
PRIMARY KEY (`tel_id`)
) TYPE=MyISAM COMMENT='Hier werden die Telefonkosten der einzelnen Mobitelefone erf' AUTO_INCREMENT=11 ;

--
-- Daten für Tabelle `tel_erfassung`
--

INSERT INTO `tel_erfassung` VALUES (10, 'Tom Mustermann', '0123 4567', 47, '2005', 'Jan', NULL, 'ja', 1);
INSERT INTO `tel_erfassung` VALUES (9, 'Tom Jones', '0123-4567897', 12, '2005', 'Feb', NULL, 'ja', 1);

[/PHP]

Beim 1. Aufruf des Scripts (echo)
[PHP]
SELECT * FROM tel_erfassung
[/PHP]
sobald man etwas auswählt (echo)
[PHP]
SELECT * FROM tel_erfassung WHERE tel_monat = Jan AND tel_jahr = 2000Unknown column 'Jan' in 'where clause'
[/PHP]


3.

`tel_monat` varchar(15) NOT NULL default '',
$kriterium .= "tel_monat = ".$_POST['monat'];

Strings gehören auch in SQL in Anführungszeichen.


4.

????


5.

ich weiß leider nicht was du meinst.. Der Fehler kommt immer beim Monat.. kann natürlich auch sein, weil datum das erste feld ist.


6.

... where monat = jan ... interpretiert jan nicht als string. aber
... where monat ='jan' ... schon.


7.

Ich weiß net genau ob olli genau das hier gemeint hat:

Statt
$kriterium .= "tel_betrag = ".$_POST['betrag'];
das
$kriterium .= "tel_betrag = '".$_POST['betrag']."' ";


8.

einen fehler hab ich gefunden, da haben sich ein paar $_GET reingeschlichen :) aber das mit den anführungszeichen versteh ich immernoch nicht. Wo fehlen denn welche?


9.

hmm.. wieso ist mein post jetzt unter euren ? hmm..


10.

Ich fasse noch mal zusammen:

SELECT * FROM tel_erfassung WHERE tel_monat = Jan AND tel_jahr = 2000

monat und jahr sind Strings. Deshalb gehören sie in Hochkommatas:

SELECT * FROM tel_erfassung WHERE tel_monat = 'Jan' AND tel_jahr = '2000'

Das musst du beim Zusammenbasteln von $kriterium beachten. Siehe dazu den Post von Blackskyliner. Allerdings ist das Beispiel mit dem Betrag nun etwas ungünstig, weil das ist eine Zahl und kein String. Muss also nicht in Hochkommatas.


11.

juhu, es geht! Euer tipp war gold wert!!!!!!
DAAAAAAAAAAAAAAAAAAAAAAAANKE


Hier gehts zum Orginal Eintrag "mehrfach filter problem" im Forum
 
phpforum.de | Impressum