JonnyX: Tabellenzeile per ID mit PHP löschen

hallo erstmal

Ich habe eine Tabelle, der ich über PHP Zeilen hinzufügen kann. Nun möchte ich auch die Möglichkeit haben die Zeilen wieder zu löschen. Dazu habe ich jeder zeile eine Id zugewiesen (<tr id="1">...</tr>). Allerdiings weiß ich nicht, wie ich PHP nun klarmachen soll, dass ub: Die zeile mit der ID 3 gelöscht werden soll.

Schonmal Danke für eure Hilfe...

  1. Hi,
    Deine Beschreibung ist ein wenig dürftig. Woher bekommst du die Daten? Aus einm DBMS oder aus einer .txt-Datei.

    Wenn Du doch was zufügen kannst, wo ist dann das Problem beim löschen ?

    Bitte genauere Beschreibung deines Problems

    Gruß
    Dynamite

    1. Hi,
      Deine Beschreibung ist ein wenig dürftig. Woher bekommst du die Daten? Aus einm DBMS oder aus einer .txt-Datei.

      Wenn Du doch was zufügen kannst, wo ist dann das Problem beim löschen ?

      Bitte genauere Beschreibung deines Problems

      Gruß
      Dynamite

      Also ich habe ein Eingabeformular und rufe dann dies hier auf.

      $Link = $_POST["Link"];  
      $Name = $_POST["Name"];  
      $id = fOpen(links.txt , "w+") ;  
      $text = $id + "1";  
      $handler = fOpen("links.txt" , "w+");  
      fWrite($handler , $text);  
      fclose($handler);  
      $text = "<tr id=$id><td><a href=$Link>$Name</a></td><td><form action=\"linkdel.php?id=$id\" method=\"post\"><input  type=\"submit\"  value=\"Löschen\"> </form></td></tr>"; // Dateiinhalt  
      $dateiname = "links.php"; // Name der Datei  
      $handler = fOpen($dateiname , "a+");  
      // Dateiinhalt in die Datei schreiben  
      fWrite($handler , $text);  
      fClose($handler); 
      

      Die Datei links.php habe ich per include in die Hauptseite eingebunden.

      1. Hallo,
        in dem Fall macht es wahrscheinlich Sinn die Markierung nicht durch eine ID sondern mit Kommentaren zu gestalten. Bzw. zusätzlich mit Kommentaren.

        » $text = "<tr id=$id><td><a href=$Link>$Name</a></td><td><form action=\"linkdel.php?id=$id\" method=\"post\"><input type=\"submit\" value=\"Löschen\"> </form></td></tr>"; // Dateiinhalt

        vs.
        $text = '<!-- LINK-ID '.$id.' --><tr id="linkid'.$id.'"><td><a href="'.$Link.'">'.$Name.'</a></td><td><form action="linkdel.php?id='.$id.'" method="post"><input type="submit" value="Löschen"> </form></td></tr><!-- EO-ID '.$id.' -->'; // Dateiinhalt
        (sorry ich bevorzuge halt einfache Hochkomma, damit ich nicht jedes " escapen muss :) )
        So lässt es sich sehr leicht mit ner RegEx 'rausfischen. Was bedeutet, dass du zum Löschen einer Zeile die Datei öffnest, den entsprechenden Ausdruck drüber laufen lässt durch null ersetzt und den String dann in die Datei zurück schreibst.

        Alles in allem scheint mir aber eine Datenbank für dein Vorhaben sinnvoller zu sein, wenn dir keine zur Verfügung steht verstehe ich das, wenn du's einfach nicht kannst empfehle ich dir 1-5 Tutorials zu machen, die Grundlagen sind nicht schwer und schnell zu lernen (also abfragen, speichern, ändern, löschen mit eindeutigen IDs). Erst wenn die Datenbank selbst rechnen muss wird es etwas anspruchsvoller, ist für dein Vorhaben aber nicht notwendig.

        --
        sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
  2. Lieber JonnyX,

    jeder zeile eine Id zugewiesen (<tr id="1">...</tr>).

    das ist keine gültige ID. Informiere Dich über <http://de.selfhtml.org/html/referenz/attribute.htm#id_idref_name@title=gültige ID-Namen>.

    Allerdiings weiß ich nicht, wie ich PHP nun klarmachen soll, dass ub: Die zeile mit der ID 3 gelöscht werden soll.

    Wie liegt denn diese Zeile vor? Als Teil eines Strings, der den aktuellen HTML-Code enthält? Oder als Elementobjekt eines DOM-Objekts?

    Für den ersteren Fall könnte man eine String-Funktion mit <http://de.selfhtml.org/perl/sprache/regexpr.htm#allgemeines@title=regulärem Ausdruck> als Suchmuster benutzen, für den zweiten Fall benutzt Du die API Deines DOM-Objekt-Frameworks.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  3. Hello,

    Ich habe eine Tabelle, der ich über PHP Zeilen hinzufügen kann. Nun möchte ich auch die Möglichkeit haben die Zeilen wieder zu löschen. Dazu habe ich jeder zeile eine Id zugewiesen (<tr id="1">...</tr>). Allerdiings weiß ich nicht, wie ich PHP nun klarmachen soll, dass ub: Die zeile mit der ID 3 gelöscht werden soll.

    Du benötigst dafür einen Request vom Client an den Server, auf dem das Script dann läuft. Dieser Request muss eindeutige Angaben darüber enthalten, was Du zu tun gedenkst.

    Du kannst ihn entweder über einen Link oder über das action-Attribut eines <form>-Elementes sowie die im Form enthaltenen Parameter auslösen. Außerdem würden dann später (wenn Du sicherer bist) auch noch Methoden, wie z.B. Asynchronous-JavaScript-and-XML-Rerquests zur Verfügung stehen.

    Schaue Dir also erst einmal an, was bei einem Request in Deinem Script an Informationen ankommt. Die hier benötigten Informationen findest Du i.d.R. in den Superglobalen $_GET und den $_POST-Variablen.

    Nimm in Dein Script einfach mal diese paar Zeilen mit auf

    echo "<pre>\r\n";
        echo htmlspecialchars(print_r($_GET,1));
        echo htmlspecialchars(print_r($_POST,1));
        echo "</pre>\r\n";

    und schau Dir an, was dann bei einem Link (z.B.: http://domain.tld/script.php?a=del&amp;b=2) auf das Script oder bei einem Formualar (mit action-Attribut auf das Script) dort drinsteht.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  4. Okay Danke für eure Hilfe. Ih habe es jetzt einfach mit einer Datenbank gemacht.