Abfragen-Fehler

Discman

Mitglied
Hallo, hab mich schon über die Suche hier schlau gemacht, was alles falsch sein kann an dem Code hier und probiere wirklich schon den ganzen Tag daran herum - bin leider kein großer PHP-Könner also dachte ich mir ich frag mal hier nach.

Ich hab ein Formular gestaltet das die Variablen an diese Datei hier weiterleitet, sie soll dann auf die Datenbank zugreifen und eine Liste ausgeben, natürlich unter Berücksichtigung der Eingabe vom Formular.

PHP:
<?php

$_POST[art]=$art;
$_POST[monatsmiete]=$monatsmiete;
$_POST[wohnflaeche]=$wohnflaeche;
$_POST[zimmer]=$zimmer;
$_POST[bundesland]=$bundesland;
$_POST[wien_bezirk]=$wien_bezirk;

if ($wien_bezirk!="")
{
$sqlab = "SELECT stadt, art, monatsmiete, wohnflaeche, zimmer, wien_bezirk, bundesland FROM inserat";
$sqlab .= " WHERE art LIKE '$art'";
$sqlab .= " AND monatsmiete <= '$monatsmiete'";
$sqlab .= " AND zimmer <= '$zimmer#'";
$sqlab .= " AND WHERE bundesland LIKE '$bundesland'";
$sqlab .= " AND WHERE wien_bezirk LIKE '$wien_bezirk'";
$sqlab .= " ORDER BY wohnflaeche";
}
else
{
$sqlab = "SELECT stadt, art, monatsmiete, wohnflaeche, zimmer, bundesland FROM inserat";
$sqlab .= " WHERE art like '$art'";
$sqlab .= " AND monatsmiete <= '$monatsmiete'";
$sqlab .= " AND zimmer <= '$zimmer'";
$sqlab .= " AND WHERE bundesland LIKE '$bundesland'";
$sqlab .= " ORDER BY wohnflaeche";
}

$res = mysql_db_query("studentenzimmer", $sqlab); 
$num = mysql_num_rows($res);
echo "$num Datensätze gefunden<br>";
echo mysql_error();

// Tabellenbeginn
echo "<table border>";

// Überschrift
echo "<tr> <td>Lfd.Nr.</td> <td>Standort</td>";
echo "<td>Wohnungsart</td> <td>Wohnfläche</td>";
echo "<td>Zimmer</td> </tr>";

for ($i=0; $i<$num; $i++)
{
$so = mysql_result($res, $i, "stadt");
$wa = mysql_result($res, $i, "art");
$wf = mysql_result($res, $i, "wohnflaeche");
$z = mysql_result($res, $i, "zimmer");
$lf = $i + 1;

// Tabellenzeile mit -zellen
echo "<tr> <td>$lf</td> <td>$so</td> <td>$wa</td>";
echo "<td>$wf</td> <td>$z</td> </tr>";
}

// Tabellenende
echo "</table>"; 
?>

Hier die Fehlermeldung und was MySQL für einen Fehler dazu ausgibt.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\...... on line 59

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE bundesland LIKE '' ORDER BY wohnflaeche' at line 1

Hoffe mir kann da einer helfen!

Vielen Dank schonmal!!

lg

disc
 
Probier mal Folgendes:
PHP:
<?php

<?php

	$query = "
		SELECT
		        `stadt`,
		        `art`,
		        `monatsmiete`,
		        `wohnflaeche`,
		        `zimmer`,
		        `bundesland`";
	if( !empty($_POST['wien_bezirk']) ) {
		$query .= ", `wien_bezirk` ";
	}
	$query .= "
		  FROM
		        `inserat`
		  WHERE
		        `art`         LIKE '".mysql_real_escape_string($_POST['art'])."'
		    AND `monatsmiete` <=   '".mysql_real_escape_string($_POST['monatsmiete'])."'
		    AND `zimmer`      <=   '".mysql_real_escape_string($_POST['zimmer'])."#'
		    AND `bundesland`  LIKE '".mysql_real_escape_string($_POST['bundesland'])."'";
	if( !empty($_POST['wien_bezirk']) ) {
		$query .= " AND `wien_bezirk` LIKE '".mysql_real_escape_string($_POST['wien_bezirk'])."' ";
	}
	$query .= "
		  ORDER BY
		        `wohnflaeche`
		";
	$result = mysql_db_query('studentenzimmer', $query);
	$count = mysql_num_rows($result);
	echo $count.' Datensätze gefunden<br>';

	echo '<table border="1">';
	echo '<tr><th>Lfd.Nr.</th><th>Standort</th><th>Wohnungsart</th><th>Wohnfläche</th><th>Zimmer</th></tr>';
	$i = 0;
	while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
		echo '<tr><td>'.++$i.'</td><td>'.$row['stadt'].'</td><td>'.$row['art'].'</td><td>'$row['wohnflaeche'].'</td><td>'.$row['zimmer'].'</td> </tr>';
	}
	echo '</table>';

?>
 
Danke für die schnelle Antwort!

Bekomme leider einen Parse Error in der Zeile 50, das währe:

PHP:
    if( !empty($_POST['wien_bezirk']) ) { 
        $query .= " AND `wien_bezirk` LIKE '".mysql_real_escape_string($_POST['wien_bezirk'])."' "; 
    }

lg

disc
 
Also die Ausgabe ist jetzt richtig nur leider noch eine Fehlermeldung dabei.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Apache\xampp\htdocs\studentenzimmer\result_wohnung.php on line 58

PHP:
$count = mysql_num_rows($res);
 
Die Meldung supplied argument is not a valid MySQL result resource ist immer ein Indiz für eine fehlerhafte SQL-Query. Da solltest du dir deine Abfrage nochmal genauer anschauen, und wenn das nicht hilft dir den mysql_error() anzeigen lassen.
 
Naja ich steh ja an was die Abfrage angeht und sie funktioniert ja auch eigentlich, also ich hab bisher nur 2 Einträge in der Datenbank, mit denen ich teste, werde noch mehr eintragen, aber die 2 funktionieren ohne Probleme sie werden halt unterhalb der Fehlermeldung richtig ausgegeben.

Kann sein, dass es an der Problematik mit der Variable $wien_bezirk liegt.

lg disc
 
Zurück