ich möchte eine Textdatei per Formular durchsuchen und folgendes erreichen:
- Prüfung, ob Suchbegriff min. 3 Zeichen lang
- Fehlermeldung, falls nichts gefunden wird.
- falls alles ok ist, sollen die gefundenen Datensätze ausgegeben werden.
Problem:
Die Fehlermeldung, dass nichts gefunden wurde, wird leider auch angezeigt, wenn es Ergebnisse gibt.
Ich komme hier leider nicht weiter. Wo könnte hier der Denkfehler sein? Vielen Dank für Eure Hilfe!! Hier der Code:
Ich weiß nich ob es was ändert aber das { unter $lines = file($datei); gibt für mich irgendwie keinen Sinn. Ebenso das allerletzte.
Vllt verschiebt des das ganze irgendwie.
En Versuch ists wert...
Dann och eine Kleinigkeit:
Wenn er nichts findet dann brauch er auch nicht suchen. also kannste das was nach dem "nix gefunden" Error kommt noch in ein else packen!
ich habe das ganze nun umgestellt. gleiches Ergebnis. Es kommt die Fehlermeldung, wenn nichts gefunden wird und aber auch, wenn Ergebnisse zurückgegeben werden. Wo könnte der Fehler sein? Ich bin Euch für jeden Tip dankbar :-) Hier der neue Code:
<?
$datei = "test6_1.txt";
$lines = file($datei);
sort($lines);
if(isset($_REQUEST['suche'])){
// wurde das Formular abgesendet
if(strlen($_REQUEST['suche']) > 3){
// hat der Benutzer mindestens 3 Zeichen eingegeben
foreach ($lines as $line)
{
if (strpos($line, $_POST["suche"]) !== FALSE && strpos($line,"Deutsch"))
if(isset($_REQUEST['suche']))
{
// wurde das Formular abgesendet
if(strlen($_REQUEST['suche']) > 3)
{
// hat der Benutzer mindestens 3 Zeichen eingegeben
foreach ($lines as $line)
{
if (strpos($line, $_POST["suche"]) !== FALSE && strpos($line,"Deutsch"))
Ich hab unten eine } gelöscht und sie dafür hinter den Error1 gemacht.
Mach doch wenn du was programmierst direkt Einrückungen, dann passiert sowas nicht so schnell!
vielen Dank. Hab´s ausprobiert - leider ohne Erfolg. Die Fehlermeldun kommt trotzdem noch, auch wenn Daten gefunden werden. ich versuche, das nun mal ganz anders.
Dir ist aber schon klar, dass deine Textdatei zeilenweise abgesucht wird? Was ja deine Schleife macht. Also kann es passieren, dass er in einer Zeile eben nichts findet und dir dadurch auch eine Fehlermeldung ausgibt. Obwohl er in den anderen Zeilen etwas gefunden hat.
Deine Abfrage ob die Suche erfolgreich war kann erst erfolgen, wenn die ganze Datei durchsucht wurde.
Ach, da ha ich beim suchen nach Syntax fehlern gernicht drauf geachtet *an den Kopf schlag*
Kannst du schnell lösen indem du einfach das ganze else in dem jetzt dem error1 seine Fehlermeldung kriegt wegmachst,
dann vor alledem error1 die Fehlermeldung gibst und im Falle eines Sucherfolgs wieder $error1="" setzt.
Gruß,
Matze
Geändert von MatMel (29.06.2006 um 18:48:28 Uhr)
Grund: Rechschreibung
Au Backe. dass mit dem zeilenweise einlesen habe ich übersehen. @MatMel: so ganz habe ich Deinen Vorschlag nicht verstanden. Wo soll der ERROR: nix gefunden hin?
In der Schleife wenn was gefunden wurde $error auf false setzen.
Und am Ende if($error) echo 'Fehlermeldung';
Edit: Zu langsam... Aber ich würds trotzdem mit booleschen Werten machen...
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')