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

Abfrage mit %

Arco2726

Neues Mitglied
Guten morgen.

Ich brauche wenn machbar bitte eure hilfe.
Ich habe mir das Video "SQL lernen und anwenden" angesehen.
Dort wird unter anderem erklärt, das ich eine Abfrage mit % starten kann.

Wenn ich das richtig verstanden habe, sollte ich folgende möglichkeiten haben :
Bei der Schreibweise %Meister soll ich alles angezeigt bekommen, was mit Meister endet. Wie zum Beispiel : badeMEISTER, küchenMEISTER usw ....
Bei der Schreibweise Meister% soll ich alles angezeigt bekommen, was mit Meister anfängt. Zum Beispiel : MEISTERkoch, MEISTEReder usw ...

Nun habe ich mir eine Suchfunktion gebastelt, wo der Benutzer in einem Formularfeld das zu suchende Wort eingeben kann.
Das Formularfeld habe habe ich der Variabel $suchen gegeben.

Wenn ich jetzt ein Wort eingebe, wird auch genau nach diesem Wort gesucht. Nur wenn ich nun als Benutzer das %Zeichen mit eingbe, wird nichts gefunden.

In meinem Fall möchte ich nach gespeicherten Kennzeichen suchen.
Das Problem ist halt, das einige die Kennzeichen falsch eintragen.
Zum Beispiel wird das Kennzeichen : "TE-ST 122" wie folgt eingetragen : "TE - ST 122"
Ich hätte es nun gerne, das ich in der Suchfunktion unter anderem nur nach den zwei Buchstaben in der mitte suchen kann. Hatte mir eigentlich gedacht, das ich dann " %ST% " eingebe
und das richte Kennzeichen mir dann angezeigt wird. Ist aber leider nicht so.

Kann mir da jemand wieterhelfen ?

Gruß

Roland
 
Auch wenns völlig OffTopic ist, den kann ich mir nicht verkneifen.

Den Kreis Tecklenburg und damit das Kennzeichen " TE ... " gibt es seit über 35 Jahren nicht mehr.
Das ist jetzt ein Teil vom Kreis Steinfurt und hat das Kennzeichen " ST ... "

Wo früher mal das Kennzeichen " TE - ST ... " gefragt war, wollen die Nostalgiker heute ein Kennzeichen mit " ST - TE ... "


Zur Frage:
% - Abfragen funktionieren nur mit "LIKE"

Also NICHT

Code:
SELECT * FROM `Tabelle` WHERE `Feld` = '%ST%';

sondern

Code:
SELECT * FROM `Tabelle` WHERE `Feld` LIKE '%ST%';
 
Danke euch beiden. Ich werde es gleich mal abaendern und versuchen.
Und Mark, das mit dem Kennzeichen war doch nur ein beispiel. Habe halt in der Datenbank einfach was eingegeben. Und da es ein Test war, habe ich halt TE-ST 122 eingegeben :D. Aber wie gesagt, bin euch beiden dankbar. Wenn das funktioniert, wuerde ich micht freuen. Werde morgen kurz berichten.
 
Guten morgen.

Also es hat schonmal funktioniert.
wenn ich nun hergehe und in der suchabfrage DU eingebe, werden mir alle kennzeichen angezeigt, wo ein du vorkommt.
Ich habe für die Variable "$suchenach" noch etwas hinzugefügt :

PHP:
$suchenach = "'%".$_POST["suchenach"]."%'";

So braucht der Benutzer halt nicht das % Zeichen eingeben (die meisten bei uns kennen dieses Zeichen nicht)

Nur stehe ich noch vor dem Problem, das folgendes Kennzeichen nicht gefunden wird : "D U - T E S T 1234 "
Ich habe mir mal die Datenbank angeschaut. Es gibt echt einige bei uns, die so ein Kennzeichen eingeben.
Gibt es da eine möglichkeit, das alles angezeigt wir, wo die Buchstaben D und U vorkommen, egal was vor oder nach den zu suchenden werten steht ?

Gruß

roland
 
Dazu müsstest Du den Suchstring explode()'en und dann das Statement dynamisch zusammensetzen. Pro Buchstaben eine Suchanfragen. Wenn das Statement generiert wird, sollte es in etwa so aussehen wenn es ausgeführt wird:

Code:
SELECT *
FROM tabelle
WHERE 
 feld LIKE '%D%'
 AND feld LIKE '%U%'
 
Guten morgen.

Also verstehe ich das dann richtig.
Ich muss erst aus der Variabeln $suchenach die leerzeichen und die Trennstriche löschen,
dann die Anzahl der Buchstaben ermitteln ?

Wenn ich dieses gemacht habe, dann für jeden Buchstaben in der Abfrage "feld LIKE" hinzufügen ?

Dann mache ich das doch am besten mit einem Array und einer weiteren Variable für die Abfrage, oder ?

Gruß

Roland
 
Da bin ich wieder.

Ich habe mir mal vor dem Frühstück was ausgedacht.
Könnt ihr euch mal diesess Script ansehen :

PHP:
<?php

$suchenach = "D U - W   O  1 2";
$suchenachneu = "";
$abfrage = "";
echo "Eingabe suche nach :$suchenach<br>";
  
$search1[0] = " ";  
$search1[1] = "-";  
   
$replace1[0] = ""; 
$replace1[1] = ""; 
$suchenach1 = str_replace($search1,$replace1,$suchenach);
$suchebuchstabe = str_split($suchenach1);
echo "Umwandlung von $suchenach <br>in $suchenach1 <br>";
$count = strlen ($suchenach1);
echo "Anzahl der Zeichen nach Umwandlung : $count <br>";
for($a=0; $a < $count; $a++)
  {
  $suchenachneu = "$suchenachneu"."kennzeichen LIKE '%$suchebuchstabe[$a]%'";
  if($a<$count-1)
  {
  $suchenachneu = "$suchenachneu"." AND ";
  }
  }
  // $suchenachneu = "$suchenachneu"."%";
  echo "$suchenachneu <br>";
?>

Ich bin nun nicht gerade der Experte in PHP. Das sind nun aber so die Befehle die ich kenne.
Wenn ich nun das Ergebniss aus der Variable $suchenachneu in die Abfrafge einbaue, sollte es doch funktionieren, oder ?
Vielleicht hat ja der eine oder andere einen Typ für mich, das ich das Script etwas kleiner bekomme.

Das mit dem echo kommt dann in der Suchfunktion raus. Ist für mich nun erstmal nur dafür da, damit ich sehe, ob die einzelnen Schritte so funktionieren wie ich möchte.

Gruß

Roland

P.S.

Gehe nun etwas essen :-)
 
Guten abend.

Habe es nun geschaft. Nun funktioniert es so wie ich es haben möchte.
Dank an threadi, der mich auf den richtigen weg gebracht hat.

Gruß und guts nächtle

Roland
 
Zurück
Oben