Oliver Baer: Datenbanksuche

Hi folx,

ich habe ne suche für meine MySQL Tabelle gebaut, funktioniert soweit auch ganz gut, nur lassen sich keine Einträge finden, wenn man nur ein Teil des Suchbegriffs eingibt.

Also, die Abfrage geht so:

<?php
$colname_Recordset1 = "";
if (isset($HTTP_GET_VARS['s'])) {
  $colname_Recordset1 = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS['s'] : addslashes($HTTP_GET_VARS['s']);
}
$colname1_Recordset1 = "";
if (isset($HTTP_GET_VARS['order'])) {
  $colname1_Recordset1 = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS['order'] : addslashes($HTTP_GET_VARS['order']);
}
mysql_select_db($database_azubi, $azubi);
$query_Recordset1 = sprintf("SELECT * FROM Auszubildende, berufe, verkn WHERE Auszubildende.name LIKE '$s' OR Auszubildende.vorname LIKE '$s' OR berufe.berufe LIKE '$s' HAVING Auszubildende.az_id = verkn.az_id AND berufe.bid = verkn.bid ORDER BY '$colname1_Recordset1'", $colname_Recordset1,$colname_Recordset1,$colname_Recordset1);
$Recordset1 = mysql_query($query_Recordset1, $azubi) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>

eigentlich müsste ich ja einfach nur ein "%" vor die Variable hinter LIKE hängen, aber dann geht die ganze abfrage nicht mehr. Weiss jemand vielleicht n Tip, wie ich das trotzdem realisieren kann, das man nur nach teilen des Wortes sucht und der alles ausgibt, was diesen teil enthält??

Vielen Dank

Oli

  1. Probiere mal das aus :

    .. like '%".$s."%'...

    Oliver

    1. hi,

      Probiere mal das aus :

      .. like '%".$s."%'...

      Oliver

      so ging das leider nicht, aber nach n bisserl rumprobieren sind wir auf diese Lösung gekommen:

      mysql_select_db($database_azubi, $azubi);
      $s = "%".$colname_Recordset1."%";
      $s = "%".$s."%";
      $query_Recordset1 = sprintf("SELECT * FROM Auszubildende, berufe, verkn WHERE Auszubildende.name LIKE '$s' OR Auszubildende.vorname LIKE '$s' OR berufe.berufe LIKE '$s' HAVING Auszubildende.az_id = verkn.az_id AND berufe.bid = verkn.bid ORDER BY '$colname1_Recordset1'", $colname_Recordset1,$colname_Recordset1,$colname_Recordset1);

      weiss allerdings nicht warum er das nur so macht und nicht andersrum. wenn man die beiden Zeilen $s = vertauscht funktioniert es auch nicht. egal, so gehts und das ist gut.

      Danke nochmal für Deinen Hinweis...

      oli