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

2 Suchfelder 1 Abfrage?

Pauline

Neues Mitglied
Ich möchte für unseren Sportverein eine Webseite machen und habe auch bisher alles mit html so hinbekommen wie ich es wollte.
Nun bin ich an dem Punkt angekommen wo ich ohne MySql nicht weiter komme.

Lange Rede kurzer Sinn...
...ich hab nach einiger Zeit eine Datenbankabfrage hinbekommen die funktioniert.
Nun möchte ich aber statt EINER Suchleiste auf der Webseite ZWEI Eingabefelder haben um die Datenbank abzufragen.

das ganze soll dann so aussehen...
In der MySql-Datenbank soll Spalte1 nach einem bestimmten Begriff (z.B. Volleyball) durchsucht werden und in Spalte2 nach einem anderen Begriff (z.B. Müllerstr.) und nur wenn beide unterschiedlichen Worte in einer Reihe vorhanden sind soll der Begriff aus Spalte 3 (der entsprechenden Reihe) als Ergebnis ausgegeben werden.

Jedes Eingabefeld auf der Webseite soll jeweils für einen Begriff da sein.
meine jetzige Suchabfrage sieht so aus:

html
HTML:
<!doctype html> 
<html>
<body>

<form action="search.php" method="get">
<input type="text" autocomplete="off" maxlength=2048 name=lol1 class="lst" value="" size=57
<span class=ds><span class=lsbb><input name=btnG type=submit value="suchen" class=lsb onclick="this.checked=1">
</form>
 
</body>
</html>

php
PHP:
<?php
mysql_connect("sagichnich","sagichnich","sagichnich");
mysql_select_db("sagichnich") or die("Unable to select database");
  $var = @$_GET['lol1'] ;
  $trimmed = trim($var);
$limit=10; 
if ($trimmed == "")
if (!isset($var))
  {
  echo "<p>kein Suchparameter!</p>";
  exit;
  }
$query = "select * from tabelle1 where Feld1 like  \"%$trimmed%\"  
 order by Feld1";
 $numresults=mysql_query($query);
 $numrows=mysql_num_rows($numresults);
  if (empty($s)) {
  $s=0;
  }
  $query .= " limit $s,$limit";
  $result = mysql_query($query) or die("Couldn't execute query");
echo "<p>Du suchtest nach: &quot;" . $var . "&quot;</p>";
echo "Results";
$count = 1 + $s ;
  while ($row= mysql_fetch_array($result)) {
  $title = $row["1st_field"];
  echo "$count.)&nbsp;$title" ;
  $count++ ;
  }
  
?>
wie man sehen kann gibts nur ein Eingabefeld in html.
Mach ich einfach eine zweite Suchleiste dazu funktionierts natürlich nicht :(

Ich hab überall gesucht aber ich finde einfach nix zu dem Thema 2 Suchleisten ...und als totale MySql-Anfängerin ist es so schon schwer genug.

Wäre echt nett wenn mir jemand sagen könnte wie ich das hinkrieg.
 
Abfragebedingungen verknüpfen geht in SQL mit AND.
Aber noch einen Rat, falls das auf einem öffentlich zugänglichen Server passiert, als Anfängerin solltest du dich erstmal wirklich in das Thema einlesen, weil so hast du schon die erste Sicherheitslücke in deiner Anwendung. MySql ist eine Sache die mehr Aufwand und Hintergrundwissen erfordert, als reines HTML oder auch PHP (wobei auch da man Wissen sollte, wo potenzielle Einfallstore sind)
 
Hallo Strolchi

Danke für den Hinweis.
Du hast natürlich Recht, mit MySql sollte man sich ausführlicher beschäftigen.

HTML:
<form action="search.php" method="get">
 
<input type="text" name=suchfeld1>
<input type="text" name=suchfeld2>
 
<input name=btnG type=submit value="suchen">

PHP:
$var = @$_GET['suchfeld1'] ;
$trimmed = trim($var);
 
$query = "select * from tabelle1 where Nachname like  \"%$trimmed%\" OR Sportart like  \"%$trimmed%\"
order by Nachname";

Wie man sehen kann befindet sich im query ein "OR" das man aber nicht einfach durch ein "AND" ersetzen kann.
Theoretisch müsste man irgendwo in die php-Datei reinschreiben, dass der Begriff aus suchfeld2 ebenfalls in den query mit rein kommt.

Es wird immer nur die Eingabe aus einem Suchfeld der html-Datei angenommen.
Selbst wenn ich beiden Eingabefeldern den selben Namen gebe wird nur der Begriff aus EINEM Eingabefeld der html-Datei angenommen.

Das Problem ist... ich habe die Seite von jemandem übernommen der sie nicht weitermachen kann und sie war eigentlich fast fertig. Jetzt hab ich mir die Sache mit den 2 Suchfeldern in den Kopf gesetzt und hab keine Ahnung wie ich es hinkriegen soll. :sad:

Mit google ist leider nix zu finden zum Thema 2 Suchfelder :cry:

...jedenfalls nix das funktioniert... oder ich bin zu doof zum suchen.
 
PHP:
$suchfeld1 = @$_GET['suchfeld1'] ;
$suchfeld1 = trim($suchfeld1);
$suchfeld2 = @$_GET['suchfeld2'] ;
$suchfeld2 = trim($suchfeld2);
 
$query = "select * from tabelle1 where Nachname like  \"%$suchfeld1%\" OR Sportart like  \"%$suchfeld2%\"
order by Nachname";

jetzt klarer?
 
Ich habs jetzt hingekriegt... Danke euch beiden :D

Das mit dem real_escape_string schau ich mir als nächstes an... jetzt bin ich erst mal happy dass es läuft.

Gibt es Tutorials zu MySql die besonders ausführlich sind oder gibt es bestimmte Bücher die man empfehlen kann zum Thema Datenbanken?
Das Ganze ist ja wirklich sehr komplex und ich würd mich gern intensiver damit beschäftigen.

Als anfängerin fehlt mir irgendwie der Überblick :?
 
Ich hab mir damals, irgendein runtergesetztes mysql Buch gekauft. Damit wirst du sicher kein Crack, aber als Einstieg um nur eine grobe vorstellung zu erlangen was in mysql alles möglich ist, kann das ausreichen.

Wenn es um Internetspezifische sachen geht, wo es völlig andere Anforderungen gibt, als bei einer Desktop Anwendung oder in einem Netzwerk, kannst du im Internet recherchieren, es gibt sicher viele Blogs o.ä. die mit Tipps und konkreten Hinweisen helfen.

Aber das einbauen der Funktion ist nicht wirklich eine herausforderung, dafür reichen schon grundsätzliche PHP Kenntnisse aus.
 
Für das mysql_real_escape_string braucht man sicher nicht extra ein Buch kaufen aber ich interessiere mich auch so für mysql.

Ist denn dieses mysql_real_escape_string so wichtig?
Die Datenbank-Daten liegen doch im PHP-Script und das ist nicht einsehbar für Andere... oder?
 
Zurück
Oben