Probleme bei der suche im Formular

Ja ist ja ok. Ich werde dann nichts mehr fragen.Es gibt nu mal Leute die vestehen es nicht gleich zum Anfang darum suchen sie ja das Forum auf User helfen Usern.
Soory
 
Zuletzt bearbeitet:
Sei nicht gleich beleidigt. Es wurde doch versucht dir zu helfen, oder?
Ich wollte auch helfen. Doch mangels Satzzeichen etc. verstand ich (kein Deutscher!) wirklich nicht, was deine Fragen sind.
 
Hallo Yaslaw

Ich glaube auch das irgendwie was nicht verstanden wurde.

Meine Frage war?

Ich habe eine Suchmaske erstellt mit dem code

html:
PHP:
<form method="post" action="suche.php">
<input type="text" size="30" maxlength="100"  name="suchwort">
<input type="submit"  name="submit" value="Suchen">
</form>

dazu die php datei:

PHP:
<?php
mysql_connect(" ", "xxxx","xx")  or die ("Keine Verbindung moeglich");
mysql_select_db("xxxx") or die ("Die Datenbank existiert nicht");
 
$abfrage="SELECT * FROM artikel WHERE artikel LIKE '%$suchwort%' OR marke LIKE '%$suchwort%' ";
$suchtext=str_replace(" ","','",$suchtext);
$ergebnis = mysql_query($abfrage) or die(mysql_error());
while($row = mysql_fetch_array($ergebnis))
{
echo
"<div>
<p>".$row['artikel']." </p>\n
<p>".$row['marke']."</p>\n
</div>\n";
}
?>

Die Suche funktioniert super.

Was nicht klappt ist, wenn ich jetz auf die Seite geh wo die Suchmaske ist und da einfach auf suchen drücke wird mir die ganze Tabelle angezeigt.Da dürfte er mir doch garnichts anzeigen weil ich doch nichts in die Suchmaske geschrieben habe.

Das ist mein Fehler

Soory das ich micht nicht klar und deutlich ausgedrückt habe.

mfg
 
Nun, das Problem ist, dass die Lösung bereits gepostet wurde und du nicht darauf eingegangen bist.

Du musst prüfen ob $suchwort abgefüllt ist. Wenn ja der WHERE-Teil so schreiben wie du ihn jetzt hast.
Wenn Nein, hast du 2 Varianten: 1) Alles Anzeigen, 2) Nichts anzeigen. Du willst Variante 2.
Das gibt wieder 2 Lösungsansätze: A) Du gibst dem SQL eine Bedinung mit, die nie erfüllt wird (zB: 1=2). Oder B) du lässt den ganzen SQL-Block links liegen. Das ist eigentlich die schönere Variante.

Im Endeffekt sieht das ganze dann etwa so aus (Achtung, ist nur ein Beispiel)
PHP:
echo '<table>';
echo '<tr><th>Spaltenüberschrift 1</th><th>Spaltenüberschrift 2</th></tr>'
if(isset($suchbegriff)){
	$abfrage = "SELECT.....";
	$res = mysql_query($abfrage);
	while($row = mysql_fetch_array($res)){
		echo "<tr><td>{$row['feld1']}</td><td>{$row['feld2']}</td></tr>";
	}
}
echo '</table>';
 
Hallo

Wie schon gesagt Funktioniert die Suche.Leider wenn ich auf Suche gehe ohne was zu suchen sehe ich die ganze Tabelle.Und da ist der Fehler.

Gibt es eine Möglichkeit das zu unterbinden? z.B. mit einer Sperre das heist mann muss ein Suchbegriff eingeben damit die Suche starten kann****

mfg
 
Hallo

Ich habe heute den ganzen Tag verschiedenes ausprobiert und bin immer zum gleichen ergebnis gekommen .Habe auch mal ein anderes Script eingebaut genau das selbe.Ich denke mal es liegt an der Datenbank.Vieleicht kann mir da ja einer mal ein Tipp geben.Habe die Felder auf NotNull gestellt.

mfg
 
Ich denke mal es liegt an der Datenbank.Vieleicht kann mir da ja einer mal ein Tipp geben.Habe die Felder auf NotNull gestellt.

Und wahrscheinlich weißt du auch hier nicht, warum. Ich will dich nicht beleidigen, aber setz mal bitte deinen gesunden Menschenverstand auf NOTNULL.

Dir wurden hier zwei perfekte Lösungen präsentiert. Du hättest sie nur noch logisch mit deinem vorhandenem Script verknüpfen müssen; aber du setzt dich absolut nicht damit auseinander.

Was du brauchst, ist eine Bedingung[1], die prüft, ob der übermittelte Wert[2] nicht leer[3] ist, und dann[4] das Query absendet[5] und das Ergebnis ausgibt[6].


PHP:
<?php
mysql_connect(" ", "xxxx","xx")  or die ("Keine Verbindung moeglich");
mysql_select_db("xxxx") or die ("Die Datenbank existiert nicht");

/* 1 */     /* 2 */              /* 3 */
if(isset($_POST['suchwort'] && !empty($_POST['suchwort']))){

  /* 4 */

  $abfrage="SELECT * FROM artikel WHERE artikel LIKE '%".$_POST['suchwort']."%' OR marke LIKE '%".$_POST['suchwort']."%' ";

  /* 5 */
  $ergebnis = mysql_query($abfrage) or die(mysql_error());
  while($row = mysql_fetch_array($ergebnis))
  {
  /* 6 */
  echo
  "<div>
  <p>".$row['artikel']." </p>\n
  <p>".$row['marke']."</p>\n
  </div>\n";
  }
}
?>

Das ist die grundsätzliche Vorüberlegung zu diesem Problem.
Du findest zu jedem der Punkte einen Haufen Beispiele über Google [oder eben hier], aber es langt absolut nicht, die einfach zu übernehmen. Du programmierst das Ganze, Du musst deinen Code kennen und entsprechende Codeschnipsel darauf anpassen können.
 
Zuletzt bearbeitet:
Hallo para_noid

Beleidigen..nööö.Ich bin ja hier um was zu lernen.Sobald ich eine Bedingung einsetze im Script passiert garnichts mehr auch keien Fehlermeldung nur eine weisse Seite.Ja mir wurden schon Lösungen gesagt aber irgendwie klappt es nicht ich weis auch nicht wo der fehler liegt.Vieleicht kann ja jemand das script mal testen ob es wirklich nicht funktioniert.

Danke

Es Funktioniert jetz .Danke für eure Geduld

mfg
 
Zuletzt bearbeitet von einem Moderator:
Eine weiße Seite kommt daher da dein Error-Reporting ausgeschalten ist. Das hab ich dir aber auch schon in nem vorrigen Post gesagt. Wenn dies per Script nicht geht zum anschalten (wie das geht hab ich dir auch schon gepostet), dann eben per php.ini.
 
Zurück