Formularproblem
Compu
- php
0 Harry0 Julian Hofmann0 compu0 Bernhard Mecl0 Compu
0 Harry0 Compu0 Harry0 Bernhard Mecl
0 Vimes
Hi,
ich übergebe an die Seite links.php aus einem Formular in der gleichen Datei die Variable plzmin. Ich gebe eine Postleitzahl für plzmin ein aber folgende Schleife wird nicht ausgeführt:
if(isset($kategorie) || isset($_GET['plzmin'])){
if (isset($_GET['plzmin'])){
$sql ="SELECT * FROM links
WHERE (kategorie='$kategorie')
AND (plz >= '$_GET['plzmin']')
AND (plz <= '$_GET['plzmax']')
ORDER BY plz ASC";
Wie habe ich Zugriff auf die übergebene Variable mit $_POST['plzmin'] oder mit $_GET['plzmin']?
Außerdem meckert er wegen der boolschen Abfrage (plz >= '$_GET['plzmin']'). Muss ich die Gänsefüsschen weglassen?
Vielen Dank.
Tag
ich übergebe an die Seite links.php aus einem Formular in der gleichen Datei die Variable plzmin. Ich gebe eine Postleitzahl für plzmin ein aber folgende Schleife wird nicht ausgeführt:
Äh, ich sehe keine Schleife !
if(isset($kategorie) || isset($_GET['plzmin'])){
if (isset($_GET['plzmin'])){
$sql ="SELECT * FROM links
WHERE (kategorie='$kategorie')
AND (plz >= '$_GET['plzmin']')
".$_GET['plzmin']."
AND (plz <= '$_GET['plzmax']')
".$_GET['plzmax']."
ORDER BY plz ASC";
Außerdem mußt Du drauf achten, ob Du das Formular mit "Post" übermittelst, dann mußt Du $_POST hernehmen. Im Zweifelsfall nimm $_REQUEST, da sind sowohl die get- als auch die post-Variablen drin.
Ciao,
Harry
Problem gelöst.
Die Variable Kategorie war nicht gesetzt. Habe sie nun als "hidden" mit übergeben.
Blöder Fehler.
Aber vielen Dank für all die Hilfe.
Super Forum und super Leute!
Compu
Hallo.
Wie habe ich Zugriff auf die übergebene Variable mit $_POST['plzmin'] oder mit $_GET['plzmin']?
Wie sendest Du denn das Formular? MIt method="get" oder ..="post"? Mit dem entsprechenden kannst Du dann drauf zugreifen.
plz >= '$_GET['plzmin']'
Wo beginnt hier denn welches Anführungzeichen und wo endet es? Am besten ganz aus den Anführungszeichen rausgehen:
plz >= ".$_GET['plzmin']."
Grüße aus Würzburg
Julian
Hier ist das Formular:
***********************
<table width="160" border="1" cellspacing="0" cellpadding="0" bordercolor="#FF0000">
<form name="plzsuche" method="post" action="links.php">
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td>PLZ-Bereich:</td>
</tr>
<tr>
<td>
<input type="text" name="plzmin" size="5" maxlength="5">-
<input type="text" name="plzmax" size="5" maxlength="5">
<br>
<input type="submit" name="Submit" value="OK">
</td>
</tr>
</table>
</td>
</tr>
</form>
</table>
Hier ist der korrigierte Test:
*************************
if(isset($kategorie) || isset($_POST['plzmin'])){
if (isset($_POST['plzmin'])){
$sql = "SELECT * FROM links
WHERE (kategorie='$kategorie')
AND (plz > ".$_POST['plzmin'].")
AND (plz < ".$_POST['plzmax'].")
ORDER BY plz ASC";
}
Es ist natürlich keine Schleife. Da habe ich Blödsinn geschrieben.
Funzt aber immer noch nicht.
Die plz in der mysql sind als varchar gespeichert. Geht doch oder?
Danke!!!!!!!!!!!!!!!!!!!
Funzt aber immer noch nicht.
Was konkret soviel heißt wie...?
Die plz in der mysql sind als varchar gespeichert.
... daher versuche einmal folgendes:
AND (plz > '".$_POST['plzmin']."')
^ ^
Funzt aber immer noch nicht.
Was konkret soviel heißt wie...?
Das heißt er gibt keine Zeilen aus (Links).
Die plz in der mysql sind als varchar gespeichert.
... daher versuche einmal folgendes:
AND (plz > '".$_POST['plzmin']."')
^ ^
Klappt leider auch nicht.
Hoi
Es ist natürlich keine Schleife. Da habe ich Blödsinn geschrieben.
Funzt aber immer noch nicht.
Die plz in der mysql sind als varchar gespeichert. Geht doch oder?
Jetzt mal 'ne ganz blöde Frage:
Was genau funzt denn nicht ? Wird die Variable $sql nicht aufgefüllt ? Gibt's eine Fehlermeldung ? Sind dei $_POST-Variablen leer ?
Ciao,
Harry
Hoi
Es ist natürlich keine Schleife. Da habe ich Blödsinn geschrieben.
Funzt aber immer noch nicht.
Die plz in der mysql sind als varchar gespeichert. Geht doch oder?
Jetzt mal 'ne ganz blöde Frage:
Was genau funzt denn nicht ? Wird die Variable $sql nicht aufgefüllt ? Gibt's eine Fehlermeldung ? Sind dei $_POST-Variablen leer ?
Ciao,
Harry
Hi Harry,
also hier ist der vollständige Code.
Wenn man auf auf der Seite auf das Link "soundso" klickt werden alle Links schön auf der Datenbank geholt und aufgelistet. Gibt man aber in das Formulart einen Postleitzahlenbereich ein. Gibt er "= Links" aus. Das ist das Problem.
<?php
if(isset($kategorie) || isset($_POST['plzmin'])){
if (isset($_POST['plzmin'])){
$sql = "SELECT *
FROM links
WHERE (kategorie='$kategorie')
AND (plz > ".$_POST['plzmin'].")
AND (plz < ".$_POST['plzmax'].")
ORDER BY plz ASC";
}
else{
$sql = "SELECT *
FROM links
WHERE (kategorie='$kategorie')
ORDER BY name ASC";
}
$result = @mysql_query($sql,$dbConnection);
echo "<table width="100%">\n";
echo "<tr><td>";
echo "<h2>".$kat."</h2>\n";
echo mysql_num_rows($result)." ".$t_links.":\n";
echo "</td></tr>";
while ($row = @mysql_fetch_array($result)){
echo "<tr>\n";
echo "<td>\n";
echo "<b><a href="".$row['url'].""target="_blank">".$row['name']."</a></b>\n";
echo "</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
}
else{
echo "<table width="100%">\n";
echo "<tr><td>\n";
echo "<h2>Linkaustausch</h2><hr>\n";
echo "Möchten sie mit uns Links austauschen, um Ihre Besucherzahl zu erhöhen?\n";
echo "Schicken Sie uns eine kurze Nachricht per Email.<br>\n";
echo "<hr>";
echo "";
echo "</td></tr>\n";
echo "</table>\n";
}
?>
Holla
Wenn man auf auf der Seite auf das Link "soundso" klickt werden alle Links schön auf der Datenbank geholt und aufgelistet. Gibt man aber in das Formulart einen Postleitzahlenbereich ein. Gibt er "= Links" aus. Das ist das Problem.
Mach doch mal den Klammeraffen (Neudeusch: "at" ^= @) vor mysql_query und mysql_fetch_array weg. Gibt das Fehlermeldungen ?
Was gibt mysql_error() aus ?
Ciao,
Harry
also hier ist der vollständige Code.
Wo kommen plötzlich $kat und $t_links her und wo könnte das script überhaupt "= Links" ausgeben?! Sehr mysteriös...
Hier ist das Formular:
***********************
<form name="plzsuche" method="post" action="links.php">
Damit auf jeden Fall die POST Variante, aber
$_POST gibt es erst ab Version 4.1.0. Falls du eine frühere Version hast, nimm $HTTP_POST_VARS.
Hier ist der korrigierte Test:
*************************
if(isset($kategorie) || isset($_POST['plzmin'])){
if (isset($_POST['plzmin'])){
$sql = "SELECT * FROM links
WHERE (kategorie='$kategorie')
AND (plz > ".$_POST['plzmin'].")
AND (plz < ".$_POST['plzmax'].")
ORDER BY plz ASC";
}
Problematisch ist IMHO die String-Behandlung, siehe http://www.php.net/manual/en/printwn/language.types.string.php#language.types.string.parsing
lass dir doch mal $sql ausgeben.
Sicherer ist
$sql = "SELECT * FROM links
WHERE (kategorie='".$kategorie."')
AND (plz > '".$_POST['plzmin']."')
AND (plz < '".$_POST['plzmax']."')
ORDER BY plz ASC";