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

MySQL Datenbank durchsuchen, suche "entschärfen"

ineedmusic

Neues Mitglied
Hallo!
Erstmal sorry für den komischen Titel, ich weiß nicht wie ich das anders ausdrücken kann.
Ich habe eine MySQL Datenbank die durchsucht werden soll, das habe ich so gelöst:
PHP:
if($search == $a OR $search == $b)
{
// Ausgabe des durchsuchten
}
(Das ganze steht in einer while Schleife)
Ich habe nun 2 Testeinträge gemacht:
1. $a & $b: "abcd"
2. $a & $b: "a b c d"
Wenn man nun "a b c d" sucht, wird nur der zweite Eintrag gefunden und umgekehrt bei "abcd" der erste Eintrag. Suche ich nach "a" finde ich garnichts.
Wie kann ich erreichen, dass leerzeichen bei der suche ignoriert werden und dass auch wenn ich nur Buchstaben suche ich auch Worte in denen diese vorkommen finde?
Edit: Klein- und Großschreibung, Bindestriche, Unterstriche, Und-Zeichen usw. müssen ebenfalls ignoriert werden.
MfG Music!
 
Zuletzt bearbeitet:
Hallo,

was da hast ist aber keine mysql suche, das ist eine einfach php if abfrage und hat nichts mit DB zu tun.

DB abfragen sind in der DB abfrage drin mir where SPALTEA like "%suchwort%" oder so.
Wenn das hats kannst mit reguläre abfragen arbeiten die zb. leerzeichen ignorieren, zwar noch nie gemacht dürfte aber gehen.

Cheffchen
 
$a und $b sind Variablen die aus der DB generiert werden, ich dachte das macht man so.. Bin noch absoluter Neuling was MySQL angeht. ;)
Ich werd nochmal mein SQL Tutorial durchforsten und nachschauen wie genau das funktioniert.
Vielen Dank für die schnelle & hilfreiche Antwort! Ich liebe dieses Forum :D
 
Hallo, ich bins nochmal.
Ich habe inzwischen eine Suche mit MySQL erstellt. Jetzt wollte ich das ganze etwas komplexer probieren, aber irgentwie läuft es nicht ganz. Ich hoffe das mir jemand sagen kann, wo hier der (Denk-?)Fehler liegt:
PHP:
if(!isset($_GET['selected']))
{   
$readdb = mysql_query("SELECT DISTINCT artists FROM data ORDER BY date DESC");


while($t = mysql_fetch_assoc($readdb))
{
$artists=$t['artists'];
print <<<HTML
<span class="artists_all"><form><input type="hidden" name="selected" value="{$artists}"><input class="artists_link" type="submit" action="artists.php" value="{$artists}"></form></span>
HTML;
} //while
} //if
else
{
$show_artist=$_GET['selected'];
$readdb = mysql_query("SELECT * FROM `data` WHERE artists LIKE '%".$show_artist."%'"); 
while($t = mysql_fetch_assoc($readdb));
{
$datum = date("d.m.Y",$t['date']);
$uhrzeit = date("H:i",$t['date']);
$artists = $t['artists'];
$song = $t['song'];
$user = $t['user'];
$dl = $t['dl'];
$pic = $t['pic'];
$picb = $t['img2'];
print <<<HTML
<span class="selected_artist">
{$show_artist}
</span>
<span class="post">
<span class="post_content"><img src="{$picb}"class="post_img"><span class="title_text">{$artists} - {$song}</span><span class="post_options"><a href="http://www.{$dl}"><img src="img/download.png"></a></span></span>
 
</span>

HTML;
} //while
} //else
Der if-Teil funktioniert. Beim else-Teil bekomme ich zwar $show_artist ausgegeben, der rest wird aber nur leer (also ohne $artists, $song usw.) ausgegeben.
Ich kann den Fehler beim besten willen nicht finden. Kann mir bitte jemand sagen was ich falsch gemacht habe?
MfG Music
 
Nein das ist es ja, mir fällt garnichts auf. while($t = mysql_fetch_assoc($readdb)); funktioniert ja beim if auch. Was sollte mir denn auffallen?
 
Man muss aber schon ganz schön blind sein, um das Semikolon am Ende zu übersehen ;)
Oder du bist völlig überrascht, was hier rauskommt:
PHP:
<?php
  $i = 0;
  while ($i++ < 5);
    echo "i = $i<br>";
    
  $j = 0;
  while ($j++ < 5)
    echo "j = $j<br>";
 ?>
 
Zurück
Oben