 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
23.05.2003, 17:12
|
#1
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
strtolower bei db-abfrage
hi allerseits!
dank eurer hilfe hab ich jetzt mal die fast wirklich gute suchfunktion online.
nun steh ich aber vor dem problem, dass ich zwar leicht die übergebenen suchbegriffe in kleinbuchstaben bring (stringtolower), allerdings bei der db-abfrage vor dem problem steh, dass dort die strings ja nicht so stehen - kann mir da jemand einen trick verraten, wie ich das hinbekomm?!?!
hier mein code:
PHP-Code:
$suchbegriff = $_POST['suchbegriff'];
$suchbegriff = trim($suchbegriff);
$suchbegriff = strtolower($suchbegriff); // alles in kleinbuchstaben
$suchart = $_POST['suchart']; // welche verknüpfungsart
// richtige suchart definieren
global $verkn, $weg;
switch ($suchart) {
case 0:
$verkn = "AND";
$weg = 4;
break;
case 1:
$verkn = "OR";
$weg = 3;
break;
default:
$verkn = "AND";
$weg = 4;
break;
}
$teilstr = explode(" ",$suchbegriff);
foreach ($teilstr as $ausgabe) {
$suchstring1.= " blogmessage LIKE '%$ausgabe%' $verkn";
$suchstring2.= " commentmessage LIKE '%$ausgabe%' $verkn";
}
global $suchstring1; // durchsucht die blogeinträge
$laenge = strlen($suchstring1);
$suchstring1 = substr($suchstring1,0,$laenge-$weg); // -4 bei AND, -3 bei OR
global $suchstring2; // durchsucht die kommentare
$laenge = strlen($suchstring2);
$suchstring2 = substr($suchstring2,0,$laenge-$weg); // -4 bei AND, -3 bei OR
Geändert von prefix (23.05.2003 um 20:58 Uhr).
|
|
|
23.05.2003, 19:15
|
#2
|
|
TP-Junior
Registriert seit: Jan 2003
|
Hhhhmm ich verstehe deine Frage nicht ^^
Ich interpretiere deine Frage irgendwie so dass die Strings in deiner DB nicht klein (stringtolower) geschrieben sind?¿?
Was soll das für ein Sinn ergeben sie so in der DB zu speichern? Du kannst diese vor den Ausgaben doch mit stringtolower bearbeiten bzw anzeigen lassen.
|
|
|
23.05.2003, 19:18
|
#3
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
die strings in der db sind in einem LONGTEXT feld definiert. natürlich NICHT mit strtolower, weil es sich um die ausgabe für einen weblog handelt.
genau deshalb habe ich das problem, dass ich sie ja in der generierten abfrage (siehe code) eben nur so rausbekomme (select from blogmessage......) wie sie eben sind - groß bzw. kleingeschrieben :-(
|
|
|
23.05.2003, 21:06
|
#4
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
Kann deine frage eigentlich nicht nachvollziehen.
Die Suche mit like ist eigentlich caseinsensitiv (soeben getestet)
erst mir dem sql befehl rlike wird die suche casesensitiv.
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
23.05.2003, 21:10
|
#5
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
hmmm, danke dir ! das hab ich bisher nicht gewusst... hab ein paar mal getestet und nicht so recht gefunden - am besten mach ich folgendes: ich schau es mir nochmal genau an - ich denk schon fast ("schandeübermich"), ich hab das wirklich verkompliziert.... thx :-)
und grüsse nach ***** :-)
zensiert
EDIT
warum zensiert?? dürfen keine orte genannt werden?? anscheinend nicht - aber ist ok :-)
Geändert von prefix (25.05.2003 um 14:30 Uhr).
|
|
|
25.05.2003, 14:29
|
#6
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
nein nein! die LIKE-bedingung in mysql unterscheidet doch tatsächlich zwischen groß- und kleinschreibung :-(
schaut euch mal diesen blogeintrag an!
das erste wort in der 3. zeile ist "happy" - also kleingeschrieben.
jetzt folgendes:
sucht hier bitte einmal nach " happy" --> treffer, dann nach Happy --> kein treffer!
somit ist das problem, dass ich die ausgegebenen strings nicht korrekt überprüfen kann!
als lösung würde mir jetzt mal folgendes einfallen:
- mit dem instr-befehl abfragen, nachdem ich vorher die einträge aus der db gezogen und mit strtolower (auch den suchbegriff) alles in kleinbuchstaben umgewandelt habe.
das ist allerdings eine minus-lösung, da sehr anti-performant.
hat jemand von euch eine idee dazu?
Geändert von prefix (25.05.2003 um 14:33 Uhr).
|
|
|
25.05.2003, 15:06
|
#7
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
versuch die tabellenfelder selbst zu 'verkleinern' das geht mit dem sql-befehl lower()
also
versuch mal das
PHP-Code:
foreach ($teilstr as $ausgabe)
{
$ausgabe = strtolower($ausgabe);
$suchstring1.= " lower(blogmessage) LIKE '%$ausgabe%' $verkn";
$suchstring2.= " lower(commentmessage) LIKE '%$ausgabe%' $verkn";
}
obwohl ich immer noch der meinung bin, dass es auch anders gehen sollte. 
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
25.05.2003, 15:07
|
#8
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
yep, das ist die lösung - danke dir für deine geduld und hilfe :-)
bist verewigt ;-)
|
|
|
25.05.2003, 15:12
|
#9
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:17 Uhr.
|
 |