Abfrage Problem SQL (Object->' ')

kekskruemel

Angesehenes Mitglied
Nach dem Tipp meine Einträge auf www.tankcheck.de vorher als admin freischalten zu müssen ... habe ich nun eiune Variable hinzugefügt die bein einsenden auf nein gesetzt wird.

bei der suche zeigt es dann nur noch die einträge an, bei denen "aktiv" auf ja steht.

dazu habe ich u.a. folgenden php Code:

CODE <?php
if($action=="suchen")
{

if(!$Suchstadt) $fehler[] = "<font class='td2_ueberschrift'>Bitte geben Sie eine Stadt ein.</font>";
if(!count($fehler))
{

include ($_SERVER['DOCUMENT_ROOT']."/inc/verbind.inc.php");

$abfrage = "SELECT * FROM tankstellen WHERE (`tankstellen`.`Stadt` ='$Suchstadt') AND (`tankstellen`.`aktiv` ='ja') ORDER BY $SuchKraftstoff ASC, `tankstellen`.`Zeit` DESC";

$ergebnis = mysql_query($abfrage);

echo "<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" class=\"tb\" width=\"250\">";

echo "<tr>
<td class=\"tc\"><font size=\"1\">Tankstelle</font></td>
<td class=\"tc\"><font size=\"1\">Adresse</font></td>
<td class=\"tc\"><font size=\"1\">PLZ</font></td>
<td class=\"tc\"><font size=\"1\">$SuchKraftstoff</font></td>
</tr>";

while($row = mysql_fetch_object($ergebnis))
{
echo "<tr>
<td class=\"tc\">$row->Tankstellenname</td>
<td class=\"tc\">$row->Tankstellenadresse</td>
<td class=\"tc\">$row->PLZ</td>
<td class=\"tc\">$row->$SuchKraftstoff</td>
</tr>";
}
echo "</table>";
echo "<font size=\"1\">Alle Angaben ohne Gewähr! Keine Garantie für die Richtigkeit und Vollständigkeit.</font>";
}

else

{
echo "<font>Beim Suchen trat folgender Fehler auf:</font>";
echo "<ul><li>".implode("<li>",$fehler)."</ul>";
}


}
?>


1. Problem:

Die Variable $SuchKraftstoff wird dabei aus einem Dropdownfeld bei der Suche entnommen, indem der User seinen Kraftstoff auswählen kann.
U.a. habe ich hier auch gleich mit eingebaut, dass es in der Tabelle nur noch den zu suchenden Kraftstoff anzeigt. Auch die geht leider nicht so ganz. Zwar zeigt es in dem Header der Tabelle dann das richtige an, aber die zahlen aus der zugehörigen Datenbanktabellenspalte zeigt es nicht an.
Wähle ich "Super" zeigt es statt den Beträgen: Object->'Super' an!


Woran kann das liegen?!
 
Zunächst einmal solltest du in der php.ini den Eintrag "register_globals" auf "Off" setzen und die Variablen per $_POST oder $_GET auslesen.

Außerdem sieht deine SQL-Anweisung "unsauber" aus, wenn du Variablen in Anführungszeichen und unnötige Klammern setzt. So wäre das besser:

CODE
$abfrage = " SELECT * FROM tankstellen WHERE Stadt = '" . $Suchstadt . "', aktiv = 'ja' ORDER BY " . $SuchKraftstoff . " ASC, Zeit DESC";



In obiger Anweisung wird natürlich nicht explizit nach dem Kraftstofftyp gesucht, das solltest du noch erweitern.
 
danke erst einmal dafür,

kannst du mir evt. auch sagen, wran das liegt, dass in der ausgegebenen tabelüle dann nicht der Preis erscheint, sondern nur diese Object->'Super' etc.?

Das müsste ja irgendwie in dem abschnitt falsch sein:
CODE echo "<tr><td class=\"tc\">$row->Tankstellenname</td> <td class=\"tc\">$row->Tankstellenadresse</td><td class=\"tc\">$row->PLZ</td><td class=\"tc\">$row->'$SuchKraftstoff'</td></tr>";


Dort soll es dann eben, wenn derjenige Super gewählt hat dann die Preise aus der Tabellenspalte "Super" auslesen zu dem jeweiligen Eintrag. Aber mit der Variable $SuchKraftstoff scheint das nicht zu gehen. In dieser wird die bei der suche ausgewählte Ar des Kraftstoffe gespeichert, die auch mit den namen der Spalten übereinstimmt in der Datenbank
 
Auch hier würde ich die Anführungszeichen sauberer setzen. Warum benutzt Du mysql_fetch_object? Versuche es mal mit mysql_fetch_array und $row[$SuchKraftstoff]

 
QUOTE (Danny Pham @ Mo 21.11.2005, 19:31) Auch hier würde ich die Anführungszeichen sauberer setzen. Warum benutzt Du mysql_fetch_object? Versuche es mal mit mysql_fetch_array und $row[$SuchKraftstoff]




danke schön, das hat funktioniert!!!!


Vielen Dank an euch!!!
 
mysql_fetch_array würde ich nur benützen, wenn du als Key sowohl den Spaltennamen und den Index haben willst:

CODE $array[1] = 'wert_erste_spalte';
$array['erste_spalte'] = 'wert_erste_spalte';


Ansonsten nimm mysql_fetch_assoc:


CODE $array['erste_spalte'] = 'wert_erste_spalte';
 
Zurück
Oben