tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
0
ZUGRIFFE
668
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    folio folio ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Beiträge
    189
    Hi,

    ich habe ein kleines Gästebuch auf Basis einer CSV-Datei programmiert.

    Im Admin Control Panel soll es die Möglichkeit geben, Einträge zu löschen.

    Jeder Eintrag wird in einer Zeile gespeichert, die verschiedenen Zusatzdaten wie ICQ, Email, Homepage usw werden durch ein Semikolon separiert.

    Auch im ACP werden die Einträge auf verschiedenen Seiten angezeigt. Die einzig relevante Variable im Array der config.inc.php ist die "entries_page". Die Seitennavigation erfolgt durch Übergabe der Seitenzahl per GET-Methode, also www.bla.de/delete.php?page=2

    Hier der Code der Datei delete.php:
    PHP-Code:
    <body>
    <form action="delete.php" method="post">
    <?php
    include 'config.inc.php';

    //alle Einträge in ein (zwangsläufig) mehrdimensionales Array schreiben
    $eintraege file("gaestebuch.csv");
    // da die eintraege in chronologischer Reihenfolge vorliegen (oben der älteste) müssen die reihenfolge umgekehrt werden
    $eintraege array_reverse($eintraege);
    //anzahl der eintraege
    $anzahleintraege count($eintraege);
    $eintraege_pro_seite 15;

    if(isset(
    $_GET['page'])) {
    $seite $_GET['page'];
    }
    //sollte $page nicht gesetzt sein, also einfach nur delete.php eingegeben worden sein, ist die Seite = 0. Die neuesten Einträge werden angezeigt.
    else {
    $seite 0;
    }
    $start $eintraege_pro_seite $seite;

    for(
    $i $start$i $start $cfg['entries_page']; $i++)
    {

    //die Einträge aus dem mehrdimensionalen Array separieren, so dass auf ICQ, Homepage, usw. einzeln zugegriffen werden kann.
    $eintraege[$i] = explode(";",$eintraege[$i]);

    //kodierte daten aus der csv datei wieder dekodieren, um kommata etc. wiederherzustellen. nachher mit nl2br() umbrüche wieder herstellen
    $eintraege[$i][0] = urldecode($eintraege[$i][0]);
    $eintraege[$i][1] = urldecode($eintraege[$i][1]);
    $eintraege[$i][2] = urldecode($eintraege[$i][2]);
    $eintraege[$i][3] = urldecode($eintraege[$i][3]);
    $eintraege[$i][4] = urldecode($eintraege[$i][4]);
    $eintraege[$i][5] = urldecode($eintraege[$i][5]);
    $eintraege[$i][1] = nl2br($eintraege[$i][1]);

    //datumsausgabe. eventuell "heute" ausgeben
    if(date('dmy',time()+3600) == date('dmy',$eintraege[$i][5])) {
    $eintraege[$i][5] = "heute um ".date('H:i',$eintraege[$i][5])."";
    }

    //stammt der eintrag nicht von heute? dann wird else ausgeführt.
    else {
    $eintraege[$i][5] = "am ".date('d.m.y',$eintraege[$i][5])." um ".date('H:i',$eintraege[$i][5])."";
    }

    print(
    $eintraege[$i][0]);
    print(
    " schrieb ");
    print(
    $eintraege[$i][5]);



    if(
    $eintraege[$i][2] || $eintraege[$i][3] || $eintraege[$i][4]) {
    print(
    "<br>");


    if(
    $eintraege[$i][2]) {
    print(
    " || Homepage: ");
    print(
    $eintraege[$i][2]);
    }
    if(
    $eintraege[$i][3]) {
    print(
    " || ICQ: ");
    print(
    $eintraege[$i][3]);
    }
    if(
    $eintraege[$i][4]) {
    print(
    " || Email: ");
    print(
    $eintraege[$i][4]);

    }
    }

    print(
    "<br>");
    print(
    "<input type=\"checkbox\" name=\"".$i."\">");
    print(
    $eintraege[$i][1]);
    print(
    "<br>");
    print(
    "<br>");
    }

    print(
    "<input type=\"submit\" value=\"loeschen\">");
    print(
    "<input type=\"hidden\" name=\"sent\" value=\"1\">");
    print(
    "<input type=\"hidden\" name=\"start\" value=\"".$start."\">");


    //seitennavigation.
    print("&nbsp;");
    print(
    "<a href=\"");
    print(
    "delete.php?\">");
    print(
    "Erste");
    print(
    "</a>");

    print(
    "&nbsp;");
    print(
    "<a href=\"");
    print(
    "delete.php?page=2\">");
    print(
    "2");
    print(
    "</a>");

    print(
    "&nbsp;");
    print(
    "<a href=\"");
    print(
    "delete.php?page=3\">");
    print(
    "3");
    print(
    "</a>");

    print(
    "&nbsp;");
    print(
    "<a href=\"");
    print(
    "gb.php?page=4\">");
    print(
    "4");
    print(
    "</a>");
    ?>
    </form>
    Der folgende Teil wird nur ausgeführt, wenn löschen betätigt wurde. Hier liegt auch der - mir unbekannte - Fehler, da die CSV-Datei nach ausführen des Codes leer ist.

    PHP-Code:
    <?php
    if($_POST[sent] == "1") {

    //csv-datei ersetzen, kompletten inhalt neu generieren

    //zuerst die daten sichern, bevor die datei ersetzt wird.
    $delete=file("gaestebuch.csv");
    $diedatei=fopen("gaestebuch.csv","w");
    //da bei der eintragsausgabe aufgrund der chronologischen Reihenfolge auch  array_reverse eingesetzt wird, muss dies hier auch geschehen, damit nicht die falschen Einträge gelöscht werden.
    $delete array_reverse($delete);

    //durchlaufen der for-Schleife, die für jede Checkbox bei den Einträgen oben prüft, ob sie markiert wurde.
    for($i $start$i $start $cfg['entries_page']; $i++) {
    $delete explode(";",$delete[$i]);

    $delete_entry.= $delete[$i][0];
    $delete_entry.= ";";
    $delete_entry.= $delete[$i][1];
    $delete_entry.= ";";
    $delete_entry.= $delete[$i][2];
    $delete_entry.= ";";
    $delete_entry.= $delete[$i][3];
    $delete_entry.= ";";
    $delete_entry.= $delete[$i][4];
    $delete_entry.= ";";
    $delete_entry.= $delete[$i][5];
    $delete_entry.= "\n";
    print(
    $delete_entry[$i][1]);
    if(
    $_POST[$i]) {
    print(
    "wird geloescht");
    unset(
    $delete_entry[$i]);
    }
    }
    $delete_entryarray_reverse($delete_entry);
    fwrite($diedatei,$delete_entry);

    }
    ?>
    Wenn ich den Code ausführe, steht in der gaestebuch.csv nachher in jeder Spalte der oberen Zeile ein Buchstabe. Gleich werde ich eine Demo hochladen.

    Sollten Verständnisprobleme auftreten, fragt einfach!

    Vielen Dank,

    folio
    Geändert von folio (01.07.04 um 16:58 Uhr)
     

Ähnliche Themen

  1. Mysql Daten löschen
    Von danex im Forum PHP
    Antworten: 12
    Letzter Beitrag: 08.01.10, 23:57
  2. Selectbox aus XML Daten u. Abfrage von Daten aus XML Datei
    Von helpmeaimnew im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 23.04.08, 12:05
  3. Antworten: 3
    Letzter Beitrag: 20.04.05, 17:50
  4. Löschen von MySQL Daten
    Von iLu_is_a_loser im Forum PHP
    Antworten: 1
    Letzter Beitrag: 07.04.05, 21:15
  5. Daten aus Textdatei löschen
    Von firstlord18 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 26.11.04, 19:00