[CMS+mySQL] automatische seitengenerierung

name

Mitglied
Hi,
ich habe echt ein Problem und ich bin total frustriert.
sad.gif

Ich muss unbedingt ein CMS zum laufen bringen.
Ich kann zwar nicht CMS selbst programmieren, aber es gibt ja eigentlich genug fertige im Internet.
Ich habe das jetzt auch ein bisschen versucht, und eigentlich klappt das ganz gut.

Nur mein Problem: Da ich wie erwähnt nicht CMS programmieren kann, also ein eigenes CMS machen, brauche ich ein kostenloses am besten OpenSource CMS.
Kennt ihr ein CMS das folgendes Feature beinhaltet:
Man muss in dem CMS Daten eintippen können die das CMS dann in z.B. eine mySQL Datenbank abspeichert.
(gut, das werden alle Daten)
ABER:
Die Daten müssen nach mehrere (also nicht nur einer), bestimmte Kriterien eingeordnet werden.
Z.B. schreibt der Benutzer über eine bestimmte SPORTART die immer MONTAGS in HAMBURG zu der und der UHRZEIT und mit dem VERANSTALTER stattfindet.
Diese 5 Sachen müssen unabhängig voneinander und unabhängig vom Text den man auch noch dazu schreibt in die Datenbank abgespeichert werden (glaube ich).
Der Webmaster hat schon Seiten gemacht, in denen nur eine bestimmte SPORTART zu sehen sein soll.
Der Webmaster hat auch Seiten gemacht in denen man nur alle Veranstaltungen die MONTAGS sind zu sehen bekommt. Das selbe gillt auch für die anderen Kriterien.
Das wichtige ist nämlich, dass der Benutzer später einfach ins CMS sich einloggt und da einmalig die Seite ändert in denen er die 5 Kriterien und den Text eingetippt hat. Er ändert z.B. den Tag von MONTAG zu DIENSTAG. Der Ort HAMBURG wird zu KÖLN, etc.
Danach werden automatisch die anderen (sortierungs)Seiten geändert und sein Text ist nun nicht mehr auf der MONTAGSseite zu sehen sonders auf der DIENSTAGSseite.
Das selbse gilt für die Seiten der Orte. Sein Text ist nun nicht mehr auf der HAMBURGseite sonders auf der KÖLNseite zu sehen. Und so weiter...

ich hoffe ihr habt verstanden was ich meine...
Oh man, ich würde mich echt über ne Antwort freuen, denn die bräuchte ich
Vielen Dank schonmal,
cu
bjarne
 
Alle CMS die ich bis anhin benutzt habe waren Eigenentwicklungen.

Ein Anhaltspunkt findest du hier: Content Managment Systeme

Typo3 ist das populärste System. Ich empfehle dir ein Open Source CMS zu auszuprobieren und die nötigen Änderungen vornehmen (zu lassen).

Sollte die Fragestellung aber effektiv so banal sein, wie ich das verstanden habe, dann dürften ein wenig PHP Kentnisse genügen.

Ansatzpunkt: Felder in der Tabelle: ort, tag, datum, beschreibung, titel.
Dann ort-Köln.html, per mod_rew zu index.php?ort=köln was im Script die Abfrage select * from db where ort='köln' auslöst. Bzw tag-mo.html, oder sogar ort-münchen-tag-di.html etc....
 
Hi name!

So recht schlau werde ich aus deinem Beitrag leider nicht.

Habt ihr nun ein Cms oder nicht?
Wie wäre es, wenn du die URL des Projektes posten würdest?


Damit Daten nach bestimmten Kriterien, wie z.B. Sportart, Tag, Veranstalter etc., gespeichert (und dann natürlich geändert) werden, brauchst du eigentlich kein Cms. Dafür musst du eigentlich nur die Tabelle(n) entsprechend entwerfen.


Zum Cms:
Für langfristige Projekte mit vielen neuen Inhalten ist ein Cms immer sinnvoll.
Allerdings ist die Cms-Auswahl eine entscheidende Sache, die man nicht so auf die Schnelle in einer Woche abhaken kann. Ein Pflichtenheft ist das mindeste ...

Open-source-Cms:
typo3, opencms, ezpublish, magnolia, contenido, der-dirigent, mambo und viele weitere.
Jedes hat so seine Vor- und Nachteile. Dein "Problem" lösen sie bei richtiger Anwendung alle.


Schöne Grüße
Hans
 
Hi, ich habe da ein "script" (es ist eigentlich ein Programm) gefunden, dass ich umschreibe und dann müsste es funktionieren.
Ich bin auch schon ein gutes Stück vorran und mir fehlen nur kleinigkeiten und die DEITAL.php seite zu ändern.

(P.S. ich habe natürlich nachgeguckt ob man das scripts ändern darf, und ja, man darf das
wink.gif
)

Das script findet ihr hier: http://demo.csabdesign.de/cdmoviedb2/

Mit dem Script/Programm ist nämlich genau das möglich was ich haben möchte. Man kann mit leichtigkeit selbst mehrere Felder zum Erstellen der Tabellen in der Datenbank hinzufügen und später kann man (wie Alain schon erwähnt hat) spezielle URLs verwenden die dann ausschließlich die Montagssportarten zeigen.
Wenn der user die Sportart bei Dienstag haben möchte, muss er das nur eine Stelle ändern und die Sportart erscheint nun auf der anderen seite
smile.gif


Ich bin noch am überlegen ob ich dass in ein OpenSourceCMS einprogrammieren [lassen] möchte, oder ob das in ordnung ist wenn man sich ins CMS einloggen muss, um das Menu zu ändern, und sich in das andere System einloggen muss um die Sportseiten zu ändern.

Naja, ich werde mich bestimmt wieder melden, da ich finde dass die DETAIL-Seite zu langweilig ist...
wink.gif


cu
 
Hi,
ich habe jetzt ein paar (hoffentlich) kleine Probleme.
Und zwar habe ich die Detailseite so ändern wollen, dass einige Daten von der einen Tabelle geholt werden, und andere wiederrum von der anderen.

Aber, bei der einen Tabelle soll so zu sagen mehrere Felder abgefragt werden ob der "Titel" (ich brauche dafür eine Definition, die ich nicht kenne) in eines der Felder vorhanden ist. Wenn ja: soll PHP die Informationen aus genau dieser Tabelle von den Feldern "Name" (fornavn) und "Nachname" (efternavn) holen und die weiterunten zeigen.

Um die erste Tabelle abzufragen und da ein paar infos rauszuholen, habe ich das so versucht (klappt auch):

<?php include("config.php");
$sql="SELECT * FROM sportsgrene where id=".$id; |<- das ist die variable definitione für die ID-nummer (klappt auch) |
$res=mysql_query($sql, $db);
while($mov = mysql_fetch_object ($res))
{
echo"Detail: ".$mov->titel."</title>"; ?>

Jetzt zur anderen Tabelle. Hier mache ich es auf die selbe Art und weise... nur klappt es nicht
wink.gif
:

<?php include("config.php");
if ($mov)

{
$sqlab = "select * from instruktoer where akti1 like ''vandbassehold "; |<- jetzt das problem: hier wird nur EIN feld abgefragt, nämlich "akti1"
1.) ich möchte dass eine reihe von felder abgefragt werden, nämlich akti1 bis akti10.
Etwas weiter steht "vandbassehold" (ist dänisch, also nicht wundern). "Vandbassehold" ist der Titel der seite (man sieht auch etwas weiter oben (echo"Detail: ".$mov->titel."</title>"; ?>), nur wie nennt man diese variable definition von titel in "meinem" kleinen script? (also statt "vandbassehold" möchte ich z.B. "$mov->titel." haben, nur leider klappt das nicht, - wie soll ich es definieren/nennen? |


$res = mysql_query($sqlab, $db);

$fornavn = mysql_result($res, 0, "fornavn");
$efternavn = mysql_result($res, 0, "efternavn"); | <- ok, und das hier ist halt für die seite, dass überal wo ich die definition $efternavn hinschreibe
Z.B. <? if ($efternavn=="") {echo"intet valgt";} else {echo"$efternavn";} ?>
erscheint dann der Nachname (efternavn) in schrift, oder aber, wenn das Feld "efternavn" lehr ist, erscheint in schrift "intet valgt". |

}
?>


Das nächste Poblem:
Wenn PHP nun eben nicht den "Titel" (also hier "vandbassehold") findet, macht der einen Fehler
sad.gif

Das müsste man doch aber irgendwie mit so einem "ELSE" kommando beheben können, also wenn er nichts findet soll da stehen "intet fundet" (nichts gefunden)...

Oh man
Ich hoffe ihr könnt mir helfen und sage schon jetzt vielen, vielen Dank!

cu
Bjarne
(P.S., ich bin ein echter Anfänger und schreibe wie erwähnt das Script/Program CD-Movie-DB2 um)
 
Örg...? Es ist nicht wirklich ersichtlich, was du möchtest.

Was willst du?

QUOTE $sqlab = "select * from instruktoer where akti1 like ''vandbassehold ";

Like benutzt man, wenn vandbassehold in akti1 vorkommen soll, dann aber like '%vandbassehold%', so dass jedes akti1 gefunden wird, in dem van.. irgendwie vorkommt. Wenn du aber diese haben willst, die mit van.. anfangen: like 'van..%' oder enden like '%van..', wenn du aber die willst, die möchtest, bei denen akti1 genau gleich van... ist, dann muss es heissen: akti1='van...'.

So kannst du Fehlermeldungen abfangen:

QUOTE if ( !$res = mysql_query($sqlab, $db) )
echo $sqlab."<br>".mysql_error();


QUOTE 1.) ich möchte dass eine reihe von felder abgefragt werden, nämlich akti1 bis akti10.

select * from instruktoer where akti1='ver..' or akti2='ver...' or akti3='ver...' or ... or akti10='ver..'

Bzw akti2 like '%ver..%'


QUOTE also statt "vandbassehold" möchte ich z.B. "$mov->titel." haben, nur leider klappt das nicht, - wie soll ich es definieren/nennen?
Also wenn du das machst:

QUOTE while($mov = mysql_fetch_object ($res))
{
echo"Detail: ".$mov->titel."</title>"; ?>
fehlt da erst mal ein } und zweiten existiert das Objekt dann nur in der Schlaufe. Dh du hast 10 Zeilen, die sind dann nach der Schleife weg....
Wenn du nur ein Datensatz hast, kannst du es wie folgt lösen (ob die Objekte am leben gelassen werden weiss ich nicht):

QUOTE $mov = mysql_fetch_array($res);
echo $mov['title'];
 
Hi, danke für deine Antwort, aber ich versuch es nochmal:
Ok, ich fange mal ganz von vorne an, und versuche es verständlich zu machen.

Erstmal versuche ich es zu erklären.
Es gibt 2 Tabellen. Einmal die Tabelle die zu dieser Seite (SPORSTGRENE) gehört und wo alle Daten die zur Sportart (z.B. VANDBASSEHOLD) gehört gespeichert sind.
Die andere Tabelle ist die INSTRUKTOER. Hier sind sämtliche Daten über die Instruktöre (also die Menschen die diese Sportarten veranstalten) gespeichert.
Nun ist es so, dass ich eine andere Seite habe die zu den Instruktören gehört und wo man einen Namen reinschreiben kann und dann schreiben welche Sportart er veranstaltet.
Auf der Sportartseite soll dann automatisch sein Name erscheinen.
Das tut es indem PHP in der Tabelle INSTRUKTOER im Feld akti1 (bis akti10, weil jeder instruktör bis zu 10 sportarten veranstaltet) nach dem Titelname der Sportseite durchsucht, weil der Titel auch der Name ist die man in den Feldern akti1-akti10 evt. eingetippt hat. Jede Sportart hat nur EINEN Instruktör.
Wenn PHP nun diesen Titel in einer der vielen akti1 felder oder eines der anderen akti(x)-felder gefunden hat, sucht PHP nun aus genau dieser Stelle den zugehörigen Feld Name und zeigt diesen Namen auf der Seite.
Ja, das war's auch eigentlich schon...

Also, ich habe ein bisschen daran rumgebastelt und habe folgendes herausgefunden.

Bei diesem Script:

<?php include("config.php");


{
$sqlab = "select * from instruktoer where";
$sqlab .= " id = $id";

$res = mysql_query($sqlab, $db);

$fornavn = mysql_result($res, 0, "fornavn");
$efternavn = mysql_result($res, 0, "efternavn");
}

?>
Klappt alles wunderbar.
NUR: Die ID-Nummer ist falsch. Die Definition $id gehört zur Seite mit den Sportarten in der Tabelle SPORTSGRENE, ich möchte aber, dass in der Tabelle INSTRUKTOER im Feld AKTI1 bis AKTI10 nach dem TITEL der Seite (z.B. VANDBASSE oder aber wenn es eine andere Seite ist z.B. RUTSCHEBANE) gesucht wird. Deshalb brauche ich eine variable definition für den Titel, wie es den auch für die ID ($id) gibt.

Diese Definition habe ich auch schon geschrieben und die funktioniert sogar:

<?php include("config.php");
{
$sqlab = "select * from sportsgrene where";
$sqlab .= " id = $id";

$res = mysql_query($sqlab, $db);

$titel = mysql_result($res, 0, "titel");

}
?>

Die $id ist nämlich hier richtig, da der Titel auf der Sportseiten Tabelle (SPORTSGRENE) gespeichert ist, und somit gehört die ID auch zum Titel und umgekehrt.
Hier werden die Infos aus der Tabelle SPORTSGRENE und dem Feld TITEL geholt und zu $titel definiert.

Das heißt die Definition habe ich.

Jetzt müsste man meinen, dass man ganz oben bei:

$sqlab = "select * from instruktoer where";
$sqlab .= " id = $id";

einfach das Feld "id" zu
"akti1 or akti2 or akti3 or akti4 or akti5 or akti6 or akti7 or akti8 or akti9 or akti10 = $titel";

machen kann... So geht das aber nicht.... dann macht der ne Fehlermeldung und meint, dass diese Linien:

$fornavn = mysql_result($res, 0, "fornavn");
$efternavn = mysql_result($res, 0, "efternavn");

falsch sind... Wie gesagt, wenn man die id = $id hat ($id ist hier = 1) dann kann er namen anzeigen, allerdings holt er sich diese aus den falschen Felder weil die ID zur Seite gehört und nicht zu den Instruktøren (also Menschen die das Arrangieren).

Ich gebe euch mal das ganz script:

<html><head><title>
<?php include("config.php");
$sql="SELECT * FROM sportsgrene where id=".$id;
$res=mysql_query($sql, $db);
while($mov = mysql_fetch_object ($res))
{
echo"Detail: ".$mov->titel."</title>"; ?>

<?php include("config.php");


{
$sqlab = "select * from instruktoer where";
$sqlab .= " id = $id";

$res = mysql_query($sqlab, $db);

$fornavn = mysql_result($res, 0, "fornavn");
$efternavn = mysql_result($res, 0, "efternavn");
}
{
$sqlab = "select * from sportsgrene where";
$sqlab .= " id = $id";

$res = mysql_query($sqlab, $db);

$titel = mysql_result($res, 0, "titel");

}
?>


Und das gehört zur HTML-Tabelle wo die Daten gezeigt werden sollen:

<td valign="top">
<? if ($fornavn=="") {echo"intet valgt";} else {echo"$fornavn";} ?>
<? if ($efternavn=="") {echo"intet valgt";} else {echo"$efternavn";}
?><br><br>
</td>

Und er Abschließende Teil:

</div><?
} | <- hier wird nämlich dieses Teil ganz vom Anfang (den Fehler den Alain bemerkt hat) zu gemacht |
mysql_close(); ?>
</body></html>

Ok, hoffe ihr habt das verstanden und ich sage schonmal Danke
smile.gif
 
Hi, ok, ich habe daran rumgebastelt, ein bisschen was an den Einstellungen, etc. geändert und jetzt klappt das
smile.gif

Für diejenigen denen es interessiert schreibe ich hier noch den Quellcode:

<?php include("config.php");

{
$sqlab = "select * from instruktoer where akti like '%$hold%'";


$res = mysql_query($sqlab, $db);

$fornavn = mysql_result($res, 0, "fornavn");
$efternavn = mysql_result($res, 0, "efternavn");

}
?>

Also, nochmal Danke!
 
Hi,
ja so langsam nerv ich, aber ich habe doch noch eine Fragen.
Wenn es jetzt mehrere Einträge in der Datenbank gibt die beim Feld "akti" die (hold)Nummer der Seite (z.B. nummer 60) eingetragen haben. Wie kann ich dann die Felder "fornavn" (Vorname)und "efternavn" (Nachname) definieren?
Das heisst es gibt nun statt nur einem Vornamen und Nachnamen zwei.
Ich glaube ich bräuchte irgendwie etwas das sagt, dass wenn es mehrere Einträge im Feld akti=%$hold% gibt, muss der aus beiden (oder mehr) die Einträge der Felder fornavn (Vorname) und efternavn (Nachname) ziehen und diese dann auch noch irgendwie zusammenfügen zu meiner Definition von $fornavn und $efternavn....
aber bin mir nicht ganz sicher ob das so geht...
vielleicht könnt ihr mir ja helfen. wäre auf jeden fall echt nett!
Danke,
cu
Bjarne
 
Zurück
Oben