• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Dätensätze aus Mysqltabelle ausgeben funktioniert nicht

htmler222

Neues Mitglied
Nen Abend,
ich hab ein Problem ich möchte immer ausgeben wie viele Datensätze nach bestimmten dingen gefiltert gefunden wurden.
Code:
<?php
   $con = mysqli_connect("", "ROOT", "FelixG");
   mysqli_select_db($con, "rfl");
   if(isset($_POST["gesendet"]))
   $sql = "SELECT * FROM konzerte"
      . " WHERE date == " . $_POST["date"]
      . " AND city ==" . $_POST["city"]
      . " AND time == " . $_POST["time"]
      . " AND location == " . $_POST["location"]
      . " AND price == " . $_POST["price"]
      . " ORDER BY date";

   $res = mysqli_query($con, $sql);
   $num = mysqli_num_rows($res);
   if($num > 0) {echo "<p>Ergebnis:<br></p>";
    echo "<p>";
 echo $num;
 echo "</p>";
}



else         echo "<p>Keine Ergebnisse<br></p>";

   mysqli_close($con);
?>
aber es scheint nicht zu laufen. Die Formularfelder sind alle ausgewertet, aber irgendwo hakt es. Könnte mir da einer helfen;)? danke im Voraus:p
 
Werbung:
Ändere mal diese Zeile
Code:
$res = mysqli_query($con, $sql);
in
Code:
$res = mysqli_query($con, $sql)
   or die(mysqli_error($con));
 
hab ich gemacht:
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 '== 2019-01-17 AND city ==Hamburg AND time == 30 AND location == Hamburghalle AND' at line 1 das ist das was er jetzt sagt. liegt es vielleicht am date oder daran das ich zuviele Bedingungen stelle? Danke schon mal
 
Werbung:
  1. Ändere == in =
  2. Textwerte gehören zwischen '
  3. Deine Datenbankabfrage ist SQL-Injektion gefährdet, nutze mysli_escape_string
 
irgendwie läuft es nicht: Unknown column 'Hamburg' in 'where clause' was mwint er mit unbekannter spalte die sind doch alle in der tabele also müssen sie ihm doch bekannt sein?
Code:
<?php
   $con = mysqli_connect("", "root", "FelixG");
   mysqli_select_db($con, "rfl");
   if(isset($_POST["gesendet"]))
   $sql = "SELECT * FROM konzerte"
      . " WHERE date = " . $_POST['date']
      . " AND time = " . $_POST['time']
        . " AND city = " . $_POST['city']
      . " AND location = " . $_POST['location']
      . " AND price = " . $_POST['price']
      . " ORDER BY date";

   $res = mysqli_query($con, $sql)
   or die(mysqli_error($con));
   $num = mysqli_num_rows($res);
   if($num > 0) {echo "<p>Ergebnis:<br></p>";
    echo "<p>";
echo $num;
echo "</p>";
}
else         echo "<p>Keine Ergebnisse<br></p>";

   mysqli_close($con);
?>
 
Zuletzt bearbeitet:
Schön, dass du meine Antwort in #4 zu 2/3 ignoriert hast. :frown:
 
Werbung:
2 habe ich versucht wie du siehst wusste aber net genau was gemeint ist 3 kannte ich noch nicht wenn du magst schreib einfach den code so um wie du mmeinst und erklärs mir dann:wink::smile:
 
Hallo @htmler222 ,

nachdem du mich privat angeschrieben hattest, werde ich dir das nun nochmal genauer erläutern.
Was @m.scatello meinte, ist, dass die Werte bei WHERE in ' geschrieben werden müssen.
In deinem Code wird also aus
PHP:
$sql = "SELECT * FROM konzerte"
      . " WHERE date = " . $_POST['date']
      . " AND time = " . $_POST['time']
        . " AND city = " . $_POST['city']
      . " AND location = " . $_POST['location']
      . " AND price = " . $_POST['price']
      . " ORDER BY date";
folgendes:
PHP:
$sql = "SELECT * FROM konzerte"
      . " WHERE date = '" . $_POST['date']
      . "' AND time = '" . $_POST['time']
        . "' AND city = '" . $_POST['city']
      . "' AND location = '" . $_POST['location']
      . "' AND price = '" . $_POST['price']
      . "' ORDER BY date";
Sieht fast gleich aus, hat aber den Unterschied, dass bei beispielsweise "'" . $_POST['date'] . "'" die Werte, nach denen gefragt wird, mit den einfachen Anführungszeichen (') umrahmt sind. Mit dem unteren Code sollte es funktionieren. Sollten noch Probleme auftreten, schreibe einfach einen weiteren Post (eine Antwort) unter meinen.
Und @m.scatello 's Warnung mit den SQL-Injections würde ich an deiner Stelle auch angehen, wenn du die Seite nicht nur in deinem lokalen Netzwerk abgeschnitten vom Rest nutzt. Also umrahme die Werte, also $_POST['date'], etc. mit mysqli_real_escape_string in etwa so:
aus
PHP:
$sql = "SELECT * FROM konzerte"
      . " WHERE date = '" . $_POST['date']
      . "' AND time = '" . $_POST['time']
        . "' AND city = '" . $_POST['city']
      . "' AND location = '" . $_POST['location']
      . "' AND price = '" . $_POST['price']
      . "' ORDER BY date";
wird
PHP:
$sql = "SELECT * FROM konzerte"
      . " WHERE date = '" . mysqli_real_escape_string($con, $_POST['date'])
      . "' AND time = '" . mysqli_real_escape_string($con, $_POST['time'])
        . "' AND city = '" . mysqli_real_escape_string($con, $_POST['city'])
      . "' AND location = '" . mysqli_real_escape_string($con, $_POST['location'])
      . "' AND price = '" . mysqli_real_escape_string($con, $_POST['price'])
      . "' ORDER BY date";
//EDIT: Ups, das Board hatte beim Kopieren aus Notepad++ mit den Formatierungen Probleme in den Code-Tags. Ist behoben.

Grüße,
Felixprogram
 
Zuletzt bearbeitet:
Werbung:
ich schau mal rein. gibts eigentlich jemanden der sich mal meine seite anschauen mag und mir noch tipps geben kann wies besser aussehen kann? weil ich hab auf meinen Home seiten (Englisch und deutsch) zb ein menü was irgendwie anfängt mies auszusehen sobald man den bildschrim verkleinert.
 
Werbung:
Für Feedback haben wir sogar ein eigenes Unterforum.
Erstell da einfach ein neues Topic.

Ich meine theoretisch könntest du es auch hier posten, aber wenn man es schonmal hat :wink:.
 
Zurück
Oben