Komisches Problem (mal wieder...)

Feldhofe

Erfahrenes Mitglied
Hallo!

Und zwar folgendes:
In meiner Datenbank speichere ich nach folgendem Muster:
id|interpret|titel|songtext

Nun habe ich eine Suchfunktion eingebaut, man gibt "Titel" ein und mittels "where titel like '$titel%'" usw. wird der Songtext rausgesucht.
Soweit läuft alles gut.

Das Problem ist nur, dass manche Texte trotz vollkommen gleicher Schreibweise partout nicht gefunden werden!

Und zwar habe ich herausgefunden, dass das an den Leerzeichen liegt -es gibt da offenichtlich ZWEI Sorten.

Wenn ich die "nicht-auffindbaren" Titel mir in PHPmyADMIN anschaue, sehe ich nichts AUffälliges, da steht z.B. genauso "French Kissing" wie bei den "auffindbaren".

Nun bearbeite ich den "nicht-auffindbaren" Text nach, lösche das Leerzeichen, füge ein neues ein -und schwupps: ES GEHT!

Was ist das für eine merkwüdige Sache?

Feldhofe
 
Ich habe jetzt folgendes rausgefunden:

Beim Eintragen in die DB wurde früher jedes Leerzeichen in   umgewandelt.
Das sieht man zwar nicht im phpMYAdmin, aber offensichtlich ist es doch ein Unterschied, ob da in WIrklichkeit ein " " oder ein " " steht.

Nun aber die Frage: Wie kriege ich die "&nsbp;" automatisch (ohne einzeln zu ändern) wieder in " " zurück??
 
Nein, das geht leider nicht!
Alle Buchstaben kann man austauschen, nur das " " irgendwie nicht -das wird wohl anders behandelt.

Das jedenfalls funktioniert
mysql_query("UPDATE test SET interpret=replace(interpret,\"z\",\"y\") WHERE (id='1350')");

das aber nicht!
mysql_query("UPDATE test SET interpret=replace(interpret,\" \",\" \") WHERE (id='1350')");

Hmmm -was nun?
Gruß
Feldhofe
 
Ha -so gehts!

So geht das (Beispiel ID=1350):
PHP:
$result = mysql_query("select interpret,titel,id from tabelle WHERE id=1350");

while ($reihe = mysql_fetch_row($result))
{
$interpret=htmlentities($reihe[0]);
$interpret = ereg_replace(" "," ",$interpret);
}
mysql_query("UPDATE tabelle SET interpret='$interpret' WHERE (id='1350')");

Aber wie kann man das vereinfachen? Ich will ja schlecht eine ID nach der anderen eingeben...kann man das irgendwie auf einmal machen, oder wie müsste ich eine Schleife bauen?

Gruß Feldhofe
 
Ich würde es so machen:

PHP:
$result = mysql_query("SELECT interpret,titel,id FROM tabelle);
while ($reihe = mysql_fetch_row($result))
{
$interpret = ereg_replace(" "," ",htmlentities($reihe['interpret']));
mysql_query("UPDATE tabelle SET interpret = '".$interpret."' WHERE id = '".$reihe['id']."'");
}

Also da dürfte normal kein Fehler sein
 
Danke!
Hmmm....trau mir aber irgendwie nicht, das Ding laufen zu lassen... :)
Wenn das nicht klappt, ist alles weg -ich glaub, ich probier das erstmal an ner kleineren Tabelle aus!
 
Zurück