10x bewertet

To Do Liste

von yummy  |  13.02.2010 um 11:29 h
PHP Anwendungen
Typ: PHP Anwendungen
Stufe:Einfach Mittelmäßig
Wichtig!:
Dieses Tutorial ist auf den Grundlagen des ACPs von webvids erstellt worden. Wer es an sein eigenes anpassen möchte, sollte gewisse Grundkenntnisse haben.


Zunächst muss eine Tabelle in der Datenbank erstellt werden. Dazu fügt ihr diesen SQL Code im phpMyAdmin ein:

My-SQL Code:
CREATE TABLE IF NOT EXISTS todoliste (
id int(255) unsigned NOT NULL auto_increment,
autor int(255) NOT NULL,
zu_erledigen varchar(255) NOT NULL,
timestamp int(55) NOT NULL,
erledigt varchar(4) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Um Punkte einzutragen oder diese auch zu editieren muss ein .php Dokument erstellt werden. Nennt es einfach edit_todolist.php


<?php include("header.php"); ?>
<?php 
if(value("users WHERE id = '".$_SESSION["login"]."'","rang") >=
1) {  // Wenn eingeloggt und Rang größer oder gleich 1 ?>
<?php
$zusatz 
""$zusatz2 "";
if(
value("users WHERE id = '".$_SESSION["login"]."'","rang") == 2) { 
// Nur für Rang 2
$zusatz "WHERE autor = '".$_SESSION["login"]."'";
$zusatz2 "AND autor = '".$_SESSION["login"]."'";
}
if(
$_REQUEST["action"] == "new") {  // Neuer Punkt soll eingefügt
werden
mysql_query
("INSERT INTO todoliste (autor, timestamp, zu_erledigen,
erledigt) VALUES ('"
.$_SESSION["login"]."', '".time()."',
'"
.umbruch($_REQUEST["todo"])."', 'nein')");  // Eintragung in
Datenbank
echo '<div align="center">Neuer Punkt wurde eingetragen.</div>';  //
Ausgabe der Bestätigung
} elseif($_REQUEST["action"] == "delete") {  // Wenn gelöscht
if(exist("todoliste WHERE id = '".zahl($_REQUEST["id"])."'")) {
mysql_query("DELETE FROM todoliste WHERE id =
'"
.zahl($_REQUEST["id"])."'");
echo 
'<div align="center">Punkt wurde gelöscht.</div>';  //
Bestätigung zur Löschung
}
}  elseif(
$_REQUEST["action"] == "edit") {  // Wenn editiert werden
soll
if(exist("todoliste WHERE id = '".zahl($_REQUEST["id"])."' ")) { //
Wenn Punkt existiert
?>
<h3>Editieren</h3>
<form action="edit_todolist.php?action=edit2&id=<?=
zahl
($_REQUEST["id"]) ?>" enctype="multipart/form-data" method="post">
<table width="100%">
<tr>
<td width="50%"><label for="todo">Zu erledigen?</label></td>
<td width="50%"><input type="text" name="todo" id="todo" value="<?=
value
("todoliste WHERE id =
'"
.zahl($_REQUEST["id"])."'","zu_erledigen"?>" /></td>
</tr>
<tr>
<td width="50%"><label for="todo">Erledigt?</label></td>
<td width="50%"><input type="radio" name="erledigt" value="ja"> ja
<input type="radio" name="erledigt" value="nein"> nein</td>
</tr>
<tr>
<td width="50%"></td>
<td width="50%"><input type="submit" value="Punkt editieren" /></td>
</tr>
</table>
</form>
<?php
}
} elseif(
$_REQUEST["action"] == "edit2") {  // Wenn auf editieren
geklickt wurde
if(exist("todoliste WHERE id = '".zahl($_REQUEST["id"])."' ")) {  //
Wenn Punkt existiert
mysql_query
("UPDATE todoliste SET zu_erledigen =
'"
.umbruch($_REQUEST["todo"])."', erledigt =
'"
.umbruch($_REQUEST["erledigt"])."' WHERE id =
'"
.zahl($_REQUEST["id"])."'"); // Änderung in Datenbank
echo '<div align="center">Punkt wurde editiert.</div>'// Bestätigung
}
}
?>
<?php 
if(value("users WHERE id = '".$_SESSION["login"]."'","rang") >=
1) {  // Wenn Rang größer gleich 1 ?>
<h1>To-Do-Liste verwalten</h1>
<table width="100%">
<?php
$seite 
= (isset($_REQUEST["seite"]) ? zahl($_REQUEST["seite"]) : 0);
$proseite 10;  // Anzahl Punkte pro Seite
$erg mysql_query("SELECT * FROM todoliste ".$zusatz." ORDER BY
timestamp DESC LIMIT "
.$seite.", ".$proseite) or die(mysql_error()); 
// Verbindung mit Datenbank
while($row=mysql_fetch_object($erg)) {  // Ausgabe der Punkte mit
Schleife
?>
<tr>
<td><?= $row->zu_erledigen ?></td>
<td><?= datum($row->timestamp?></td>
<td>von <?= value("users WHERE id = '".$row->autor."'","name"?></td>
<td><a href="edit_todolist.php?action=edit&id=<?= $row->id
?>
">Editieren</a></td>
<td><a href="edit_todolist.php?action=delete&id=<?= $row->id
?>
">Löschen</a></td>
</tr>
<?php
}
?>
</table>
<?= seite("todoliste
"
.$zusatz,$seite,$proseite,"editcredits.php?seite="?>
<br />
<?php ?>
<h3>Neues zu erledigen</h3>
<br /><br />
<form action="edit_todolist.php?action=new" method="post"
enctype="multipart/form-data">
<table width="100%">
<tr>
<td width="50%"><label for="todo">Was ist zu erledigen?</label></td>
<td width="50%"><input type="text" name="todo" id="todo" /></td>
</tr>
<tr>
<td width="50%"></td>
<td width="50%"><input type="submit" value="Neues zu erledigen"
/></td>
</tr>
</table>
</form>
<?php ?>
<?php 
include("footer.php"); ?>



Erläuterungen zu den einzelnen Schritte habe ich per Kommentar neben an geschrieben, damit ihr auch wisst, wann genau was gemacht wird. Mit dem Script könnt ihr nun neue Punkte eintragen, sie bearbeiten (also dort auch den Status umändern, sofern ihr etwas erledigt habt) und löschen.

Zur Ausgabe der Punkte könnt ihr eine Datei mit dem Namen todoliste.php erstellen. Dort fügt ihr einfach dieses Script ein.


<?php include('header.php'); ?>
<h1>To Do Liste</h1>
<table width="50%" align="center">
<tr>
<?php
$prozeile 
1// Anzahl Punkte in einer Zeile
$proseite 25// Anzahl Punkte auf einer Seite
$i 1// Initialisierung für Zählervariable
$erg mysql_query("SELECT * FROM todoliste ORDER BY timestamp DESC")
or die(
mysql_error());
while(
$row=mysql_fetch_object($erg)) { // Ausgabe der Punkte in einer
Schleife
if($i%$prozeile == && $i != 1) { echo "</tr><tr>"; }
?>
<td><?= $row->zu_erledigen ?></td>
<td><img src="img/icons/<?= $row->erledigt ?>.gif" border="0"></td>
<?php $i++; } ?>
</tr>
</table>
<br />
<?= seite("todoliste".$w,$seite,$proseite,"todoliste.php?seite="?>
<?php 
include('footer.php'); ?>



Bei der Ausgabe sollte es dann ungefähr so ausehen:

Bild

Wenn ihr etwas in die Datenbank eintragt wird in die Spalte \"erledigt\" ein nein eingetragen und in der while-Schleife durch <?= $row->erledigt ?> ausgegeben, sodass dann dort ein nein erscheint. Ich habe es kleinen Icons verknüpft, die ja.gif und nein.gif heißen. Solltet ihr also etwas erledigtund es in der Verwaltung auch geändert haben, so erscheint ein ja und es wird durch img auch das ja.gif Icon aufgerufen.



18 Kommentare




x3chuckx3

Toll Danke *__* (6*)
am 13.02.2010 um 12:56 Uhr


SmaX

Die Erklärung ist n bisschen mager für die Menge des Codes.. aber okk..
am 13.02.2010 um 16:02 Uhr


Fr34k

Coole Idee, danke! Smilie
am 13.02.2010 um 19:54 Uhr


Porzelaine

Wenn ichs mal so ausdrücken darf: arschgeil Smilie Smilie Smilie
Dankeschön!
am 14.02.2010 um 20:52 Uhr


werock2040

Vielen,vielen Dank für das tolle Tutorial. Endlich mal ein Wunsch der von mir erfüllt wurde Smilie
am 15.02.2010 um 11:45 Uhr


werock2040

Bei mir kommt der Fehler auf todoliste.php :
My-SQL Code:
Parse error: parse error, unexpected T_IF in /home/www/web264/html/todoliste.php on line 13


Zeile 13: if($i%$prozeile == 0 && $i != 1) { echo "</tr><tr>"; }
am 15.02.2010 um 12:51 Uhr


werock2040

Hat sich er ledigt,waren die // Kommentare die gestört haben xD
am 15.02.2010 um 13:09 Uhr


yummy

Kann es sein, dass bei dir der Kommentar sich aufgeteilt hat und in eine weitere Zeile geraten ist und dadurch ein Fehler entstanden ist? Ich meine den hier: // Ausgabe der Punkte in einer Schleife
am 15.02.2010 um 13:09 Uhr


yummy

Alles klar xD
am 15.02.2010 um 13:10 Uhr


Sasuke

WOW Hammer Gaill Smilie
dankeeee
am 16.02.2010 um 12:14 Uhr


puppe.

heei (:
Echt supertolles Tutorial <3 <3 .. Aber ich hab leider ein Problem. & zwar gibt es ja WebVids irg. wie nicht mehr O.o & da habe ich halt die Loginreihe von hier genommen. Soweit hab ich mal das umgeändert wo mir die fehler angezeigt werden, aber jetzt habe ich das Problem das ich wenn ich die TodoList editieren will einfach nur eine leere Seite erscheint.
Kein Fehler oder irg. was steht dort ..

Ich glaube das der Fehler bei irgendwas mit den Adminrechten ist, weil die Seite mir nicht angezeigt wird. hab alles mögliche ausprobiert was mir eingefallen ist, aber jetzt bin ich mit meinem latein am ende :/ .. Hilfe wäre super SmilieD
am 03.03.2010 um 18:56 Uhr


puppe.

okeei :/ ich hab das problem gerade gefunden Smilie .. also es hat sich erledigt :P
am 03.03.2010 um 19:05 Uhr


Jessy

hab alles gemacht wie im tut beschreiben ... und ich sehe ... nichts :( kann mir jemand sagen wo der fehler liegt?
am 13.05.2010 um 16:13 Uhr


yummy

du musst darauf achten, dass die kommentare nicht in die nächste zeile geraten. ansonsten wird der code nicht richtig ausgegeben.
am 14.05.2010 um 13:47 Uhr


Jessy

aha geht doch ˆˆ danke :) finds nur schade, dass man das korrigieren muss, deswegen nur 5 sternchen
am 14.05.2010 um 17:03 Uhr


yummy

der content von giatu ist halt nicht so breit xD aber egal :)
am 14.05.2010 um 19:21 Uhr


Jessy

für anfänger ist es jedoch schwierig den fehler zu finden. sprich das müsste man vllt irgendwo erwähnen, dass die kommentare entfernt werden müssen ˆˆ
am 15.05.2010 um 23:12 Uhr


yummy

Steht schon ein paar mal hier in den Kommentaren, da das Problem schonmal aufgetreten ist ;)
am 16.05.2010 um 11:29 Uhr