Hallo, hab eine my sql datenbank und will nun wie bei nickles auch, seiten erst dann erzeugen, wenn sie gebraucht werden. den html code also in die datenbank einfügen. wie mache ich das denn??
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
... lerne PHP, lerne SQL, lerne, den Webserver und MySQL zu verstehen ;-)
Have fun,
Z.
PS: warum willst du das? Welche Motivation hast du dazu?
du brauchst zum einen einen webserver der eine serverseitige scriptsprache unterstützt und zum anderen eine datenbank.
das vorgehen kann man dir hier nicht kurz und bündig schildern, da die richtige vorgehensweise (sofern es nur eine richtige gibt) stark vom aufbau und dem gewünschten nutzen der seiten abhängt.
empfehlenswert sind php und sql kenntnisse, da beides die am weitesten verbreiteten schnittstellen im internet sind. es erfordert einarbeitungszeit und zumindest grundlegende kenntnisse, selbst wenn du vorgefertigte systeme wie nuke nutzen willst. du wirst also um ein selbststudium nciht herumkommen. empfehlenswert hierzu ist selfphp, mysql-doku, sourceforge.net und ähnliche quellen (links darfst du selber raussuchen, bei dem wetter bin ich zu faul) ;o)..
übrigens: lohnt sich wirklich ur, wenn du häufig wechselnde und stark dynamsich interaktive inhalte auf dienen seiten hast, man sollte nichts nur deswegen machen wollen, weil es schick ist.
Hi,
ich poste nochmal wegen dem automatischen generieren von html code
durch php und mysql
also es sieht zur zeit folgendermassen aus, ein paar php kenntnisse hab ich schon
und auch mit mysql kann ich schon etwas anfangen.
meine inhalte für die homepage werden aus organisatorischen gründen sowieso alle
aus der datenbank geladen.
weshalb ich diese technik brauche:
ich will aktuelle politische artikel anbieten, wenn diese aber nach ein paar tagen
nicht mehr aktuell sind, sollen sie in ein archiv verschwinden. wie ich das manage,
ich eigentlich klar, aber was ich vermeiden will, ist, dass ich das archiv voller html
seiten habe, denn das stapelt sich irgendwann zu 1000 seiten und ich habe 0 übersicht.
der inhalt bleibt ja weiterhin in der datenbank, auch wenn der artikel nicht mehr aktuell ist.
Könntest du mir anhand eines beipiels trotzdem erklären wie ich html code generiere??
ich könnte sicherlich auch auf superumständliche include oder require weise eine html seite generieren
aber das problem ist, dass ich mit grosser sicherheit extrem uneffektiv arbeiten würde
okay, in deinem fall geht es also nicht um das generieren statischer html-seiten aus dynamischen inhalten wie bei nickles, bzw diese variante halte ich für nicht sinnvoll es sei denn du hast ein traffic von mehreren 1.000 seiten pro tag.
ich würde dir empfehlen die inhalte ganz klassisch aus der datenbank mit php auslesen zu lassen und in php-seiten einfügen zu lassen, da du dadurch keine massen an html-seiten generierst die du speichern mußt.
wenn du doch statische seiten generieren willst, dann mußt du eben ein script schreiben, daß regelmäßig alte html-seiten löscht.
genauere angaben kann dich dir leider jetzt auf anhieb nicht geben, dazu ist die anforderung zu unklar umrissen was aufbau der gesamten site, organisation und nutzen angeht.
Hi, ich wollte schon weiterhin php seiten erzeuge, nichts mit statischem inhalt.
die sache ist einfach die:
in einer tabelle mehrere zeilen, die ich einzeln ausgeben will.
jede zeile enthält:
titel, datum, text
es soll dann jeweils jede zeile in eine einzelne seite kommen bei klick auf die titelzeile, die aufgelistet ausgegeben werden.
so ähnlich wie bei der nickles startseite die news.
nickles verwendet statisches html, daß durch php erzeugt wird, ist also ein anderes prinzip als bei dir. was bei dir sinnvoll wäre ist, du baust den link so auf, daß er immer auf eine php seite weist und dieser seite eine variable für den link übergibt etwa in der form:
<a href="show.php?link=artikel200520021">Artikel1 vom 20.05.2002</a>
auf der seite show.php überprüfst du dann, ob link definiert ist und lässt dann aus der datenbank die inhalte für Artikel200520021 auslesen und formatiert darstellen. so hältst du die benötigte seitenzahl klein auch wenn es auf die performance geht, das wird aber erst bei vielen connects relevant.
wie genau soll ich denn auf der show.php seite festlegen, ob der link definiert ist? da muss ich ja aber im endeffekt auch wieder alle links einzeln auf die show.php seite eingeben bz. definieren oder??
geht das mit einer einfachen if schleife?
ich kann es jetzt nur als beispiel mal durchdenken:
Du hast in der datenbank die artikel die folgendermassen aufgebaut sind
überschrift, inhalt, datum
jetzt liest du in deiner übersichtsseite abhängig vom datum die überschriften aus
SELECT überschrift FROM tabelle ORDER BY datum DESC LIMIT 0,10;
(bin nicht sicher, daß die syntax korrekt ist und bin zu faul das jetzt nachzuschlagen)
die gefundenen treffer lässt du jetzt als links darstellen:
<a href="show.php?link=übershcrift">überschrift</a>
in show.php überprüfst du zuerst, ob link gesetzt wurde:
if(!isset($link)){fehler abfangen}
else ...
unter else machst du dann die datenabfrage für den artikel:
SELECT * FROM tabelle WHERE überschrift='überschrift';
und stellst dann den inhalt formatiert dar.
also ok, hab ich eigentlich einigermassen verstanden.
was mir aber noch unklar ist:
Wie lasse ich den HTML code denn nun eigentlich generieren also um es krass einfach auszudrücken:
meine seite:
seite.php3
enthält nichts ausser ein paar includes, die footer und header einfügen.
jetzt fehlt mir ja noch der befehl mit dem ich den html code, der in einer tabelle bereitgestellt ist, aus dem tiefschlaf in meine php seite hole. mit einem include kann ich das noch nicht machen oder?
nein, mit include geht da niochts, deswegen hatte ich dir ja auch die sql-abfragen für die datenbank ins posting geschrieben.
du musst also in deiner seite.php3 (bei dir läuft noch php3?) eine funktion einbauen, die die abfrage durchführt und die ausgabe formatiert. da ja heute sonntag ist und ich noch ein bißchen zeit habe versuche ich mal eine rudimentäre funktion aufzustellen:
<?php
if(!isset($link)){$link="Fehler";}
$server="localhost:3306";
$db="Datenbankname";
$user="root";
$pw="";
$table="Tabellenname";
$kriterium="headline";
function content($link="")
{
if($link==""){print("<center><b>Fehler!</b><br>Kein Artikel angegeben.</center>");break;}
$dbp=@mysql_connect("$server","$user","$pw");
if(!$dbp){print("<center><b>Fehler!</b><br>Verbindung gescheitert.</center>");break;}
mysql_select_db("$db",$dbp);
$sql="SELECT * FROM $table WHERE $kriterium='".$link."';";
$result=mysql_query("$sql",$dbp);
$menge=mysql_num_rows($result);
if($menge==0){print("<center><b>Fehler!</b><br>Kein Artikel gefunden.</center>");break;}
$elements=mysql_fetch_array($result,MYSQL_ASSOC);
$elements["headline"]="<h1>".$elements["headline"]."</h1>";
$elements["content"]="<p>".$elements["content"]."</p>";
$elements["datum"]="<center>".$elements["datum"]."</center>";
return $elements;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title><?php print("Artikel $link");?></title>
</head>
<body>
<?php
include("header.inc");
$text=content($link);
echo $text["headline"];
echo $text["content"];
echo $text["datum"];
include("footer.inc");
?>
</body>
</html>