If Abfrage: Ähnlich

Jetzt funktioniert es mit der strpos-funktion... Aber nur wenn der Datensatz Beispielsweise 'Google' heißt und der User auch 'G' eingibt. Wenn er allerdings 'g' eingibt, wird der Datensatz nicht gefunden. Wie mache ich es aber, dass der Datensatz auch gefunden wird, wenn der Benutzer 'g' eingibt?

Code:
... where LCASE(Spaltenname) LIKE '%google%' ...

snuu
 
Laut MySQL Manual kannste die Funktion nur auf einen String anwenden. Der Spaltenname ist aber ein Spaltenname und kein String... Außerdem ist LIKE IMHO sowieso case-insensitive.

Gruß thing
 
OK, hab's ausprobiert und die LIKE-Klausel ist wirklich case-insensitive. Dennoch kann man LCASE(Spaltenname) verwenden, um die Rückgabe der Datensätze aus der betreffenden Spalte in Kleinbuchstaben umzuwandeln. Und das funktioniert natürlich auch in der Where-Klausel für einen String-Vergleich. (Die Daten in der Spalte sind ja vom Typ String) Probier's aus.

mfg, snuu
 
Original geschrieben von thing
Und wieder was gelernt... Funktioniert jetzt wenigstens alles so wie du wolltest ?

Gruß thing

Nein, da ich nicht weiß, WO und WIE ich das einbauen muss. Ich habe doch meinen Code vorhin mal gepostet. Wie muss ich dass da einbauen, dass die Echo Befehle nur Ausgeführt werden, wenn der Suchstring in der Tabellenspalte enthalten ist, auch, wenn der Benutzer im Formular das Wort/den Buchstaben klein schreibt und er in der Datenbank groß ist. Außerdem ist der String, der enthalten sein muss, nicht festgelegt, sondern wird per HTML Formular an den PHP Script übermittelt.

MagicMasterII
 
PHP:
<?php

// mysql configuration
$mysql_host = 'localhost';
$mysql_user = 'eichelnase';
$mysql_pass = 'abrissbirne';
$mysql_db   = 'pimp';

// mysql connection
$mysql_id = @mysql_connect($mysql_host,$mysql_user,$mysql_pass) OR die(mysql_error());
            @mysql_select_db($mysql_db,$mysql_id) OR die(mysql_error());

// get results from the mysql db
$result = @mysql_query("SELECT searchname,link FROM search WHERE searchname LIKE '%".addslashes($_POST['name_des_feldes_im_formular'])."%' ORDER BY link ASC",$mysql_id) OR die(mysql_error());

/* Du hast jetzt nur Datensätze im Result, die den
 * Suchstring enthalten. Geordnet sind sie absteigend
 * nach dem Link. Ob das sinnvoll ist, ist 'ne ganz an-
 * dere Sache, aber in dem Beispiel hier isses halt so :-)
 */

// how much lines do we have
$count = @mysql_num_rows($result);
echo('Es wurden '.$count.' Datensätze gefunden !<br /><br />'."\n");

// clear the page variable
unset($page);

// for each line do
while ($row = @mysql_fetch_array($result)) {
    // extending $page with the line
    $page .= $row['id'].': <a href="'.htmlspecialchars($row['url']).'">'.htmlspecialchars($row['title']).'</a><br />'."\n";
}

// echo all output to the browser
echo($page);

?>
 
Zurück