grösser gleich bzw. kleiner gleich

saila

Erfahrenes Mitglied
Hi,

Frage zu meinem Query.
(Folgender Query ist Bestandteil einer Funktion, wobei vorab noch einige Prüfungen erfolgen - allerdings nicht wichtig für die Antwort):

PHP:
<?php
	//............
	
	if($_POST['ctsvbj'] != 0) { $bj .= "cuc.myborn >= '".$_POST['ctsvbj']."', "; }
	if($_POST['ctsbbj'] != 0) { $bj .= "cuc.myborn <= '".$_POST['ctspv']."', "; }

	// Fahrzeugfarbe
	if($_POST['car_type_search_color'] != 0) { $querrystring .= " AND car_user_cars.mycol LIKE '%".$_POST['car_type_search_color']."%'"; }

	echo "<br /><br />".$querrystring;

	if(isset($querrystring) AND $querrystring != '') {
		$con = mysql_query("SELECT
								cf.id,
								cf.uid,
								cf.vkp,
								$pf
								cf.war,
								cf.rec,
								cc.uid as cucuid,
								cc.mytype,
								cuc.myview,
								cuc.mysto,
								cuc.myborn,
								$bj
								cuc.mydet,
								cuc.mycol,
								cuc.mycar,
								cu.id as cuid,
								cu.vzk,
								cu.vor
							FROM
								cf
								LEFT JOIN cuc ON (cuc.uid = cf.uid)
								LEFT JOIN cu ON (cu.id = cf.uid)
							WHERE
								$querrystring") or die (mysql_error());
	//............
?>

Wenn ich den Query wie oben aufgeführt ausführe, wird der Vergleich mit Variable $bj nicht berücksichtigt. Setze ich $bj in die WHERE-Bedingung, wird nichts gefunden, obwohl ein Ergebnis vorhanden sein muss.

Wo liegt der Denkfehler?
 
Kann das sein, daß du hier Vergleichsoperatoren und Zuweisungsoperator verwechselst?

PHP:
{ $bj .= "cuc.myborn >= '".$_POST['ctsvbj']."', "; }
Wenn ich das richtig sehe versuchst du hier an $bj einen boolschen Wert anzuhängen (TRUE/FALSE), das macht wenig Sinn, denn du vergleichst hier nur 2 Werte aber weist nichts zu.
Außerdem versuchst du einen String zu vergleichen mit einem anderen Wert, Vergleiche machen meiner Meinung nach aber nur mit z.B. Integer-Werten Sinn, oder seh ich da was falsch ?
Was sollte denn $bj richtigerweise beinhalten?
 
Funky_MF hat gesagt.:
PHP:
{ $bj .= "cuc.myborn >= '".$_POST['ctsvbj']."', "; }
Wenn ich das richtig sehe versuchst du hier an $bj einen boolschen Wert anzuhängen (TRUE/FALSE), das macht wenig Sinn, denn du vergleichst hier nur 2 Werte aber weist nichts zu.
Ich glauibe er/sie will da die "WHERE"-Klausel erstellen :-) Zu dem Zeitpuntk soll noch nichts verglichen werden, erst während der Query...

Stimmt den Die Ausgabe in
PHP:
echo "<br /><br />".$querrystring;
?
 
Nein, die Ausgabe stimmt nicht. Wenn ich den Vergleich in den SELECT setze, wird zwar ein Ergebnis ausgegeben, aber es stimmt nicht. Bzw. der Vergleich wird gar nicht berücksichtigt. Lege ich den Vergleich in die WHERE-Bedingung, wird gar nichts mehr gefunden, obwohl ein Ergebnis da sein muss.
 
wird absolut korrekt zusammengesetzt. Habe diesen mehrfach getestet und auch ausgeben lassen.

Eine andere Frage schließt sich aber gerade an. Angenommen in einer Spalte sind Inhalte wie folgt: 4|12|1990. Ausschlaggebend ist nun aber die 1990. Kann man die zuvor genannten Inhalte mit Platzhaltern (und zwar egal welche Anzahl an Zeichen zuvor vorhanden sind) in die Abfrage einbinden? Oder anderst gesagt, ein LIKE ist nicht möglich.

EDIT:
Hat sich erledigt. Zauberwort war YEAR(datum)
 
Zuletzt bearbeitet:
Zurück