content für startseite aus anderer Datei statt mysql tabelleForum » Webzone » PHP & MySQL » content für startseite aus anderer Datei statt mysql tabelle
-
09.07.2013 um 16:40 Uhr
Hallo an alle,
mir wie leider kein besserer Titel ein
Ich komme mit meinen Kenntnissen leider nicht mehr weiter und hoffe ihr knnt mir helfen.
Ich schreibe ein kleines CMS mit den Funktionen die ich brauche. Nun habe ich das Template der spteren Website schon fertig. Der Inhalt der einzelnen Seiten wird aus mysql ausgelesen und im CMS kann ich das ganze per TinyMCE verndern.
Nun mchte ich aber auf der Startseite nicht aus der Tabelle auslesen wo der Seiteninhalt herkommt sonder aus einer anderen, da die Startseite wie ein Blog benutzt werden soll. Dazu will ich das Newssystem aus dem Tutorial von dieser Seite verwenden. Es funktioniert alles bis auf die Einbindung auf der Startseite.
Hier der Code fr die index.php:
<?php // Inkludiert unsere Datei die sich um die Datenbankverbindung und die Abfragen kmmert include( 'include/funktionen.inc.php' ); include( 'include/stats.inc.php' ); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?php echo $metadaten['title']; // Titel der Seite ?></title> <meta name="keywords" content="<?php echo $metadaten['keywords']; // Meta-Tag Keywords ?>" /> <meta name="description" content="<?php echo $metadaten['description']; // Meta-Tag Beschreibung der Seite ?>" /> <meta name="author" content="<?php echo $metadaten['autor']; // Meta-Tag Autor der Seite ?>" /> <link href="notepress/np_template/layout/css/style.css" rel="stylesheet" type="text/css" media="screen"/> </head> <body> <!-- WRAPPER STARTS --> <div id="wrapper"> <div id="newsletter"><img border="0" alt="Post"><a href="#" target="_self">SUBSCRIBE<a></div> <div id="social_nav"> <ul class="social_menu"> <li> <a href="https://plus.google.com/u/0/108162942199369870167/about/p/pub" target="_blank" title="Google+" id="social_goog"></a> <a href="http://www.youtube.com/tonjongleur" target="_blank" title="YouTube" id="social_you"></a> <a href="http://www.soundcloud.com/tonjongleur" target="_blank" title="Soundcloud" id="social_sc"></a> <a href="http://www.twitter.com/tonjongleur" target="_blank" title="Twitter" id="social_twit"></a> <a href="http://www.facebook.com/tonjongleur" target="_blank" title="Facebook" id="social_fb"></a> </li> </ul> </div> <!-- HEADER START --> <div id="header"> <a href="../" target="_self" title="Tonjongleur"></a> </div> <!-- HEADER END --> <!-- NAVI START --> <div id="navi_container"> <ul id="navi_menu" class="navi_menu"> <li> <?php // Menu wird erzeugt if (is_array( $navi )) { for ($i = 0; $i < count( $navi['alias'] ); $i++) { echo '<a href="' .$navi['alias'][$i]. '.html">' .$navi['link_title'][$i]. "</a>\n"; } } ?> </li> </ul> </div> <!-- NAVI END --> <?php echo $artikel['inhalt']; // Gibt den Seiteninhalt aus ?> </div> <!-- WRAPPER ENDS--> </body> </html>
Hier der Code meiner function.inc.php:
<?php /* ************************************** */ /* *** Datenbankverbindung herstellen *** */ /* ************************************** */ { // Zum Server verbinden und die Resource ID in $conid ablegen $conid = @mysql_connect( $dbhost, $dbbenutzer, $dbpasswort ); // Bei erfolgreicher Verbindung die entsprechende Tabelle auswhlen if (is_resource( $conid ) && @mysql_select_db( $dbname, $conid) ) { // Resource ID in den ffentlichen Bereich zurckgeben return $conid; } else { // Falls keine Verbindung hergestellt werden konnte wird das Script beendet die( 'Es konnte keine Verbindung zur Datenbank hergestellt werden!' ); } } /* ********************************* */ /* *** Navigation-Links erzeugen *** */ /* ********************************* */ function navigation( $conid ) { // Prfen ob eine gltige Resource ID (geffnete DBverbindung) vorhanden ist if ($conid) { // Meneintrge auslesen $ergebnis = mysql_query( "SELECT `alias`, `link_title` FROM `np_navi` ORDER BY id ASC", $conid ); // Wenn etwas ausgelesen wurde ... if (@mysql_num_rows($ergebnis) > 0) { // ... werden die Informationen fr die Meneintrge in ein Array umgeladen while ($zeile = mysql_fetch_array( $ergebnis )) { $datensatz['alias'][] = $zeile['alias']; $datensatz['link_title'][] = $zeile['link_title']; } } else { // Wenn keine Datenstze fr das Men ausgelesen wurde, bricht das Script ab die( 'Es wurden keine Links fuer die Navigation gefunden!' ); } // Abfrageergebnis lschen und Speicher freigeben mysql_free_result( $ergebnis ); // Das Array mit den Informationen fr das Men in den ffentlichen Bereich zurckgeben return $datensatz; } } /* ********************** */ /* * METADATEN AUSLESEN * */ /* ********************** */ function metadaten( $conid ) { // Prfen ob eine gltige Resource ID (geffnete DBverbindung) vorhanden ist if ($conid) { // Meneintrge auslesen $ergebnis = mysql_query( "SELECT `title`, `author`, `keywords`, `description` FROM `np_meta`", $conid); // Wenn etwas ausgelesen wurde ... if (@mysql_num_rows($ergebnis) > 0) { // ... werden die Informationen fr die Meneintrge in ein Array umgeladen while ($zeile = mysql_fetch_array( $ergebnis )) { $datensatz['title'] = $zeile['title']; $datensatz['keywords'] = $zeile['keywords']; $datensatz['description'] = $zeile['description']; $datensatz['autor'] = $zeile['autor']; } } // Abfrageergebnis lschen und Speicher freigeben mysql_free_result( $ergebnis ); // Das Array mit den Informationen fr das Men in den ffentlichen Bereich zurckgeben return $datensatz; } } /* ********************* */ /* *** Artikel laden *** */ /* ********************* */ function artikel( $conid ) { // Die aufgerufene Adresse (z.B. http://www.domain.tld/ordner/dateiname.html) // wird am Slash (/) zerlegt und mittels array_pop() wird der letzte Teil des Array // (dateiname.html) abgetrennt und in der Variable $aufgerufene_url abgelegt. $array = explode( "/", $_GET['url'] ); $aufgerufene_url = array_pop($array); // Prft ob ein Dateiname aufgerufen wurde. // Ist kein Wert vorhanden, wurde die Index Datei oder eine unbekannte Datei aufgerufen. if (!isset( $aufgerufene_url ) || empty( $aufgerufene_url ) || strpos( $aufgerufene_url, '.html' ) === false ) { // Setzt manuell den Artikel Alias fr die Startseite $alias = "news"; } else { // Ist ein Wert vorhanden, haben wir hier eine Zeichenkette nach dem Muster von // z.B. dateiname.html // Diesen String zerlegen wir wieder mit explode am Punkt (.) aber diesmal // trennen wir den ersten Teil des Array ab, da sich darin unser bentigter Artikel Alias // befindet. array_shift() ist also das Gegenstck zu array_pop() $array = explode( ".", $aufgerufene_url ); $alias = array_shift($array); } // Datensatz aus der DB laden // Prfen ob eine gltige Resource ID (geffnete DBverbindung) vorhanden ist if ($conid) { // Artikel mit dem entsprechenden Alias auslesen $ergebnis = @mysql_query( "SELECT `inhalt` FROM `np_content` WHERE `alias` = '" .mysql_real_escape_string($alias). "'", $conid ); // Wurde exakt 1 Artikel gefunden ... if (@mysql_num_rows($ergebnis) == 1) { // ... werden die Artikel Informationen in einem Array abgelegt while ($zeile = mysql_fetch_array( $ergebnis )) { $datensatz['inhalt'] = $zeile['inhalt']; } } else { // Wurde kein Artikel in der DB gefunden, bricht das Script ab // Hier knnte man auch eine Fehlerseite ausgeben oder auf die Startseite umleiten die( 'Es wurde kein Artikel gefunden!' ); } // Abfrageergebnis lschen und Speicher freigeben mysql_free_result( $ergebnis ); // Array mit den Artikel Information in den ffentlichen Bereich zurckgeben return $datensatz; } } /* Datenbankverbindung ffnen */ $conid = dbconnect(); // Navigation laden $navi = navigation( $conid ); // METADATEN LADEN $metadaten = metadaten( $conid ); // CONTENT AUSLESEN $artikel = artikel( $conid ); ?>
Das ganze funktioniert einwandfrei. Habe auf meinem Server noch eine .htaccess liegen. Damit sieht die URL anstatt lalala.de/index.php?....... nun so aus lalala.de/news.html
Nun will ich das ein Standartcontent auf der Newsseite platziert wird:
Hier der Code aus dem Newssystem Tut der als Standartcontent dienen auf news.html dienen soll:
<?php include( 'notepress/np_system/inc/navigation.inc.php' ); // Sofern Kategorie angegeben if(isset($_GET['cat'])){ $where = "WHERE cat = '".clean_it($_GET['cat'])."'"; echo "<h2 class=\"blue\">Abgelegtes unter '".clean_it($_GET['cat'])."'</h2>"; $pfad = "news.php?cat=".urlencode(clean_it($_GET['cat']))."go="; }else{ $pfad = "news.php?go="; } // News auslesen $abfrage = mysql_query("SELECT id FROM np_posts ".$where.""); $total = mysql_num_rows($abfrage); // Anzahl aller Zeilen in DB ermitteln // ---------------------- Seitennavigationsdaten -------------------------------------------------- $per_page = "5"; // Anzahl der News die Pro Seite ausgegeben werden sollen $p = "5"; // Anzahl der Links die in der Seitenavigation ausgegeben werden isset($_GET['go']) ? $go = clean_it($_GET['go']) : $go = ''; // Variable definieren // Blaetterfunktion aufrufen list ($start, $ende) = get_navi($go, $total, $pfad, false, $per_page, $p); // ---------------------- ENDE Seitennavigationsdaten---------------------------------------------- $abfrage = mysql_query("SELECT id, autor, title, cat, news, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM np_posts ".$where." ORDER BY date DESC LIMIT $start,$ende"); // News ausgeben ausgeben while($row = mysql_fetch_object($abfrage)){ // Anzahl der Kommentare ermitteln $comments = mysql_query("SELECT id FROM np_comments WHERE news_id='$row->id'"); $com_num = mysql_num_rows($comments); // Anzahl der Kommentare echo "<div class=\"news\">\n"; echo "<h2>".$row->title."\n <small>verfasst von ".$row->autor." am ".$row->datum." | \n"; if(!empty($row->cat)){ // sofern Kategorie angegeben echo "abgelegt unter: <a href=\"news.php?cat=".urlencode($row->cat)."\">".$row->cat."</a> | \n"; } echo "<a href=\"comments.php?id=".$row->id."\">Kommentare ".$com_num."</a></small>\n </h2>"; if(isset($_GET['cat'])){ // Kategorieseite nur einen Auszug ausgeben $max_show = "250"; // max 450 Zeichen anzeigen if (strlen($row->news) > $max_show){ // sofern $news mehr als 450 Zeichen enthaelt echo "<p>".bbcode(substr($row->news, 0, strpos($row->news, ".", 120 )+1 ))."\n"; // Ab 150 Zeichen nach nem punkt suchen und alles das was davor enthalten ist ausgeben echo "<a href=\"comments.php?id=".$row->id."\" class=\"right\">read more...</a>\n"; echo "<br style=\"clear: right;\" /></p>"; // link ausgeben }else{ // komplett ausgeben echo $row->news); } }else{ echo $row->news); } echo "</div>\n"; } // close while // -------------------------------------- Seitennavigation ausgeben ---------------------------- get_navi($go, $total, $pfad, true, $per_page, $p); // -------------------------------------- Seitennavigation ende -------------------------------- ?>
AUF DEN PUNKT: ruft einer die seite auf kommt news.html auf der soll das aus dem Newssystem angezeigt werden klickt er auf einen andern Link soll der Content der Seite wechseln auf das was aus der content Tabelle (mysql) kommt.
Ich hoffe das ich das richtig erklrt habe und das nicht viel zu viel Code ist.
Bitte helft mir!!
LG selfmade
Der Beitrag wurde insgesamt 1 mal editiert, zuletzt 11.07.2013 um 09:48 Uhr ... -
09.07.2013 um 21:23 Uhr
Habs jetzt selber geschafft..man sollte eben doch mal in die php Manuals schauen und lernen
:::::::::: CLOSED ::::::::::
-
11.07.2013 um 09:49 Uhr
Hallo Selfmade,
freut mich, dass du es selbst hinbekommen hast!
Liebe Gruesse
Alice... { signatur } ...