Datenbank mit Variablen abfragen

solala123

Erfahrenes Mitglied
Hallo,
hab ein kleines Problem

Habe eine Datenbank erstellt und nun möchte ich die Daten wieder abfragen (soll ja mal vorkommen)
wenn ich die Datenbank direkt anspreche funktioniert es auch aber ich möchte, dass ich die Datenbank mit einer Variablen ansprechen kann.

so funktioniert es bereits:
Code:
$sql = "SELECT * FROM ResBar WHERE kueche=1";
$ausgabe = mysql_query($sql) or die('Konnte die Abfrage nicht durchführen, weil ' . mysq_error());
while($row = mysql_fetch_object($ausgabe))
{
//Zeile von einem Datensatz, der 2 Datensatz wird darunter geschrieben
echo '<table><tr><td><tr><td>';
echo $row->id;
echo '</td><td></td><td>';
echo $row->land;
echo '</td><td></td><td>';
echo $row->familienname;
echo '</td><td></td><td>';
echo $row->vorname;
echo '</td><td></td><td>';
echo $row->restaurantname;
echo '</td><td></td><td>';
echo $row->kueche;
echo '</td><td></td><td>';
echo $row->garten;
echo '</td><td></td><td>';
echo $row->plz;
echo '</td></tr></td><td></table>';

}

nun möchte ich aber mittels eines Formulars (Textfeld) eine Variable erstellen und diese soll
$sql = "SELECT * FROM ResBar WHERE kueche=1"; den Festwert in diesen Beispiel 1 ersetzen

so ist mein derzeitiger Code:
Code:
<form action="Ausgabe-Test.php" method="post" name="finden" onSubmit="return chkFormular()">

<input name="kueche" type="text"  size="30" />
            <input type="submit" name="submit" value="suchen" />
</form>


<?php 
echo $_POST["kueche"];
?>

<?php
include "verbindung-zur-db.php";   //verbindung zur Datenbank

$sql = "SELECT * FROM ResBar WHERE kueche=1" //Wie muß das ersetzt werden?
$ausgabe = mysql_query($sql) or die('Konnte die Abfrage nicht durchführen, weil ' . mysq_error());
while($row = mysql_fetch_object($ausgabe))
{
//Zeile von einem Datensatz, der 2 Datensatz wird darunter geschrieben
echo '<table><tr><td><tr><td>';
echo $row->id;
echo '</td><td></td><td>';
echo $row->land;
echo '</td><td></td><td>';
echo $row->familienname;
echo '</td><td></td><td>';
echo $row->vorname;
echo '</td><td></td><td>';
echo $row->restaurantname;
echo '</td><td></td><td>';
echo $row->kueche;
echo '</td><td></td><td>';
echo $row->garten;
echo '</td><td></td><td>';
echo $row->plz;
echo '</td></tr></td><td></table>';

}

?>

Wie muß die Zeile --> $sql = "SELECT * FROM ResBar WHERE kueche=1"
erstzt werden?
Danke
Gruß
Rainer
 
Zuletzt bearbeitet:
PHP:
if(!empty($_POST)){	$kueche = mysql_real_escape_string($_POST["kueche"]);	$sql = "SELECT * FROM ResBar WHERE kueche='$kueche'";	$ausgabe = mysql_query($sql) or die('Konnte die Abfrage nicht durchführen, weil ' . mysq_error());} else {	die('Fehlden Formular Daten ...')}
 
Hi,

mach aus der Zeile

PHP:
$sql = "SELECT * FROM ResBar WHERE kueche=1" //Wie muß das ersetzt werden?

sowas

PHP:
$sql = "SELECT * FROM ResBar WHERE kueche=" . intval( isset($_POST['kueche']) ? $_POST['kueche'] : 0);

Außerdem möchte ich dir ans Herz legen, nicht die veraltete API von mysql_-Funktionen zu verwenden. Benutze MySQLi oder besser noch PDO.
 
Hallo,
Danke funktioniert bestens.
Habe mich mal in MySQLi etwas eingelesen und meine Frage:
Muß ich nur an den Befehl " mysql_query" ein i anhängen?
" mysqli_query" Hab es so gelesen aber stimmt das ?
Gruß
Rainer
 
Hallo,
darf ich Euch nochmals bemühen?
Hab noch ein Problem,
ich dachte ich kann es mit OR einfach weiter abfragen wenn ich die Zeile kopiere und entsprechend ändere.
Leider falsch gedacht.
Wo und wie muß die Verknüpfung hin wenn ich weitere Auswahlkriterien treffen möchte mit Variablen?

Code:
$sql = "SELECT * FROM ResBar WHERE kueche= " . intval( isset($_POST['kueche']) ? $_POST['kueche'] : 0);

$ausgabe = mysql_query($sql) or die('Konnte die Abfrage nicht durchführen, weil ' . mysq_error());
while($row = mysql_fetch_object($ausgabe))


Danke
Gruß
Rainer
 
Zu MySQLi: Naja, ganz so trivial ist es nicht. Es gibt einige Funktionen unter anderem Namen bei MySQLi. Man muss schon die Dokumentation im Handbuch lesen, Code anpassen und jede Menge testen ;-)

Zu deinem zweiten Anliegen: Ich verstehe nicht ganz, was genau du machen willst. Willst du den Select erweitern oder einen weiteren Query ausführen?
 
hallo,
ich möchte eine weiter Auswahl wie folgendes Beispiel, nur die Abfragen mit Variablen

Code:
<?php
$sql = 'SELECT * FROM test_blubber WHERE Vorname="Claudia" OR Nachname="Stifter"';
$abfrage = mysql_query($sql) or die(“Fehler: “ . mysql_error());
while(…)
{…}?>
Anstatt "Vorname" "Nachname" möchte ich Variablen einsetzen (Die OR Funktion)

Gruß
Rainer
 
Ja genau, so geht es, mit OR. Ich empfehle nach wie vor PDO und Prepared Statements, gebe trotzdem eine Antwort, mit der du weiter kommen solltest:

PHP:
$sql = sprintf( "SELECT * FROM tabellenname WHERE Vorname = '%s' OR Nachname = '%s'",
  $vorname, $nachname );

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

while($row = mysql_fetch_array($query) )
{
  //....
}
 
Hallo,
habe mal deinen Code bei mir eingebaut aber ich bekomme nichts aus der Datenbank ausgelesen :(
ich schick die mal das gesamte "Kunstwerk"

Kann man action="Variable" setzen bzw. ich meine anstatt einen festen Pfad zuweisen eine Variable einsetzen?

HTML:
<form action="Ausgabe-Test.php" method="post" name="finden" onSubmit="return chkFormular()">

            <label for="kueche">Küche: </label>
            <br>
            <select name="kueche" id="kueche"  size="1" maxlength="30" >
            <option> </option>
            <option>1</option>
            <option>2</option>
            </select>
            </p>

<br>

<label for="plz">Plz: </label><br>
<input name="plz" type="text" size="10" />

<input type="submit" name="submit" value="suchen" />
</form>


Code:
<?php 
echo '<table><tr><td><tr><td>';
echo $_POST["kueche"];
echo '</td><td></td><td>';
echo $_POST["plz"];
echo '</td></tr></td><td></table>';



include "verbindung-zur-db.php";   //verbindung zur Datenbank



$sql = sprintf( "SELECT * FROM ResBar WHERE kueche = '%s' OR plz = '%s'",  // eventuell '%u' für die Postleitzahl einsetzen?
$kueche, $plz );
 
$query = mysql_query( $sql ) or die( mysql_error () );
 
while($row = mysql_fetch_array($query) ){


//Zeile von einem Datensatz, der 2 Datensatz wird darunter geschrieben
echo '<table><tr><td><tr><td>';
echo $row->id;
echo '</td><td></td><td>';
echo $row->land;
echo '</td><td></td><td>';
echo $row->familienname;
echo '</td><td></td><td>';
echo $row->vorname;
echo '</td><td></td><td>';
echo $row->restaurantname;
echo '</td><td></td><td>';
echo $row->kueche;
echo '</td><td></td><td>';
echo $row->garten;
echo '</td><td></td><td>';
echo $row->plz;
echo '</td></tr></td><td></table>';

}

?>


Desweiteren habe ich mich deines Rates angenommen und gesucht, Was hälst du von dieser Anleitung ?
Code:
<?php
 
// Schritt 1: Datenbankverbindung
$handler = new mysqli("dbhost", "dbuser", "dbpass", "db");
 
// Schritt 2: Statement Vorbereiten
$stmt = $handler->prepare("SELECT * FROM people WHERE (name = ?)");
 
// Schritt 3: den Platzhalter mit einem String "binden"
$stmt->bind_param('s', $name);
 
// Schritt 4: $name belegen
$name = "kushellig";
 
// Schritt 5: Das Query ausführen
$stmt->execute();
 
// Schritt 6: Daten zuweisen
if (!$stmt->get_result()) {
    var_dump("no data in 'people' with name = '$name'");
    // Schritt 6.1: Query mit einem anderen Wert wiederholen
    $name = "jan";
    $stmt->execute();
    // ...
} else {
    // Ausgabe des Ergebnisses
    var_dump($res->fetch_all());
}
 
// Schritt 7: schliessen
$stmt->close();
 
?>

Aber damit möchte ich mich erstmal alleine auseinander setzen und wenn dazu Fragen auftauchen werde ich mich melden.
Momentan ist mir erstmal die Abfragen wichtig.

Danke
Gruß
Rainer
 
Zurück