PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WHERE a > '$a' && a < '$b'


Sarah19
16.08.2005, 21:26:37
hi,
habe einen Code der so aussieht:

echo $a;
// 0
echo $b;
// 1000
$query = "SELECT
a,
FROM
tabelle
WHERE
a > '$a' && a < '$b'

$resultID = @mysql_query($query);

Es wird nichts ausgegeben, obwohl aber einige Einträge in der Tabelle sind, die eben Grösser als $b UND kleiner als $a sind.
hat jemand eine idee, weshalb nichts ausgegeben wird?
Keine Fehlermeldung.

Danke euch

Sarah19
16.08.2005, 21:41:31
noch eine Anmerkung:
wenn ich nicht a < '$a' && a > '$b' sondern a < '$a' || a > '$b' eingebe, dann werden, so wie es sein soll, alle Datensätze ausgegeben.
Falls es nicht eindeutig ist, was ich erreichen will:
ich möchte, dass alle Datensätze Zwischen $a und $b ausgegeben werden.

Horschie
16.08.2005, 21:41:47
also dein a muss zum einen kleiner als null und GLEICHZEITIG rößer als 1000 sein....das kann nie der fall sein!!

SELECT a FROM tabelle WHERE a > '$a' && a < '$b'

Sarah19
16.08.2005, 21:52:42
hatte ich falsch geshcirben sorry.
Stimmt natürlich, was du sagst.
aber wenn ich anstatt der variablen 0 und 1000 eingebe, dann klappt es einwandfrei.
Woran liegt das? mache ich da was mit den Variablen falsch?
Es geht auch noch wenn ich a > '$a' && a < 1000 mache.

xabbuh
16.08.2005, 22:45:33
Woran liegt das? mache ich da was mit den Variablen falsch?
Es geht auch noch wenn ich a > '$a' && a < 1000 mache.
Hier würde die Bedingung lauten:

WHERE a > 0 AND a < 1000


In deinem Beispiel oben sieht die Bedingung aber so aus:

WHERE a < 0 AND a > 1000


Fällt dir was auf?

Sarah19
16.08.2005, 22:51:12
habe ich jetzt geändert.
Es muss natürlich
a > 0 AND a < 1000 sein.
Und wenn ich es so, mit den richtigen Werten angebe, dann haut es auch hin. Aber wenn ich es so mache:
$a = 0;
echo $a."<br>";
$b = 1000;
echo $b."<br>";
$query = "SELECT
a
FROM
tabelle
WHERE
a > 0 AND a < 1000
Dann geht es nicht!

feuervogel
17.08.2005, 00:59:36
1. musst du zahlen nicht quoten.

2. erscheint es mir so, als ob du hier nur beispiel feld- und tabellennamen angibst. bitte zeig uns doch mal die richtigen namen.

feuervogel
17.08.2005, 01:01:29
3. was erscheint denn bei:

$resultID = mysql_query($query) or die( mysql_error());

xabbuh
17.08.2005, 09:35:18
Interessant dürfte auch die Ausgabe von $query sein.

Sarah19
17.08.2005, 09:46:30
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'
'http://www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<title>Gebrauchtfahrtzeuge Einfügen</title>
<link rel="stylesheet" type="text/css" href="format.css">
<!-- Diese Seite ist soweit fertig. Es fehlt noch die einbettung in CSS, sonst ist es aber gut. Farben müssen noch gemacht werden.
Der Rest sollte ebenfalls kontrolliert werden. Vielleicht reichen ein paar ja?!? -->
</head>

<body>
<div id="aussen-box">
<div id="head">
<table cellpadding="2" align="right"><tr><td>
Denn ein Fahrzeugmarkt geht auch kostenfrei!!!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
<a href="gebraucht.php"><b><font color="#000066">Motorrad verkaufen</font></b></a>&nbsp;
<a href="suchen.php"><b><font color="#000066">Mottorrad kaufen</font></b></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</td></tr></table>
</div>
<div id="navBar">
<div id="sectionLinks">
<?php
include('templates/menu1.tpl');
?>
</div>

</div>
<div id="main"><?php
// Datei mit Code einbinden
error_reporting(E_ALL);
include('config.php');
// Datendefinition für die Clientausgabe
$start = (isset($start)) ? abs((int)$start) : 0;
$limit = 10; // Datensätze pro Ausgabeseite
// Feststellen der Anzahl der verfügbaren Datensätze.
$resultID = @mysql_query("SELECT COUNT(pid) FROM gebraucht");
$total = @mysql_result($resultID,0);

// Ggf. $start korrigieren (falls Parameter in
// der URL manipuliert wurde)
$start = ($start >= $total) ? $total - $limit : $start;

// Datenbankabfrage ausführen.
$typ = $_GET["typ"];

if ($motorrad !="")
$suchemotorrad ="&& motorrad = '$motorrad'";
else $suchemotorrad = "";
if ($kategorie !="")
$suchekategorie ="&& kategorie = '$kategorie'";
else $suchekategorie = "";
if ($antrieb !="")
$sucheantrieb ="&& antrieb = '$antrieb'";
else $sucheantrieb = "";
if ($kraftstoff !="")
$suchekraftstoff ="&& kraftstoff = '$kraftstoff'";
else $suchekraftstoff = "";
if ($unfall !="")
$sucheunfall ="&& unfall = '$unfall'";
else $sucheunfall = "";
$eingabe1 = substr($eingabe,0,2);
$eingabe2 = substr($eingabe,3,2);
$heute = getdate();
$monat = date('m');;
$tag = date('d');
$jahr = date('Y');
$eingabe = "".$jahr."-".$eingabe2."".$eingabe1."";
$datum ="".$jahr."-".$monat."-".$tag."";
$a = 0;
echo $a."<br>";
$b = 1000;
echo $b."<br>";
echo $leistungvon . $leistungbis;
$var = str_replace(array(' ', '/', "\t"), '', $typ);
$var = strtolower($var);

echo "<table width='550' cellpadding='5' border='1'> ";
$query = "SELECT
motorrad,
typ,
pid,
kategorie,
antrieb,
kraftstoff,
unfall,
suchtext,
ez,
tuv,
km,
leistung,
hubraum,
beschreibung,
bild4,
plz,
datum,
preis
FROM
gebraucht
WHERE
suchtext LIKE '%$var%' $suchemotorrad $suchekategorie $sucheantrieb $suchekraftstoff $sucheunfall

&& leistung > '$a' AND leistung < '$b'

ORDER BY
$sortieren $aufab
LIMIT
".$start.",".$limit;
$resultID = @mysql_query($query);
$num_rows = @mysql_num_rows($resultID);
if ($num_rows != "")
{
echo "<tr><td colspan='2' >Folgende Mototrr&auml;der wurden gefunden.</td></tr>";
// Ergebnisse lesen und an den Client ausgeben
while ($data = mysql_fetch_array($resultID))
{
$beschreibung = $data["beschreibung"];
$beschreibung1 = substr($beschreibung,0,200);
$ez = $data["ez"];
$ez1 = substr($ez,0,4);
$ez2 = substr($ez,5,2);
echo "
<tr><td width='100'><img src='".$data["bild4"]."' height='70' width='100'><br>".$data["motorrad"]."&nbsp;".$data["typ"]."
<br>D-".$data["plz"]."<br>".$data["preis"]."&euro;</td><td>EZ: ".$ez2."/".$ez1." | T&Uuml;V: ".$data["tuv"]." | Km: ".$data["km"]." | ".$data["leistung"]." PS |
".$data["hubraum"]." ccm<br>".$beschreibung1."...</td></tr>";
}

// Zurück- und Vorblättern
if ($start > 0)
{
$newStart = ($start - $limit < 0) ? 0 : ($start-$limit);
$link ="?start=".$newStart."&motorrad=".$motorrad."&typ=".$typ."&kategorie=".$kategorie."&antrieb=".$antrieb."&kraftstoff=".$kraftstoff."
&unfall=".$unfall."&leistungvon=".$leistungvon."&leistungbis=".$leistungbis."&hubraumvon=".$hubraumvon."&hubraumbis=".$hubraumbis."
&kmvon=".$kmvon."&kmbis=".$kmbis."&ezvon=".$ezvon."&ezbis=".$ezbis."&plzvon=".$plzvon."&plzbis=".$plzbis."&preisvon=".$preisvon."
&preisbis=".$preisbis."&eingabe=".$eingabe."&sortieren=".$sortieren."&aufab=".$aufab."";
echo "<a href=".$_SERVER['PHP_SELF']."".$link."
>&lt;&lt; zurück</a>&nbsp;";
}

if ($start + $limit < $total)
{
$newStart = $start + $limit;
$link ="?start=".$newStart."&motorrad=".$motorrad."&typ=".$typ."&kategorie=".$kategorie."&antrieb=".$antrieb."&kraftstoff=".$kraftstoff."&unfall=".$unfall."&leistungvon=".$leistungvon."&leistungbis=".$leistungbis."&hubraumvon=".$hubraumvon."&hubraumbis=".$hubraumbis."&kmvon=".$kmvon."&kmbis=".$kmbis."&ezvon=".$ezvon."&ezbis=".$ezbis."&plzvon=".$plzvon."&plzbis=".$plzbis."&preisvon=".$preisvon."&preisbis=".$preisbis."&eingabe=".$eingabe."&sortieren=".$sortieren."&aufab=".$aufab."";
echo "<a href=".$_SERVER['PHP_SELF']."".$link."
>vor &gt;&gt;</a>";
}
}
else
echo "<tr><td colspan='2' >Leider wurde nichts gefunden.</td></tr>";
echo "</table>";


// Die benutzte (nichtpersistente) Verbindung zu der MySQL-Datenbank,
// wird nach dem Script-Ende automatisch geschlossen.
// That's it.

?>
</div>
<div style="clear: both"></div>
</div>

</body>
</html>

Und ausgegeben wird dann:
0
1000
01000
Leider wurde nichts gefunden.
Aber wenn ich statt einer der beiden Variablen $a bzw $b die Zahl eingebe, dann klappt es!

Wenn ich $resultID = mysql_query($query) or die( mysql_error()); benutze, dann passiert genau das gleiche wie vorher.

xabbuh
17.08.2005, 10:58:36
Wie sieht denn die Ausgabe von $query aus?

Sarah19
17.08.2005, 17:47:24
die ' vor und hinter den variablen müssen weg, dann haut es hin.
echo $query gibt folgendes aus:SELECT motorrad, typ, pid, kategorie, antrieb, kraftstoff, unfall, suchtext, ez, tuv, km, leistung, hubraum, beschreibung, bild4, plz, datum, preis FROM gebraucht WHERE suchtext LIKE '%%' && leistung > '0' AND leistung < '1000' ORDER BY datum LIMIT 0,10

Danke für den Tip mit der Ausgabe.

Grüzi

feuervogel
17.08.2005, 18:21:40
die ' vor und hinter den variablen müssen weg, dann haut es hin.

1. musst du zahlen nicht quoten.


...

Sarah19
17.08.2005, 20:44:18
Ich hatte deinen 1. Ansatz falsch verstanden, sorry. Dachte ich muss sie nicht Quoten, kann es aber ruhig machen.
Sorry deswegen, wollte nicht nerven.
Grüzi und danke vielmals

meikel (†)
18.08.2005, 08:46:23
Dachte ich muss sie nicht Quoten, kann es aber ruhig machen.
Der Gedanke ist auch nicht falsch, weil MySQL ebenfalls ein automatisches Typecasting erledigt. Das klappt in Deinem Falle allerdings nur dann, wenn die Variablen ausschließlich nur Ziffern enthalten. Und da hege ich den Verdacht, daß da wohl um die Ziffern noch ein paar schädliche Whitespaces vohanden sind. In dem Falle konvertiert MySQL nämlich den String nicht nach Integer.