Contentpflege leicht gemacht?!
Maresa P.
- php
0 Tom0 Götz0 Danny0 Sebastian Becker
Hallo liebes Forum,
ich muss für ein Webprojekt eine Pflegeschnittstelle realisieren, über die sich mehrere Bereiche (News, Veranstaltungen, Mitarbeiter, ...) der Website pflegen lassen.
Die Inhalte der Bereiche sind alle im Artikelstiel:
z.B. News:
Newstitel
Newsdatum
Newstext
Verfasser
Bild
---------
Newstitel
Newsdatum
Newstext
Verfasser
Bild
---------
Newstitel
Newsdatum
Newstext
Verfasser
Bild
---------
[usw]
Jeder Bereich enthält jedoch etwas unterschiedliche Felder.
Veranstaltungen enthält z.B.
Veranstaltungstitel
Veranstaltungsdatum
Veranstaltungsort
Bild
---------
Veranstaltungstitel
Veranstaltungsdatum
Veranstaltungsort
Bild
---------
[usw]
Zu Verfügung habe ich Php und eine MySQL Datenbank.
Ich habe das ganz enun so realisiert:
folgende MySQL Tabelle angelegt:
CREATE TABLE inhalt
(
id
int( 11 ) NOT NULL AUTO_INCREMENT ,
b
varchar( 8 ) NOT NULL default '',
i1
int( 11 ) NOT NULL default '0',
i2
int( 11 ) NOT NULL default '0',
i3
int( 11 ) NOT NULL default '0',
v1
varchar( 255 ) NOT NULL default '',
v2
varchar( 255 ) NOT NULL default '',
v3
varchar( 255 ) NOT NULL default '',
t1
text NOT NULL ,
t2
text NOT NULL ,
t3
text NOT NULL ,
f1
varchar( 255 ) NOT NULL default '',
f2
varchar( 255 ) NOT NULL default '',
f3
varchar( 255 ) NOT NULL default '',
f4
varchar( 255 ) NOT NULL default '',
d1
date NOT NULL default '0000-00-00',
d2
date NOT NULL default '0000-00-00',
PRIMARY KEY ( id
)
) TYPE = MYISAM
und ein Script geschrieben, welches auf jeder Pflegeseite includiert wird:
// Speichern
if (isset($_REQUEST["speichern"])) {
(isset($_REQUEST["id"])) ? $query .= "UPDATE inhalt " : $query .= "INSERT INTO inhalt ";
$query .= "SET b='$b', i1='".$_POST["i1"]."', i2='".$_POST["i2"]."', i3='".$_POST["i3"]."', v1='".$_POST["v1"]."', v2='".$_POST["v2"]."', v3='".$_POST["v3"]."', t1='".$_POST["t1"]."', t2='".$_POST["t2"]."', t3='".$_POST["t3"]."', d1='".$_POST["d1"]."', d2='".$_POST["d2"]."' ";
if (isset($_REQUEST["id"])) {
$query .= "WHERE id = ".$_REQUEST["id"];
$mysql_insert_id = $_REQUEST["id"];
}
mysql_query($query);
if (!isset($mysql_insert_id))
$mysql_insert_id = mysql_insert_id();
for ($i = 1; $i <= 4; $i++) {
// Dateiupload
if (strlen($_FILES["f".$i]["name"]) > 0) {
$pfad = "../../upload/".$mysql_insert_id;
@mkdir($pfad);
// Kopieren der Datei auf dem Server
if (move_uploaded_file($_FILES["f".$i]["tmp_name"], $pfad."/".$_FILES["f".$i]["name"]) == true) {
// Eintragen des Dateinamen in Datenbank
mysql_query("
UPDATE inhalt
SET f$i = '".$_FILES["f".$i]["name"]."'
WHERE id = $mysql_insert_id
;");
}
}
}
}
// Löschen
if (isset($_GET["del"])) {
mysql_query("
DELETE
FROM inhalt
WHERE id = '".$_REQUEST["del"]."'
;");
deldir("../../upload/".$_GET["del"]);
}
// Daten zum editieren abfragen
if (isset($_REQUEST["edit"])) {
$query_return = mysql_query("
SELECT *
FROM inhalt
WHERE id='".$_REQUEST["edit"]."'
LIMIT 1
;");
$query_array = mysql_fetch_array($query_return);
echo '<input type="hidden" name="id" value="'.$query_array["id"].'">';
}
Das Ganze erscheint mir jedoch etwas zu umständlich!
Frage: gibt es da einfachere/bessere Alternativen. Wichtig ist, dass sich das Ganze schnell um ein paar Pflegebereiche erweitern lassen kann.
Kennt jemand ein gutes Tutorial hierzu?
Vielen Dank für euere Hilfe
MAresa
Hello,
Die Inhalte der Bereiche sind alle im Artikelstil:
Jeder Bereich enthält jedoch etwas unterschiedliche Felder.
Für solche Zwecke ist HTML ganz gut geeignet ;-)
Ich will Dich jetzt nicht verklapsen, sondern einfach mal auf den Ursprung zurückleiten.
Aus den HTML-Elementen kann man diverse Grundtypen (Items) für Veröffentlichungen bauen. Die definerit man dann jeweils in einer Bauvorschrift. dsa ergibt je eine Klasse.
Diese Klasse kann man dann konfigurieren mittels CSS, das ergibt eine Collection der möglichen CSS-Komponenten zu dieser Klasse und den Vermerk der typischen (Defaults).
User, Abteilungen, Aufgaben, Projekte und Kategorien können eigene personalisierte Defaults haben.
Es gibt Seitentypen, die aus bestimmten Collections von Items betehen. Bei manchen Seitentypen sind diese fest vorgegeben, bei anderen können die Items alternativ und optional ergänzt oder unterdrückt werden. Das regelwerk für die Seite kann man in einem Syntaxdiagramm (In der Datenbank) festhalten.
Jedes Item und jede Seite kan Eigentümer, Trusties, Eigenschaften (Erscheungsdatum, Freigaberegeln, Automatisch Löschung...) haben. Da die Metaeigenschaften nicht von Anfang an feststehen, werden auch diese in einer (oder zewi) Tabelle(n) gesammelt.
Natüelich gibt es ein Loginsystem, eine Historiefunktion, ein ErrorLog, usw.
Wenn Du alles fertig hast, kannst Du mir das System schicken *ggg*
Oder schau doch einfach mal nach fertigen CM-Systemen, wie z.B., Typo 3
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Maresa!
Zu Verfügung habe ich Php und eine MySQL Datenbank.
Ich habe das ganz enun so realisiert:
[...]
Du hättest besser nur einen Link zu Deinem Quellcode gepostet.
$query .= "SET b='$b', i1='".$_POST["i1"]."', [...]
$query .= "WHERE id = ".$_REQUEST["id"];
Schau Dir doch mal "dclp FAQ 16.18. Wie kann ich bösartigen Code in SQL-Abfragen unterbinden?" an. Variablen direkt aus $_POST oder gar $_GET in ein SQL-Statement zu übernehmen ist relativ gefährlich.
mysql_query($query);
Wie wärs mit ein wenig Fehlerbehandlung?
$query_return = mysql_query("
SELECT *
FROM inhalt [...]
Vielleicht ist es für Dich ja auch noch interessant mal "dclp FAQ 16.14. Warum soll ich nicht SELECT * schreiben?" durchzulesen
Das Ganze erscheint mir jedoch etwas zu umständlich!
Vor allem imho unsicher und unsauber.
MfG
Götz
Hallo,
ohne jetzt näher auf Planung u. Konzept Deines Projektes einzugehen, hier etwas konstruktive Kritik:
freundlichen Gruß
Danny
Hallo, MAresa,
ich muss für ein Webprojekt eine Pflegeschnittstelle realisieren, über die sich mehrere Bereiche (News, Veranstaltungen, Mitarbeiter, ...) der Website pflegen lassen.
das hört sich doch sehr nach Aufgaben für ein kleines Redaktionssystem bzw. Content-Management-System an.
Hier kannst Du verschiedene kostenlose Systeme testen z.B. Mambo Open Source ...
http://www.opensourcecms.com/
Infos und Links zu Mambo Open Source findest Du hier ...
http://de.wikipedia.org/wiki/Mambo_Open_Source
Weitere Hilfe findest Du hier ...
http://www.contentmanager.de
Grüße,
Sebastian