Beliebige Zeilen aus Textdatei löschen

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

  • #31
    Hallo,

    kannst du nochmal kurz rekapitulieren, wie dein aktueller Code aussieht, was jetzt passiert und was eigentlich passieren soll? Ich hab zwar versucht, das Thema nochmal im Ganzen zu lesen, aber am Ende hatte ich den Anfang schon wieder teilweise vergessen.

    Generelle Überlegung: Um zu verhindern, dass zwei Benutzer gleichzeitig löschen und durch das Verrutschen der nachfolgenden Zeilen etwas falsches gelöscht wird, könnte man – statt die ganze Zeile zu löschen – nur die Zeile leeren (also den Umbruch erhalten). Dadurch entstehen zwar evtl. größere Leerräume, aber die Zählung bleibt gleich und die beschriebenen Löschfehler können nicht mehr auftreten.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #32
      Hey grüß Dich!!

      Funzt auch ohne Schleife:

      PHP-Code:
      <?php 
      $id 
      $_GET["id"]; 
      $id--; 
      $datei "../textdata/thema.txt";
      $array file("../textdata/thema.txt"); 
      print_r($array[$id]); 
      // file_put_contents($datei,$array); 
      // header("location: ../index.php?act=del");
      ?>
      Ganz genau, daran habe ich auch gedacht, aber wo soll der Umbruch hin..
      Hier der Code mit überlegtem Umbruch und ohne Schleife:

      PHP-Code:
      <?php 
      $id 
      $_GET["id"]; 
      $id--; 
      $datei "../textdata/thema.txt";
      $array file("../textdata/thema.txt"); 
      for(
      $x=0$x<sizeof($array[0]); $x++); {
      unset(
      $array[$id]); 
      }
      // Hier den Umbruch rein? ,$array."\n");
      file_put_contents($datei,$array); 
      header("location: ../index.php?act=del");
      ?>
      Das funzt net Ich habs mit array_splice() hinbekommen, aber das ist auch unfug gewesen damit, wegen den positiven und negativen Bereich.. also offset und length. Diese Idee mit dem Umbruch find ich gut, aber irgendeine Lösung finden ohne Umbruch wird wohl nicht funktionieren oder? Hmm. einen Weg finden, feste Werte in der Textdatei neu anzulegen, damit sich die Reihenfolge ändert, verständlich?

      EDIT: Noch mal zurück zum Umbruch:

      PHP-Code:
      unset($array[$id]."\n"); 
      funzt auch net
      Zuletzt geändert von dolbyfreak; 21.11.2010, 20:34.

      Kommentar


      • #33
        Wenn du die Datei in ein Array liest, stellt
        PHP-Code:
        unset($array[$id]); 
        das Löschen der ganzen Zeile (incl. Umbruch) dar. Ein Leeren der Zeile (unter Beibehalten des Umbruchs) entspricht dagegen
        PHP-Code:
        $array[$id] = ""
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #34
          So oder so.. funzt nicht richtig

          PHP-Code:
          $array[$id] = "\n"
          PHP-Code:
          $array[$id] = ""
          Der Inhalt rutscht jetzt um eine Zeile nach oben, also auch keine Lösung. Auch 2 von \n\n löst es nicht, damit ich eine freie Zeile bekomme.

          Kommentar


          • #35
            Poste mal bitte die Ausgabe von print_r.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #36
              Ich hoffe du meinst jetzt das hier:

              HTML-Code:
              http://localhost/meinordner/phpdata/link_entf.php?id=2
              PHP-Code:
              <?php 
              $id 
              $_GET["id"]; 
              $id--; 
              $datei "../textdata/thema.txt";
              $array file("../textdata/thema.txt"); 
              unset(
              $array[$id]); 
              $array[$id] = "";

              print 
              "<pre>";
              print_r ($array);
              // file_put_contents($datei,$array); 
              // header("location: ../index.php?act=del");
              ?>
              HTML-Code:
              Array
              (
                  [0] => 1|Linkname 1|URL 1
              
                  [2] => 3|Linkname 3|URL 3
              
                  [3] => 4|Linkname 4|URL 4
              
                  [4] => 5|Linkname 5|URL 5
                  [1] => 
              )

              Kommentar


              • #37
                Du hast doch immer noch unset drin. So wird das nix. Nimm mal das hier:

                PHP-Code:
                <?php 
                $id 
                $_GET["id"]; 
                $datei "../textdata/thema.txt";
                $array file($dateiFILE_IGNORE_NEW_LINES); 
                $array[$id 1] = "";
                file_put_contents($dateiimplode("\n"$array)); 
                ?>
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #38
                  Jaaaaaaaaaaa....genau ich Hirni!! Natürlich unset()... oh man ey

                  PHP-Code:
                  <?php 
                  $id 
                  $_GET["id"]; 
                  $id--; 
                  $datei "../textdata/thema.txt";
                  $array file("../textdata/thema.txt"); 
                  $array[$id] = "\n";
                  file_put_contents($datei,$array); 
                  // header("location: ../index.php?act=del");
                  ?>
                  Ich prob jetzt mal deine Variante...
                  EDIT: Jeppa! Führt zum selben Ergebnis!

                  So etwas übersieht man aber auch leicht:

                  Flags - FILE_IGNORE_NEW_LINES
                  -> Zeilenende nicht am Ende jedes Array-Elements einfügen

                  Schöne 2 Varianten, welche nehm ich nur? Ich nehm die von dir.. die sieht schöner aus
                  Zuletzt geändert von dolbyfreak; 21.11.2010, 21:31.

                  Kommentar


                  • #39
                    Einen Nachteil hat es allerdings.. dort wo die Aktion zu sehen ist bleibt jetzt eine Lücke nach dem Löschen
                    EDIT: Und bei hinzufügen eines neuen Links gibt es Probleme, sobald der Platz schon besetzt ist siehe den Skript "Links hinzufügen":

                    PHP-Code:
                    <?php

                    $datei 
                    "../textdata/thema.txt";
                    $linkname2 $_POST["linkname2"];
                    $url2$_POST["url2"];      
                    $id sizeof(file($datei));
                    $id++;

                    if (
                    $linkname2 and $url2)
                    {
                    $fp fopen($datei,"a");
                    $add '<a href="'.$url2.'" target="_blank">'.$linkname2.'</a>'.'<a href="phpdata/link_entf.php?id='.$id.'" style="color:darkred" title="löschen">[x]</a>'."\r\n";
                    fwrite($fp,$add);
                    header("location: ../index.php?send=link");
                    ?>
                    Man sieht ich habe den kompleten Link samt CSS mit eingefügt. Grund: Ich habe noch keine Alternative gefunden wie es schöner/übersichtlicher aussieht. Ich überlege ob ich mit einer Schleife die Datei durchlaufe und sie von neuen eintragen lasse, wäre das ne gute Lösung?
                    Zuletzt geändert von dolbyfreak; 21.11.2010, 21:41.

                    Kommentar


                    • #40
                      Na das hab ich dir doch erklärt: Du hast zwar Lücken, dafür aber keine konkurrierenden Löschvorgänge, die alles kaputt machen. Du kannst auch wieder mit unset arbeiten, statt es auf "" zu setzen, aber dann hast du wieder dasselbe Löschproblem, wenn auch keine Lücken.

                      Wenn dir beides nicht passt, hör auf mit Dateien zu arbeiten und benutz eine DB
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #41
                        Ja ist korrekt.. aber bei der DB gibt es ein Problem. Ich kann bei meinem Hoster immer nur eine einzige pro Webseite anlegen oder eine dazukaufen. Ich kann auch alles in einer DB machen, nur dann wirds unübersichtlich für mich finde ich.

                        Kommentar


                        • #42
                          Wenn dir beides nicht passt, hör auf mit Dateien zu arbeiten und benutz eine DB
                          Ist ja nicht so, als ob wir nicht schon eine ID-basierte Version (ohne DBMS) vorgeschlagen hätten. Die wurde ja auch für einen Bruchteil der Zeit angenommen und dann doch (ohne es zu merken) wieder verworfen...

                          Man sieht ich habe den kompleten Link samt CSS mit eingefügt. Grund: Ich habe noch keine Alternative gefunden wie es schöner/übersichtlicher aussieht.
                          Auch das Thema hatten wir längst schon angesprochen...

                          Ich kann auch alles in einer DB machen, nur dann wirds unübersichtlich für mich finde ich.
                          Dann benutze Präfixe in den Tabellennamen...

                          Kommentar


                          • #43
                            Zitat von dolbyfreak Beitrag anzeigen
                            Ja ist korrekt.. aber bei der DB gibt es ein Problem. Ich kann bei meinem Hoster immer nur eine einzige pro Webseite anlegen oder eine dazukaufen.
                            Aber sowas wie SQLite wirst du doch wohl nutzen können?

                            Das handelt sich immer noch um Welten komfortabler, als selbst mit Flatfiles rum zu hantieren.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #44
                              Ja ich kann phpmyadmin vom Anbieter nutzen, aber ich sollte doch erstmal den Umgang mit Dateien lernen, anstatt schon alles in einer DB zu hinterlegen. Wenn es um Sicherheit und Komfort geht sind sie sicherlich von Vorteil und um Welten besser, aber um einfach nur mal was abzuspeichern oder zu archivieren, da reichen doch Textdateien völlig aus.

                              Kommentar


                              • #45
                                SQLite != phpMyAdmin

                                Kommentar

                                Lädt...
                                X