[PHP/MySQL] Problemchen mit Fremdscript

T-Flow

Scheidenpilz!
ID: 16924
L
24 August 2006
10.107
434
Hi,

also ich habe mal im Internet gesucht nach einem fertigen Script, das mir Suchbegriffe aus einem Textfeld ordentlich unterteilt (auch mit Anführungszeichen eingeschlossene u.s.w.).

Leider bringt mir meine Page nach dem Einbau des Scripts schon die Fehlermeldung, dass da unerwartete eckige Klammern wären und 2 Zeilen weiter war nochmals ein "parse-error", den ich allerdings grade vergessen hab *g*

Hier das Script... Kommentare habe ich bereits rausgelöscht:

PHP:
<?php

$Suchwoerter = $_POST['Suchbegriffe'];

$mit_Anfuehrungszeichen = array();
$ohne_Anfuehrungszeichen = array();

$verbotene_Zeichen = '/[,\\\+"']/U';

preg_match_all('/("|\')(.*)("|\')/U', $Suchwoerter, $mit_Anfuehrungszeichen);
$Suchwoerter = preg_replace('/("|\')(.*)("|\')/U', '', $Suchwoerter);
$ohne_Anfuehrungszeichen = explode(' ', $Suchwoerter);
$Suchwoerter = array_merge($mit_Anfuehrungszeichen[0], $ohne_Anfuehrungszeichen);

function filtern($Suchwort)
{
   global $verbotene_Zeichen;
   $Kontrolle = preg_replace($verbotene_Zeichen, '', $Suchwort);
   $Kontrolle = str_replace(' ', '', $Kontrolle);
   if (strlen($Kontrolle) >= 3) ) return true;
}

$Suchwoerter = array_filter($Suchwoerter, 'filtern');

function korrigieren($Suchwort)
{
   global $verbotene_Zeichen;
   $Suchbegriff = trim($Suchwort);
   $Suchbegriff = preg_replace($verbotene_Zeichen, '', $Suchbegriff);
   $Suchbegriff = preg_replace('/\040+/', ' ', $Suchbegriff);
   return $Suchbegriff;
}

$Suchwoerter = array_map('korrigieren', $Suchwoerter);
?>

Meine erste Frage: Was stimmt hier nicht? 8O

Meine zweite Frage: Kann ich als Abfrage-Befehl dann einfach folgenden nehmen, oder gibt es wegen den Arrays Probleme?

PHP:
 SELECT * FROM datenbank WHERE (spalte1 Like '%$Suchwoerter%') OR (spalte2 Like '%$Suchwoerter%') OR (spalte3 Like '%$Suchwoerter%');

Hoffe, ihr könnt mir helfen :pray:
 
Zu Frage 1:
Betrachte dein Posting doch mal genau. Das Syntax-Highlighting zeigt dir schon, wo der Fehler is (in der Fehlermeldung steht die Zeile btw auch :yawn:)

Zu Frage 2:
a) SELECT * is böse
b) Macht denn die Query
Code:
[COLOR=#000000][COLOR=#0000bb]SELECT [/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000bb]FROM datenbank WHERE [/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]spalte1 Like [/COLOR][COLOR=#dd0000]'%Array%'[/COLOR][COLOR=#007700]) OR ([/COLOR][COLOR=#0000bb]spalte2 Like [/COLOR][COLOR=#dd0000]'%[/COLOR][/COLOR][COLOR=#000000][COLOR=#dd0000]Array[/COLOR][/COLOR][COLOR=#000000][COLOR=#dd0000]%'[/COLOR][COLOR=#007700]) OR ([/COLOR][COLOR=#0000bb]spalte3 Like [/COLOR][COLOR=#dd0000]'%[/COLOR][/COLOR][COLOR=#000000][COLOR=#dd0000]Array[/COLOR][/COLOR][COLOR=#000000][COLOR=#dd0000]%'[/COLOR][COLOR=#007700]);[/COLOR][/COLOR]
Sinn ?
 
Zu Frage 1:
Betrachte dein Posting doch mal genau. Das Syntax-Highlighting zeigt dir schon, wo der Fehler is (in der Fehlermeldung steht die Zeile btw auch :yawn:)

Zu Frage 2:
a) SELECT * is böse
b) Macht denn die Query
Sinn?

zu 1:
hab das Highlighting garnicht angeguckt, weil das ein fertiges Script von dieser Seite war, schon 2300 mal angesehen wurde und die Seite recht zuverlässig aussah :biggrin: Bin halt leichtgläubig... trotzdem verstehe ich diese Zeile 9 nicht mit den rechteckigen Klammern. Das darunter hab ich mittlerweile korrigiert, da hat der wohl ne Klammer vergessen...

zu 2:
Hab nur meinen persönlichen Kram für diese Frage raus gelöscht, eigentlich sieht die Zeile so aus:
PHP:
 SELECT interpret, titel, style, cd, cat, karton FROM cd_archiv WHERE (titel Like '%$Suchwoerter%') OR (interpret Like '%$Suchwoerter%') OR (cat Like '%$Suchwoerter%') ORDER BY interpret, titel asc;
 
Zuletzt bearbeitet: