Ankündigung

Einklappen
Keine Ankündigung bisher.

Textdateizeile mit Checkbox verknüpfen um diese zu löschen

Einklappen

Neue Werbung 2019

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

  • Textdateizeile mit Checkbox verknüpfen um diese zu löschen

    Hallo,
    Ich habe eine Formular zur Eingabe von Büchern erstellt, der Eintrag wird in eine Textdatei geschrieben und zusätzlich in eine Tabelle "Deine Buchliste" auf der selben Seite angezeigt.
    Die "Buchliste" wurde mit einer Checkbox erweitert, um gezielt Einträge zu löschen. Nun würde ich gerne Tabellenzeile und dazugehörige Zeile der Textdatei löschen.
    Wie kann ich der Checkbox beim abschicken des "Ausgewählte löschen"-Button die dazugehörige Zeile mitgeben?
    Oder anders gesagt, wie kann ich das Array was aus der Textdatei eingelesen wurde um die Tabelle auszugeben an die Checkbox binden?

    Zudem soll das ganze ohne MySQL oder JS laufen.

    Hoffe auf Ideen oder intensivere Aufklärung über Checkboxen, die nicht in Verbindung mit der Formulareingabe stehen.

    Kann auch gerne den dazugehörigen Code einstellen, jedoch wäre der durch die vielen Versuche es hinzubekommen nicht Übersichtlicht. Deshalb würde ich das dann auf Anfrage machen.

    MfG
    RaggaMashine

  • #2
    Zitat von RaggaMashine Beitrag anzeigen
    Zudem soll das ganze ohne MySQL oder JS laufen.
    640 kB sollten eigentlich genug für jeden sein.

    @Topic: Gib halt als Value der Checkbox die Zeilennummer mit. Wenn gleichzeitig jemand anders was an der Datei macht kann es unerwartete Ergebnisse geben.
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      PHP-Code:
      <input type="checkbox" name="buch[<?= $identifizierer ?>]" >
      Damit wird übergibst du beim Absenden ein Array und kannst auf Serverseite dann über den Array-Index an deinen Identifizierer kommen.

      Hoffe auf Ideen oder intensivere Aufklärung über Checkboxen, die nicht in Verbindung mit der Formulareingabe stehen.
      Versteh ich nicht ganz.


      Kann auch gerne den dazugehörigen Code einstellen, jedoch wäre der durch die vielen Versuche es hinzubekommen nicht Übersichtlicht
      Code bereinigen und posten. Die Versuche geordnet und mitposten.
      [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
      [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

      Kommentar


      • #4
        Hoffe auf Ideen oder intensivere Aufklärung über Checkboxen, die nicht in Verbindung mit der Formulareingabe stehen.
        1. ??
        2. Wir hier nicht der Erklärbar, alles was du brauchst findest du in Dokus, SelfHTML, etc.. Checkboxen ohne Formular gibt es nicht.

        http://php-de.github.io/jumpto/auswahlfelder/

        Gitb mehr möglichkeien -zB Lies deine Datein zweilenweise mit file() aus dann hast du die Indexnummer, kannst ja bei der Auflistung dann Checkboxen setzten, oder einzeln via GET-Link den denn entprechend zugreifen etc..
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          PHP-Code:
          <?php
          echo <<<EOT

          <?xml version="1.0" encoding="ISO-8859-1" ?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
           <head>
            <title>SpaceJam</title>
             <meta name="author" content="Jessica Kirsch" />
             <meta name="keywords" content="kochen, Aliens, Schleim,Glibber, Brocken, unbekannt, Rezepte" />
             <meta name="description" content="Tolle Alienen-Kochrezepte, ein Spaß für jeden, der schleimige, glibberige, unbekannte Rezepte zusammen schmieren möchte" />
             <meta name="date" content="2014-09-19T08:49:37+01:00" />
             <meta name="robots" content="[index]" />
             <link rel="stylesheet" type="text/css" href="css/style.css" />
             <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
           </head>
              <body>
                  <div id="container">
                   <div id="logo"><a href="./">SpaceJam</a></div>

                   <ul id="menu">
                    <li><a href="index.html">SpaceJam</a></li>
                    <li><a href="kb.html">Kochbuch</a></li>
                    <li><a href="wvdn.html">Wie viel denn nun?</a></li>
                    <li><a href="fun.html">Fun</a></li>
                    <li><a href="Buchlist.html">Buchliste</a></li>
                    <li><a href="xml.html">XML</a></li>
                    <li><a href="it.html">XAMPP</a></li>
                    <li><a href="Buchliste.php">PHP</a></li>
                    <li><a href="reg.php">Reguläre Ausdrücke</a></li>
                    <li>Buch</li>
                   </ul>

                      <div id="main">
                       <h1>Bücher speichern</h1>
                       <br />


                          <form action="hallo.php" method="post" >
                              <fieldset>
                                   <legend>Bücher eingeben</legend>
                                   <table>
                                      <tr>
                                        <td>Title: <br /><input type="text" name="Titel" size="40" value="Das Leben im All"/></td>
                                      </tr>
                                      <tr>
                                        <td>Autor: <br /><input type="text" name="Autor" size="40" value="Hannibal"/></td>
                                      </tr>
                                      <tr>
                                        <td>ISBN: <br /><input type="text" name="ISBN" size="17" value="567-8-90123-444-5"/></td>
                                      </tr>
                                  </table>
                                  <br />
                                  <input type="submit" name="speichern" value="speichern" />
                              </fieldset>
                          </form>
                          <br />
          EOT;

                            
          // Formulareingabe speichern
                             
          if(!empty($_POST)) {

                             
          // Variablen einlesen
                             
          $titel $_POST["Titel"];
                             
          $autor $_POST["Autor"];
                             
          $isbn  $_POST["ISBN"];

                                             
          // Variablen auf false setzen
                                             
          $titelFehlt false;
                                             
          $autorFehlt false;
                                             
          $isbnFehlt  false;

                                             
          // Überprüfen ob $titel leer ist
                                             
          if(empty($titel)){
                                                             echo 
          "Du hast keinen Titel eigetragen!";
                                                             
          $titelFehlt true;
                                             }
                                             
          // Überprüfen ob $autor leer ist
                                             
          if(empty($autor)){
                                                             echo 
          "Du hast keinen Autor eigetragen!";
                                                             
          $autorFehlt true;
                                             }
                                             
          // Überprüfen ob $isnb leer ist
                                             
          if(empty($isbn)){
                                                             echo 
          "Du hast keine ISBN Nummer eigetragen!";
                                                             
          $isbnFehlt true;
                                             }
                                             
          //prüfen ob Felder nicht leer sind
                                             
          if(!$titelFehlt && !$autorFehlt && !$isbnFehlt ){

                                                    
          /** @implode() Verbindet Array-Elemente zu einem String */
                                                    //$check = implode ('',file("daten.txt"));

                                                    /** @date() Aktuelles Datum ermitteln */
                                                    
          $datum date("d.m.Y",time());

                                                    
          // Textstring zusammensetzen
                                                    
          $text "$titel$autor$isbn$datum;\n";

                                                    
          //um isbn in array zu legen
                                                    
          $isbn_vorhanden = array();

                                                    
          // Name der Datei
                                                    
          $dateiname "daten.txt";
                                                    
          /** @fopen() Datei zum Text anhängen öffnen */
                                                    
          $handler fopen($dateiname"a+");

                                                          
          /** @fwrite() Dateiinhalt in die Datei schreiben */
                                                           // fwrite($handler, $text);
                                                          /** @fclose() Datei schließen */
                                                           // fclose($handler);

                                                           // echo "Deine Daten wurden erfolgreich unter <a href=\"$dateiname\">" . "$dateiname</a> gespeichert!";


                                                  /* auslesen und in Array einlesen*/
                                                  /** @feof Prüft, ob ein Dateizeiger am Ende der Datei steht */
                                                  
          while(!feof($handler)){

                                                       
          /** @fgets() Liest eine Zeile von der Position des Dateizeigers */
                                                       
          $zeile fgets($handler5000);

                                                       
          /** @explode() Teilt einen String anhand einer Zeichenkette */
                                                       // wegen "|" [] Alle Daten aus String einer Zeile in isbn_vorhanden
                                                       // $isbnDaten = explode("|", $zeile);
                                                       // wegen ";" [] Nur eins aus String einer Zeile in isbn_vorhanden, isbn_Daten auf [2] setzen [0]= Autor [2] ISBN [3] Datum
                                                       // wenn in der Zeile nochmal ein Datensatz steht wird $isbnDaten gefüllt
                                                          
          $isbnDaten explode(";"$zeile);

                                                       
          /** @array_push() Fügt ein oder mehr Elemente an das Ende eines Arrays */
                                                       // Undefined offset: 2  gibt eine Warung aus, wenn das erste Argument kein Array ist.
                                                       
          array_push ($isbn_vorhanden$isbnDaten[2]);
                                                       
          // Alle Daten
                                                       // array_push ($isbn_vorhanden, $isbnDaten);

                                                    
          }
                                                     
          /** @fclose() Datei schließen */
                                                     
          fclose($handler);

                                                             
          /** @in_array() nachschauen ob ISBN aus Formular in dem Array $ isbn_vorhanden gespeichert ist, muss isbn alleine stehen, damit es geprüft wird? */
                                                             
          if (in_array($isbn$isbn_vorhanden)){
                                                          
          // if (bool in_array($isbn, $isbn_vorhanden[, bool strict=false])){
                                                          // if (in_array($isbn, $isbn_vorhanden, true)){
                                                                      
          echo "Du hast die ISBN Nummer schon eingetragen!";
                                                             }
                                                                    
          /* wenn nicht doppelt dann*/
                                                                    
          else{
                                                                            
          /** @fopen() Datei zum Text anhängen öffnen */
                                                                            
          $handler fopen($dateiname"a+");

                                                                            
          /** @fwrite() Dateiinhalt in die Datei schreiben */
                                                                            
          fwrite($handler$text);

                                                                            
          /** @fclose() Datei schließen */
                                                                            
          fclose($handler);

                                                                            echo 
          "Deine Daten wurden erfolgreich unter <a href=\"$dateiname\">" "$dateiname</a> gespeichert!";
                                                                    }
                                           }
                            }


          echo <<<EOT


                          <form action="hallo.php" method="post">
                              <fieldset>
                                   <legend>Deine Buchliste</legend>
                                       <table border="1">
                                            <tr style="background-color: #B9B9B9;">
                                               <th>Titel</th>
                                               <th>Autor</th>
                                               <th>ISBN</th>
                                               <th>Datum des Eintrags</th>
                                               <th>&nbsp;</th>
                                             </tr>
                                             <br />
                                                  <input type="submit" name="alleLoeschen" value="Alles löschen" />
                                                  <input type="submit" name="loeschen" id="" value="Ausgewählte löschen" />
          EOT;
                                  
          //Ausgabe
                                   // Name der Datei
                                   
          $datei "daten.txt";

                                   
          /** @file() Datei in ein Array einlesen */
                                   
          $array file($datei);

                                   
          /* Um Duplikate zu vermeiden,aber in Datei stehen diese weiterhin
                                   /** @array_unique() Entfernt doppelte Werte aus einem Array
                                   $einzelne = array_unique ($array);
                                   foreach ($einzelne as $element) {   */

                                   
          foreach ($array as $element) {
                                    
          // Die Variablen ($titel, $autor, $isbn, $datum) aus der Variablen ($element) holen
                                    /** @list() Weist Variablen zu, als wären sie ein Array */
                                    
          list($titel$autor$isbn$datum) = explode(";"$element);
                                    echo 
          "<tr>";
                                    echo 
          "<td>$titel</td>";
                                    echo 
          "<td>$autor</td>";
                                    echo 
          "<td>$isbn</td>";
                                    echo 
          "<td>$datum</td>";

                                     
          /* Werte sollen mit übergeben werden */
                                     /* irgendwie mit array verbinden, löscht immer nur Daten aus Eingabe */
                                    
          echo "<td><input type=\"checkbox\" name=\"klick[]\" />

                                              <input type=\"hidden\"   name=\"titel\" />
                                              <input type=\"hidden\"   name=\"autor\" />
                                              <input type=\"hidden\"   name=\"isbn\"  /></td>"
          ;
                                    echo 
          "</tr>";
                                    }
                                        
          //Für Checkbox
                                       //$klick = $_POST['klick'];
                                    /* wenn button ausgewählte löschen und checkbox gefüllt, dann */
                                   
          if(isset($_POST['loeschen']) && isset($_POST['klick']) && !empty($_POST['klick'])) {


                                      function 
          loeschen() {

                                        
          $lines file($array);
                                        
          $file fopen($array"w");
                                        for (
          $i 0$i sizeof($lines); $i++) {
                                          
          $dieZeile $lines[$i];
                                          list ( 
          $titel$autor$isbn$datum) = explode(";"$dieZeile);
                                          if (!isset(
          $_POST[$klick])) {
                                            
          fputs($file$lines[$i]);
                                          }
                                       }
                                      
          fclose($array);
                                    }

                                    function 
          alleLoeschen() {
                                    
          $dateiLoeschen fopen($array"w+");
                                    
          $dateiLoeschen fopen($element"w+");
                                      
          fputs($dateiLoeschen,"");
                                      
          fclose($dateiLoeschen);
                                    }
                                  }

              echo 
          "<br />";
              echo 
          "variable isbn<br />";
               
          var_dump($isbn);

              echo 
          "<br />"; echo "<br />";
              echo 
          "variable isbn_vorhanden<br />";
               
          var_dump($isbn_vorhanden);

              echo 
          "<br />"; echo "<br />";
          /*    echo "variable check<br />";
               var_dump($check);
              echo "<br />"; echo "<br />";  */

              
          echo "variable text<br />";
               
          var_dump($text);

              echo 
          "<br />"; echo "<br />";
              echo 
          "variable isbnDaten <br />";
               
          var_dump($isbnDaten);

               echo 
          "<br />"; echo "<br />";
              echo 
          "variable array <br />";
               
          var_dump($array);


          echo <<<EOT
                           </table>
                         </fieldset>
                       </form>
                       <br />
                      </div>
                  </div>
              </body>
          </html>
          EOT;
          ?>

          Kommentar


          • #6
            Na super ist ja nichts mehr eingerückt.

            Kommentar


            • #7
              Na super ist ja nichts mehr eingerückt.
              Du musst auch die PHP Tags hier im WYSIWYG Editor nutzen. Bsp.:

              [ PHP ]

              dein PHP Code

              [ / PHP]

              ...das ohne die Leerzeichen
              while (!asleep()) sheep++;

              Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

              Kommentar


              • #8
                Zitat von RaggaMashine Beitrag anzeigen
                Na super ist ja nichts mehr eingerückt.
                Jetz mit einrückungen

                Kommentar


                • #9
                  Zitat von hausl Beitrag anzeigen
                  2. Wir hier nicht der Erklärbar, alles was du brauchst findest du in Dokus, SelfHTML, etc.. Checkboxen ohne Formular gibt es nicht.
                  oh man muss hier echt Aufpassen was man schreibt, ihr sollt auch nicht den Erklärbären spielen. Lese seit zwei Wochen in Dokus, HTML ect.
                  Dachte man könnte sich hier über solche Sachen unterhalten und somit anders mit dem Thema herangehen. Zum Beispiel um Wissenlücken zu schließen.
                  Aber ich merk schon, das sowas wohl nicht erwünscht ist.
                  Zitat von hausl Beitrag anzeigen
                  Gitb mehr möglichkeien -zB Lies deine Datein zweilenweise mit file() aus dann hast du die Indexnummer, kannst ja bei der Auflistung dann Checkboxen setzten, oder einzeln via GET-Link den denn entprechend zugreifen etc..
                  Genau sowas habe ich vor, komme aber dabei nicht weiter.

                  Kommentar


                  • #10
                    Na ist doch nicht so schwer zu googlen.

                    PHP-Code:
                    $zeilen file ('lesen.txt');
                     
                    foreach (
                    $zeilen as $zeile) {
                        echo 
                    $zeile;

                    Damit gibst du zeilenweise deine Textdatei aus. Kannst aber auch die jeweilige Zeile mit echo $zeilen[indexnummer]; ansprechen (wie bereits beschrieben). Wie du die Indenummern mit deinen Checkboxen verbindest, hat VPH beschrieben. Das ganze dann noch in ne form packen. Dadurch kannst du beim abfragen, die korrekte Indexnumemr abfragen und z.B. mit unset() löschen oder ein array erstellen, ohne die gewünschte Zeile und das dann ins Textfile schreiben.

                    mfg wolf29
                    while (!asleep()) sheep++;

                    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                    Kommentar


                    • #11
                      Hier mit Textdateien zu arbeiten ist schlichtweg sinnlos. Für nahezu jede Operation muss das Ding komplett durchlaufen werden (typische Implementierung) und einen echten Index hast Du auch nicht. Transaktionssicherheit auch nicht. Was heißt, dass früher oder später Deine Datenliste kaputt gehen wird. Alles was mehr als Logfunktion hat (also ein atomares Append ausführt) sollte IMHO nicht mehr benutzt werden.

                      Hoffe auf Ideen oder intensivere Aufklärung über Checkboxen, die nicht in Verbindung mit der Formulareingabe stehen.
                      Dann hoff mal schön. Was Du hier brauchst, steht aber in Verbindung mit Formularen.
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Zitat von wolf29 Beitrag anzeigen
                        Na ist doch nicht so schwer zu googlen.

                        PHP-Code:
                        $zeilen file ('lesen.txt');
                         
                        foreach (
                        $zeilen as $zeile) {
                            echo 
                        $zeile;

                        Damit gibst du zeilenweise deine Textdatei aus. Kannst aber auch die jeweilige Zeile mit echo $zeilen[indexnummer]; ansprechen
                        mfg wolf29
                        Der Teil war auch nicht das Problem.
                        @VPH und wolf29
                        Danke für die Tipps, werd es ausprobieren. Aber erst wenn kein deathbrain mehr habe, sitz schon zu lange und werd langsam Codeblind. Pause und dann weiter im Text

                        Kommentar


                        • #13
                          Zitat von nikosch Beitrag anzeigen
                          Hier mit Textdateien zu arbeiten ist schlichtweg sinnlos.
                          Und was für ein Format schlägst du vor?
                          Zitat von nikosch Beitrag anzeigen
                          Für nahezu jede Operation muss das Ding komplett durchlaufen werden
                          ok
                          Zitat von nikosch Beitrag anzeigen
                          (typische Implementierung)
                          ????
                          Zitat von nikosch Beitrag anzeigen
                          und einen echten Index hast Du auch nicht.
                          Wozu?

                          Zitat von nikosch Beitrag anzeigen
                          Transaktionssicherheit auch nicht.
                          Wurde nicht gefordert
                          Zitat von nikosch Beitrag anzeigen
                          Was heißt, dass früher oder später Deine Datenliste kaputt gehen wird.
                          Habe ich keine Ahnung von, aber werde mich darüber mal informieren.

                          Zitat von nikosch Beitrag anzeigen
                          Alles was mehr als Logfunktion hat (also ein atomares Append ausführt) sollte IMHO nicht mehr benutzt werden.
                          Was soll das denn Bedeuten? und was ist IMHO?
                          Zitat von nikosch Beitrag anzeigen
                          Dann hoff mal schön. Was Du hier brauchst, steht aber in Verbindung mit Formularen.
                          Nein mach ich nicht mehr habe die Hoffnung verloren. Wurde ja schon gesagt das es sowas nicht gibt. Schön das du soviel Plan von der Sache hast - ich nicht- Versuche nur eine Aufgabe zu lösen die ich bekommen habe. Würdest du es besser erläutern, könnte ich dich als Anfänger vielleicht verstehen, aber da kommen wir mal wieder zum Erklärbär.

                          Kommentar


                          • #14
                            Und was für ein Format schlägst du vor?
                            Mit einer Datenbank zu arbeiten. Bspw. MySQL.

                            Wozu?
                            Um konkret anzusprechen übern Code.

                            Wurde nicht gefordert
                            Macht aber Sinn.

                            Habe ich keine Ahnung von, aber werde mich darüber mal informieren.
                            In dem Zuge kommt wieder eine Datenbank ins Spiel. Damit zu arbeiten ist deutlich performanter und einfacher!

                            Was soll das denn Bedeuten? und was ist IMHO?
                            Das Textdateien nicht die optimale Wahl für dein Vorhaben und auch nicht dafür eigentlich gedacht sind. imho = http://de.wiktionary.org/wiki/IMHO

                            mfg Wolf29
                            while (!asleep()) sheep++;

                            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                            Kommentar


                            • #15
                              Und was für ein Format schlägst du vor?
                              Oft ist auch SqLite schon mit PHP out of the box vorhanden. http://php.net/manual/de/book.sqlite.php
                              The string "()()" is not palindrom but the String "())(" is.

                              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                              PHP.de Wissenssammlung | Kein Support per PN

                              Kommentar

                              Lädt...
                              X