ERLEDIGT
NEIN
NEIN
ANTWORTEN
0
0
ZUGRIFFE
668
668
EMPFEHLEN
-
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:
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:<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(" ");
print("<a href=\"");
print("delete.php?\">");
print("Erste");
print("</a>");
print(" ");
print("<a href=\"");
print("delete.php?page=2\">");
print("2");
print("</a>");
print(" ");
print("<a href=\"");
print("delete.php?page=3\">");
print("3");
print("</a>");
print(" ");
print("<a href=\"");
print("gb.php?page=4\">");
print("4");
print("</a>");
?>
</form>
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.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_entry= array_reverse($delete_entry);
fwrite($diedatei,$delete_entry);
}
?>
Sollten Verständnisprobleme auftreten, fragt einfach!
Vielen Dank,
folioGeändert von folio (01.07.04 um 16:58 Uhr)
Ähnliche Themen
-
Mysql Daten löschen
Von danex im Forum PHPAntworten: 12Letzter Beitrag: 08.01.10, 23:57 -
Selectbox aus XML Daten u. Abfrage von Daten aus XML Datei
Von helpmeaimnew im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 23.04.08, 12:05 -
Apache&php: Datei-Rechte setzen, Datei löschen
Von mupermann im Forum PHPAntworten: 3Letzter Beitrag: 20.04.05, 17:50 -
Löschen von MySQL Daten
Von iLu_is_a_loser im Forum PHPAntworten: 1Letzter Beitrag: 07.04.05, 21:15 -
Daten aus Textdatei löschen
Von firstlord18 im Forum PHPAntworten: 2Letzter Beitrag: 26.11.04, 19:00





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren