Newsscript Probs.

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

  • Newsscript Probs.

    Hi also ich habe seid gestern angefangen ein Newsscript zu machen.
    Dieses Newsscript bassiert auf textfiles. Nun bis jetzt hat alles sehr gut geklappt, aber ich will nicht nur News eintragen sondern auch löschen.
    Hat jemand eine Ahnung wie ich das machen könnte.
    Hier ma mein Code:
    Habe jetzt nur das Eintragen.php und Ausgabe.php hier gepostet das Formular ist ja unwichtig

    eintragen.php
    Code:
    <?
    //Variablen////////////////
    $titel = $_POST["titel"];
    $titel = htmlentities($titel);
    
    $author = $_POST["author"];
    $author = htmlentities($author);
    
    $inhalt = $_POST["inhalt"];
    $inhalt = htmlentities($inhalt);
    $inhalt = str_replace("\n", "<br>", $inhalt);
    ///////////////////////////
    
    ///////////////////////////
    if($titel == "" or $author == "" or $inhalt == "")
    {
       echo '<b>Bitte fülle alle Felder zuerst aus bevor du einen <br>
        Eintrag machst! Klicke auf <a href="formular.php">Zurück</a> um zu Eintragen<br>
        wieder zurück zu kommen</b>';
    }else{
    $datum= date("d.m.Y H:i:s");
    $datei = fopen("news.txt","a");
    $eintrag = "$datum|$titel|$author|$inhalt";
    fwrite($datei,$eintrag."\r\n");
    fclose($datei);
    
    echo '
    <b>News wurden erfolgreich eingetragen! <br>
    Klicke <a href="formular.php">hier</a> um Zurück zum Adminbereich zu kommen</b>.
    ';
    }
    ?>
    ausgabe.php
    Code:
    <?
    $datei = file("news.txt");
    krsort($datei);
    
    $anzahl = count($datei);
    
    foreach($datei as $ausgabe)
    {
       $ausgabe = stripslashes($ausgabe);
       $zerlegen = explode("|", $ausgabe);
       echo "
       <table border=\"1\" cellspacing=\"0\" cellpadding=\"3\"
        width=\"350\" bordercolordark=\"black\" bordercolorlight=\"black\" align=\"center\">
    
       <tr><td><font size=\"3\" face=\"Arial\"><b>$zerlegen[1]</b></font></td><td><font size=\"2\" face=\"Arial\"><b>von:</b> $zerlegen[2]</font></td></tr>
    
       <tr><td colspan=\"2\"><font size=\"2\" face=\"Arial\">$zerlegen[3]</font></td></tr>
       <tr><td colspan=\"2\"><font size=\"1\" face=\"Arial\"><b>geschrieben am: </b>$zerlegen[0]</font></td></tr>
       </table><br>";
    }
    if($anzahl == 0)
    {
    echo "<b>Es sind kein News Einträge vorhanden</b>";
    }
    ?>
    So nun wie gesagt ich habe kein Plan wie ich jetzt zb Die Einträge löschen könnte. Es wäre nett wenn jemand ein Beispiel zeigen könnte oder erkleren könnte


    thx im voraus

  • #2
    Hab schon mal ein ähnliches Script geschrieben, werde das aber nie wieder tun!
    Eintragen und Auslesen ist ja noch recht einfach, beim Löschen wirds kompliziert.

    Ich habs so gelöst:
    1. jede Zeile bekommt eine Nummer. Also z.B.:
    PHP-Code:
    1|datum|text...
    2|datum|text...
    ... 
    Bei einem Neueintrag wird zuerst der gesamte Inhalt der Datei in ein Array geladen (mit file()), wo dann jede Zeile ein Arrayelement ist.
    Dann splittest du jedes Arraynochmal mit explode() (so wie dus eh bei der Ausgabe machst).
    Damit findest du die letzte vergebene Nr. heraus, erhöhst sie um 1 und das ist die neue Nr. für den Neueintrag.
    Dieser Schritt ist fürs Löschen wichtig!

    Wenn du löschen willst, liest du wieder alles aus in ein Array und schreibst gleichzeitig wieder alles in die Datei (die vorher geleert wird), außer die Zeile, die die Nr. hat, die du zum Löschen angibst. Wenn du also Löschen mit der id "5" aufrufst, wird die Zeile mit Nr. 5 nicht mehr in die Datei geschrieben, also quasi gelöscht.

    Dieser Weg ist irre umständlich (und du liest und schreibst permanent Array -> nicht wirklich performant), unsicher (was passiert, wenn was beim erneuten Speichern passiert? Alle News sind gelöscht!) und nicht zu vergleichen damit, wenn dus in einer Datenbank machst.
    Ich hab das Ganze für ein Low Budget Projekt gemacht (da gabs keine DB), war aber im Endeffekt dann aufwändiger als eine DB Lösung!

    lG
    Bernie

    Kommentar


    • #3
      [ X ] Ja, es ist schon irre schwierig, dem "ERST LESEN" nachzukommen: http://www.php-resource.de/forum/sho...threadid=50454

      Kommentar


      • #4
        Erstmal danke deltacon ich überleg mir jetzt doch ob ich das nicht mit mysql datenbank machen werde. Also trozdem Danke

        Kommentar


        • #5
          Original geschrieben von TobiaZ
          [ X ] Ja, es ist schon irre schwierig, dem "ERST LESEN" nachzukommen: http://www.php-resource.de/forum/sho...threadid=50454
          OffTopic:
          in der neuen version von php-resource.de sollte man im php-developer forum beim erstellen eines neuen themas nen haken machen müßen "ja, ich habe den ERST LESEN thread gelesen und verstanden. ich möchte aber trotzdem fragen... ich bestätige außerdem hiermit, dass ich das risiko eingehe, auf dieses thema verwiesen zu werden"
          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
          var_dump(), print_r(), debug_backtrace und echo.
          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

          Kommentar


          • #6
            OffTopic:
            Nö, ich denke die Threads sollten einfach von allen Ignoriert werden. Vielleicht hat das vb3 ne autom. löschfunktion. Berni?

            Kommentar


            • #7
              newsscript via datenbank dann klappts au mit dem löschen


              OffTopic:
              btw ich bin nu 3-stellig HURRAY
              Die Milch bleibt ranzig!

              Kommentar

              Lädt...
              X