löschen von 8 Zeilen aus Textdatei mit for-Schleife

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • löschen von 8 Zeilen aus Textdatei mit for-Schleife

    Hey!

    Ich habe ein Datenbank (textdatei) in der mehrere Einträge stehen. Jeder Eintrag bestrht aus 8 zeilen! nun soll in meinem Script der komplette zweite Eintrag gelöscht werden. (Logischerweise ist der erste Eintrag zeile 1 bis 8, der zweite Eintrag zeile 9 bis 16 usw...). Das ganze soll nachher durch ein Formular ($min und $max sowie $datei) gesteuert werden. Nur warum kann ich die Funktion "function delete_line" nicht mit einer for-schleife 8 mal die zeilen löschen lassen? Es wird zwar die erste von den 8 gelöscht, dann kommt eine Fehlermeldung:

    Warning: Missing argument 3 for delete_line() in \www\forum\del_eintrag.php on line 6

    Fatal error: Cannot redeclare delete_line() (previously declared in \www\forum\del_eintrag.php:6) in \www\forum\del_eintrag.php on line 6

    Was also aus der Fehlermeldung klar wird, findet die funktion die Variable $i nach dem ersten Durchgang nicht! Wie könnte man diese Problem lösen? Geht das was ich vorhabe mit einer for schleife überhaupt?

    Bitte um hilfe!
    Danke im Voraus!

    PHP-Code:
    $datei "datei.txt";
    $min "9";
    $max "16";
    for(
    $i=$min$i <= $max$i++) {
    // Eintrag löschen
       
    function delete_line($file$line$change_in) {
          
    $entries file($file);
          if(empty(
    $change_in)) {
             unset(
    $entries[$line-1]);
          } else {
             
    $entries[$line-1] = $change_in;
          }
          
    $newentries implode(""$entries);
          
    $datei_forum fopen($file"w");
          
    fputs($datei_forum$newentries);
          
    fclose($datei_forum);
       }
       
    delete_line("$datei"$i);
    }
       echo 
    "gelöscht..."
    MFG Israel's Son

  • #2
    du solltest die funktion mal aus der schleife nehmen
    Kissolino.com

    Kommentar


    • #3
      du solltest die funktion mal aus der schleife nehmen
      aber wenn ich die funktion aus der schleiße nehme, bring das ganz ja nichts mehr! Die schleiße soll ja bewirken, das die Funktion zeile $min bis zeile $max nacheinander löscht... wenn ich die funktion aus der schleife nehme wird auch nur der erste datensatz (1. zeile) gelöscht, und dann folgt wieder die fehlermeldung das die Variable $i nicht erkannt wurde...

      Hab grade mal ausprobiert in der Funktion
      PHP-Code:
      Global $i
      einzusetzen, bringt auch nix...

      Kommentar


      • #4
        Original geschrieben von israelsson
        aber wenn ich die funktion aus der schleiße nehme, bring das ganz ja nichts mehr! Die schleiße soll ja bewirken, das die Funktion zeile $min bis zeile $max nacheinander löscht...
        mach dir bitte mal den unterschied zwischen der deklaration und dem aufruf einer funktion klar.


        und lies dir bitte http://www.php.net/manual/de/functions.php gründlich durch, bevor du eine weitere frage dieser qualität stellst.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          zunächst DARF eine funktion in einem script nur 1x vorhanden sein, dann kannst sollte die funktion einen rückgabe wert haben. abgesehen davon brauchst du keine funktion dafür. wenn die daten als array vorliegen, reicht "unset()" auf den jeweiligen array-schlüssel.
          Kissolino.com

          Kommentar


          • #6
            frage dieser qualität
            Oh man, wieso kann man denn hier nicht einfach mal helfen ohne zu beleidigen und runterzumachen?

            Ich bin halt noch nicht lange bei php! Kann ich was dafür das ich manchen noch nicht weiß?
            So schlimm kann das für dich doch nicht sein oder?

            Der Tipp mit dem funktion aus der schleife nehmen war doch garnicht so schlecht!
            Jetzt gehts nämlich! hab den Fehler gefunden!
            In der funktion war noch ein fehler, und außerdem hatte ich die for schleiße an der falschen stelle und sowieso total bescheuert! Die darf nicht von $min zu $max löschen, sondenr nur von $max zu $min, sonst würde ja immer eine zeile ausgelassen werden und sich das dann multiplizieren... andersrum fängt die funktion hinten an und endet da wo sie aufhören soll!

            hier nochmal mein script! dann könnt ihr euch ja drüber aufregen wie komopliziert und dumm ich das geschrieben habe! Hauptsache es funktioniert und erfüllt den zweck den ich brauche!

            Möcht mich bedanke für eure Hilfe! Die Tipps waren super!

            MFG Israel's Son

            PHP-Code:
            $datei "66310.txt";
            $min "9";
            $max "16";
            // Eintrag löschen
               
            function delete_line($file$line$change_in) {
                  Global 
            $i;
                  
            $entries file($file);
                  if(empty(
            $change_in)) {
                     unset(
            $entries[$line-1]);
                  } else {
                     
            $entries[$line-1] = $change_in;
                  }
                  
            $newentries implode(""$entries);
                  
            $datei_forum fopen($file"w");
                  
            fputs($datei_forum$newentries);
                  
            fclose($datei_forum);
               }
            for(
            $i=$max$i >= $min$i--) {
               
            delete_line("$datei"$i"");
            }
               echo 
            "Eintrag gelöscht..."

            Kommentar


            • #7
              Original geschrieben von israelsson
              Ich bin halt noch nicht lange bei php! Kann ich was dafür das ich manchen noch nicht weiß?
              ja - beschäftige dich zuerst mit den grundlagen, bevor du einfach so drauf los scriptest.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar

              Lädt...
              X