ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / PHP / MySQL Probleme / Content Management System


Seite 1 von 1

jagr schrieb am 06.05.2003 um 17:33 Uhr

Hallo zusammen,

eine gruppe von ehrenamtlern erstellen gerade ein CMS für eine Internetseite, dessen Ziel es ist, den DAU´s der Verwaltung die Administration der Website so einfach wie möglich zu machen.

ich hatte folgende Idee, allerdings keinen Lösungsansatz :) :
es gibt verschiedene kategorien(menüpunkte), in denen die späteren benutzer dann neue daten hinzufügen, daten ändern und löschen können sollen.
dazu sind formulare notwendig. jetzt meine frage:
kann man diese formulare per db-abfrage generieren lassen?
wenn z.b. ein neuer termin angelegt werden soll? oder muß ich für jede kategorie ein eigenes formular html´en?
die frage läßt sich sicherlich mit ja beantworten, aber dann kommt die nächste frage, nämlich WIE :)
gebt mir bitte einen lösungsansatz!

im voraus vielen dank!
MfG Martin

master_mario schrieb am 06.05.2003 um 18:06 Uhr

Hallo

Da auch ein Formular nur aus html besteht und php html generieren kann, ist die Antwort natürlich ja. Aber ich versteh nicht ganz was Du willst. Die DB kann natürlich kein Formular erzeugen, aber der User muß ja angeben was er will. Wenn er also sein Häckchen bei termin macht, dann benutzt Du einfach das entsprechende Template welches Du natürlich vorher selbst erstellt haben mußt.

Beispiel für ein Template:
(ist von jemandem aus dem Forum, weiß aber nicht mehr von wem. Sorry!)

<?php
 /*      form template  (datei) (inputs) */
         $form_temp = '
         <form action="(datei)" method="post">
          (inputs)
         </form>
         ';
if( $usereingabe == 1 ) /* 1 ist die also wenn user termin wählt */
{
        $datei = 'termine.php';
        $inputs = '<input type="text" name="datum"></input>';
}
elseif( $usereingabe == x ) /* x steht für ne andere Wahl des Users */
{        
        $datei = 'wasanderes.php';
        $inputs = 'die Abfragen die man eben haben will';
}
        $output = $form_temp;
        $output = str_replace ( '(datei)', $datei, $output );
        $output = str_replace ( '(inputs)', $inputs, $output );
        echo $output;
?>

Das läßt sich dann belibig erweitern, dazu brauchst Du aber nich unbedingt ne DB. Wenn man unbedingt will kann man aber den Inhalt der entsprechenden Variablen auch aus ner DB holen.
Wenn das nicht reicht, mußt Du mal die Anfrage genauer formulieren.

Mario

jagr schrieb am 07.05.2003 um 09:21 Uhr

zunächst mal danke für den tip

was eingegeben werden soll bestimmt nicht der user sondern das steht von vornherein schon fest. ich dachte mir, man kann vielleicht die attribute, die man im formular benötigt, in der tabelle irgendwie kennzeichnen, so daß php weiß welche eingabemöglichkeiten nach dem generieren im formular erscheinen sollen. klar, attribute wie ID oder lastlogin etc. sollen natürlich nicht im formular als eingabemöglichkeit erscheinen. da muß man irgendwie differenzieren, aber wie?
ich hätte das ganze gerne so, daß ich nur ein php-script schreiben muß, welches mir die ganzen verschiedenen formulare generiert, anhand der gekennzeichneten (wenn das denn irgendwie geht...) attribute aus der jeweiligen tabelle in der datenbank!

master_mario schrieb am 07.05.2003 um 15:09 Uhr

Was meinst Du mit Attributen?

termin = Zeit, Eventtext
Geburtstag = Person, alter, Datum
Kleinanzeige = Gegenstand, Preis.......
allform(in allen formularen) = ID, lastaction, .............

So? Das wäre schon machbar, ist aber IMO aufwendiger als die templatemethode.

jagr schrieb am 07.05.2003 um 15:22 Uhr

attribute sind spalten einer tabelle in der datenbank!

angenommen ich hab folgende tabelle:

id|name|adresse|datum|lastlogin|newsmeldung|leiter

php soll beim klick auf den link in der tabelle nachsehen, was es für spalten gibt, und natürlich nur die nötigen spalten als eingabefeld im formular darstellen

Name:
adresse:
Leiter/In: (die stehen schon fest, also Dropdownlist um fehler zu vermeiden)
Newsmeldung:
[Button: Newsmeldung eintragen]

beim eintrag in die datenbank wird id automatisch eins hochgesetzt (auto_increment), name soll $_POST['Name'] sein usw.

php muß ja irgendwo her wissen, daß es nur die felder Name, adresse, leiter/in newsmeldung ins formular packen soll, und nicht alle anderen auch noch genommen werden... reden wir gerade aneinander vorbei? :)

master_mario schrieb am 07.05.2003 um 15:36 Uhr

Aha! Also, dann machst du es so:

Erweiter die Tabelle um die Spalte typ. Da schreibst du dann immer rein was es ist, also z.B. termin, Geburtstag,.....usw.
Du mußt die Tabelle dann zweimal abfragen, etwa so:
Wir nennen die Tabelle mal events.

Symbolisch ohne den Klimbim den Du eigendlich machen mußt für ne Abfrage

 query("SELECT id, typ FROM events ORDER BY id ASC");
 while( $typ = result abfragen )
 {
        if( $typ == 'termin' )
        {
                $selects = 'name, datum, newsmeldung';
        }
        if( $typ == 'geburtstag' )
        {
                $selects = 'name, datum';
        }
        query("SELECT ".$selects." FROM events WHERE id='$typ[id]'");
        $result = abfrage der Ergebnisse
        $result verarbeiten
 }

Seite 1 von 1