PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Problem mit Fehlerausgabe in Suchfunktion (http://www.selfphp.de/forum/showthread.php?t=13807)

WebmasterTom 23.06.2006 11:00:31

Problem mit Fehlerausgabe in Suchfunktion
 
Hallo zusammen,

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:

<?
if(isset($_REQUEST['suche'])){
// Formular gesendet
if(strlen($_REQUEST['suche']) > 3){
// mindestens 3 Zeichen eingegeben

$datei = "test.txt";
$lines = file($datei);


{
if (strpos($line, $_POST["suche"]) == FALSE)
{$error1 = "Fehler: nix gefunden.<br>";
}
foreach ($lines as $line)
{
if (strpos($line, $_POST["suche"]) !== FALSE && strpos($line,"Deutsch"))

//Daten ausgeben
{
$zeile = explode('#', trim($line));
print("<a href=");print($zeile[1]);print(">");
print($zeile[1]);
print("</a>");
print("<br>");
print("<p class=normal>Kategorie: ");print($zeile[2]);
print(" | ");
print("&Uuml;bung f&uuml;r ");print($zeile[3]);
print(" | ");
print("Rubrik: ");print($zeile[4]);
print("<br><br></p>");

}}}}else
{
$error2 = "Fehler: Bitte geben Sie mindestens 3 Zeichen ein.<br>";
}
}

?>

MatMel 23.06.2006 13:49:29

AW: Problem mit Fehlerausgabe in Suchfunktion
 
Hallo

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!

Gruß,
Matze

WebmasterTom 27.06.2006 01:06:14

AW: Problem mit Fehlerausgabe in Suchfunktion
 
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"))

//Daten ausgeben
{
$zeile = explode('#', trim($line));
print("<a href=");print($zeile[4]);print(">");
print($zeile[4]);
print("</a>");
print("<p class=normal>&Uuml;bung f&uuml;r ");print($zeile[2]);
print(" | ");
print("Kategorie: ");print($zeile[3]);
print(" | ");
print("Titel: ");print($zeile[0]);
print("<br><br></p>");

}else{ $error1 = "Fehler: nix gefunden.<br>";
}


}}else
{
$error2 = "Fehler: Bitte geben Sie mindestens 3 Zeichen ein.<br>";
}
}



?>

MatMel 27.06.2006 14:32:00

AW: Problem mit Fehlerausgabe in Suchfunktion
 
Hallo

Probiers mal so:
PHP-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"))

         //Daten ausgeben
         {
            $zeile = explode('#', trim($line));
            print("<a href=");print($zeile[4]);print(">");
            print($zeile[4]);
            print("</a>");
            print("<p class=normal>&Uuml;bung f&uuml;r ");print($zeile[2]);
            print(" | ");
            print("Kategorie: ");print($zeile[3]);
            print(" | ");
            print("Titel: ");print($zeile[0]);
            print("<br><br></p>");

         }
         else
         { 
            $error1 = "Fehler: nix gefunden.<br>";
         }
         
      }
   }
   
}
else
{
   $error2 = "Fehler: Bitte geben Sie mindestens 3 Zeichen ein.<br>";
}




?>

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!

Gruß,
Matze

WebmasterTom 29.06.2006 00:35:51

AW: Problem mit Fehlerausgabe in Suchfunktion
 
Hallo Matze,

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.

Andes 29.06.2006 12:59:34

AW: Problem mit Fehlerausgabe in Suchfunktion
 
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.

MatMel 29.06.2006 18:48:06

AW: Problem mit Fehlerausgabe in Suchfunktion
 
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

WebmasterTom 29.06.2006 21:04:04

AW: Problem mit Fehlerausgabe in Suchfunktion
 
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?

Andes 29.06.2006 21:28:14

AW: Problem mit Fehlerausgabe in Suchfunktion
 
So meinte er das.
PHP-Code:

$error1 1;
foreach (
$lines as $line

    if (
strpos($line$_POST["suche"]) !== FALSE && strpos($line,"Deutsch")) 

         
//Daten ausgeben 
         

          
$error1 0
    
$zeile explode('#'trim($line)); 
            print(
"<a href=");print($zeile[4]);print(">"); 
            print(
$zeile[4]); 
            print(
"</a>"); 
            print(
"<p class=normal>&Uuml;bung f&uuml;r ");print($zeile[2]); 
            print(
" | "); 
            print(
"Kategorie: ");print($zeile[3]); 
            print(
" | "); 
            print(
"Titel: ");print($zeile[0]); 
            print(
"<br><br></p>"); 

         } 
 } 
if(
$error1 == 1) echo "Fehlermeldung"//Deine Fehlermeldung hier einsetzen 


Serp 29.06.2006 21:29:54

AW: Problem mit Fehlerausgabe in Suchfunktion
 
Mein Vorschlag, das schnell zu lösen:

Vor der Schleife: $error = true;

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...


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:14:36 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.