Fragen zum News TutorialForum » Tutorials » Help » Fragen zum News Tutorial
-
intro
unregistriert11.03.2012 um 18:24 Uhr
Guten Tag,
ich habe drei Fragen bezglich des Newssystem Tutorials.
1. Ich wrde gerne einen Facebook gefllt mir Button auf meiner Website integrieren.
Nur wei ich nicht an welche Stelle der generierte Code<iframe src="http://www.facebook.com/plugins/like.php?href&send=false&layout=standard&width=300&show_faces=false&action=like&colorscheme=light&font&height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:300px; height:35px;" allowTransparency="true"></iframe
hin msste. Ich habe es schon versucht, den Code am Ende der News Div innerhalb der news.php zwischen den Zeilen 88 89 einzufgen - nur funktionierte dies nicht.
2. Auch wrde ich gerne die Kommentarfunktion des Scriptes hervorheben und daher die letzten drei Kommentare auf meiner Website anzeigen lassen, damit der User dann mittels Klick auf das Kommentar zu dem Newseintrag gelangt. Ich wollte mir das aus dem Adminbereich abschauen, aber leider reicht dafr mein PHP Verstndnis nicht aus.
3. Zu guter Letzt, wollte ich noch nach jedem Artikel die Anzahl der geschriebenen Kommentare ermitteln und man mittels Verlinkung zum Kommentarbereich der entsprechenden News gelangt (im Prinzip so wie die Darstellung der Anzahl der Kommentare im Header).
-
11.03.2012 um 19:35 Uhr
Hallochen,
zu 1. funktionierte nicht, ist keine Aussage mit der man wirklich etwas angangen kann
Probiers damit ...
Folgende Zeilen 88-91
} echo "</div>\n"; } // close while
Wie folgt aendern:
} echo "</div>\n"; ?> <iframe src="http://www.facebook.com/plugins/like.php?href&send=false&layout=standard&width=300&show_faces=false&action=like&colorscheme=light&font&height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:300px; height:35px;" allowTransparency="true"></iframe> <?php } // close while
Um die neusten Kommentare anzeigen zu lassen, einfach folgendes an beliebiger Stelle platzieren, wo es eben angezeigt werden soll ...
<?php $new_comi = mysql_query("SELECT id, name, comment, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM comments ORDER BY id DESC LIMIT 3"); echo "<ul class=\"list\">"; // News ausgeben ausgeben while($row_c = mysql_fetch_object($new_comi)){ echo "<li><strong>".$row_c->id.".</strong>"; echo substr($row_c->comment, 0, 80)." [..] <br />\n"; echo "<div class=\"right\">\n"; echo "<a href=\"edit_comments.php?id=".$row_c->id."\">Bearbeiten</a> \n"; echo "<a href=\"edit_comments.php?action=loeschen&id=".$row_c->id."\">[x]</a>\n"; echo "</div>\n "; echo "<small>".$row_c->name." » <span class=\"green\">".$row_c->datum."</span></small>\n"; echo "</li>\n"; } // close while echo "</ul>"; ?>
Und zu 3., von welcher Datei sprechen wir hier bitte, von der news.php, ja?
Dann sollte dir das hier weiter helfen:
echo "<a href=\"comments.php?id=".$row->id."\">Kommentare ".$com_num."</a>\n";
Liebe Gruesse
Alice... { signatur } ... -
intro
unregistriert11.03.2012 um 23:11 Uhr
Hallo Alice,
vielen Dank fr die schnelle Antwort zu meinen Fragen.
Bezogen auf die zweite Frage wollte ich gerne die Kommentare als Links ausgeben ohnne die Bearbeitungsfunktionen. Die Bearbeitungsfunktion habe ich nun einfach rausgelscht(siehe unten) nur wei ich nicht, wie der Code verndert werden msste, damit man ber das Kommentar zum entsprechnenden Newseintrag gelangen knnte.
<?php $new_comi = mysql_query("SELECT id, name, comment, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM comments ORDER BY id DESC LIMIT 3"); echo "<ul class=\"list\">"; // News ausgeben ausgeben while($row_c = mysql_fetch_object($new_comi)){ echo "<li><strong>".$row_c->id.".</strong>"; echo substr($row_c->comment, 0, 80)." [..] <br />\n"; echo "<small>".$row_c->name." » <span class=\"green\">".$row_c->datum."</span></small>\n"; echo "</li>\n"; } // close while echo "</ul>"; ?>
Gru
-
12.03.2012 um 12:54 Uhr
Ja sorry, gestern war ein langer Tag ...
Du musst die news_id mit abfragen, daraus kannst du dir dann einen Link zum Newseintrag basteln.
Ein Newseintrag ist immer unter comments.php?id=ID-DES-NEWSARTIKELS zu erreichen
<?php $new_comi = mysql_query("SELECT id, name, comment, news_id, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM comments ORDER BY id DESC LIMIT 3"); echo "<ul class=\"list\">"; //ausgeben while($row_c = mysql_fetch_object($new_comi)){ echo "<li><a href=\"comments.php?id=".$row_c->news_id."\">\n"; echo substr($row_c->comment, 0, 80)." [..]</a> <br />\n"; echo "<small>".$row_c->name." » <span class=\"green\">".$row_c->datum."</span></small>\n"; echo "</li>\n"; } // close while echo "</ul>"; ?>
... { signatur } ... -
intro
unregistriert12.03.2012 um 18:13 Uhr
Hey Alice,
nochmals danke. Es klappt jetzt alles wie ich mir das vorgestellt habe.
-
intro
unregistriert30.08.2012 um 23:16 Uhr
Guten Abend,
ich wrde gerne das Newssystem, fr ein Projekt, um ein drei Funktionen erweitern.
In MYSQL und PHP kenne ich mich leider nicht sonderlich aus, sodass ich Euch um Hilfe bitte.
I.Zum einen wrde ich gerne die zeitlich neusten Eintrge hervorheben. Hierzu habe ich im Internet folgenden Skriptschnipsel gefunden:
<? $result_query=mysql_query("SELECT * FROM {deinetabelle} limit 5"); while($eintrag=mysql_fetch_array($result_query)) { if($eintrag[time]>=time()-600){ // vor 10 min echo "<div style="color:red;font-wight:bold">$eintrag[text]</div>"; } elseif($eintrag[time]>=time()-3600){ // vor 1 h echo "<div style="color:red;">$eintrag[text]</div>"; else { // alles andere was lter als 1h ist echo $eintrag[text]"; } } ?>
Nur wei ich leider nicht, wie ich den Code verndert msste bzw. an welcher Stelle ich den Code innerhalb der News.php einfgen msste.
II.Auerdem wrde ich gerne im Bereich der Suchfunktion die gefundenen Treffer farbig markieren beispielsweise so:
.highlight { font-weight: bold; color: red; background: yellow; }
Nur wei ich wiederum nicht wie ich dieses innerhalb der suchen.php am besten umsezten knnte.
III .Zum Schluss wrde ich gerne fr den Administrationsbereich des Newssystems ein Besttigungsfenster einbauen, welches man vor dem Lschen von Newseintrgen und Kommentaren besttigen muss. Diese Funktion wurde bereits in dem Affiliates Manager umgesetzt:
} else { echo "<p class=\"error\">Ganz sicher loeschen?</p> \n"; echo "<a href=\"new_affi.php?action=loeschen&mode=del&id=$id\">Ja</a>"; echo " <a href=\"affis.php\">Nein</a>"; } }// close if ($action == "loeschen")
Wie knnte man diese Funktion auch in das Newssystem integrieren?
-
17.02.2013 um 10:32 Uhr
Hallo Intro,
zu 1. : Folgendes in der news.php bitte aendern:
// ---------------------- ENDE Seitennavigationsdaten---------------------------------------------- $abfrage = mysql_query("SELECT id, autor, title, cat, news, DATE_FORMAT(date, '%d.%m.%Y') AS datum, date AS sdate FROM news ".$where." ORDER BY date DESC LIMIT $start,$ende"); // News ausgeben ausgeben while($row = mysql_fetch_object($abfrage)){ if(strtotime($row->sdate) >= time()-600){ // vor 10 min echo "<div class=\"news\" style=\"border: 1px solid #000; color:red;font-weight:bold\"> \n"; }elseif(strtotime($row->sdate) >= time()-3600){ // vor 1 h echo "<div class=\"news\" style=\"color:red;\">\n"; }else { // alles andere was lter als 1h ist echo "<div class=\"news\">\n"; }// close div farbig // Anzahl der Kommentare ermitteln $comments = mysql_query("SELECT id FROM comments WHERE news_id='$row->id'"); $com_num = mysql_num_rows($comments); // Anzahl der Kommentare 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 "<p>".bbcode($row->news)."</p>"; } }else{ echo "<p>".bbcode($row->news)."</p>"; } echo "</div>\n"; } // close while // -------------------------------------- Seitennavigation ausgeben ----------------------------
Zu 2.: Aenderungen wie folgt umsetzten in der Datei suchen.php:
// Suchergebnisse ausgeben ausgeben while($row = mysql_fetch_object($abfrage)){ // Anzahl der Kommentare ermitteln $comments = mysql_query("SELECT id FROM 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>".substr($row->news, 0, strpos(search_mark(bbcode($row->news),$search), ".", 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 "<p>".search_mark(bbcode($row->news),$search)."</p>"; } }else{ echo "<p>".search_mark(bbcode($row->news),$search)."</p>"; } echo "</div>\n"; } // close while } // close DB gefunden }// close suchbegriff pruefen }// close submit gedrueckt
Und in die Config Datei bitte noch folgende Funktion einfuegen:
// Suche => gesuchtes in Text markieren function search_mark($text, $suchwort){ $suchwort = explode(" ",$suchwort); foreach($suchwort as $search_str) { $text = preg_replace("/($search_str)/i", "<span class='highlight'>$search_str</span>", $text); } return $text; }
Nicht vergessen die highlight class in die Css Datei einzutragen!
Und zum Schluss nun noch zu 3.: Dazu die post_news.php wie folgt veraendern:
//------------------------------------------------------------------------------ // Newseintrag loeschen //------------------------------------------------------------------------------ isset($_GET['action']) ? $action = clean_it($_GET['action']) : $action = ''; // Variable definieren isset($_GET['mod']) ? $mod = clean_it($_GET['mod']) : $mod = ''; // Variable definieren if($action == 'loeschen'){ if($mod == 'del'){ // Artikel loeschen $delete = mysql_query("DELETE FROM news WHERE id='$id'"); // Kommentare zu diesem Artikel loeschen $delete_com = mysql_query("DELETE FROM comments WHERE news_id='$id'"); if($delete AND $delete_com){ // Wenn Loeschung nicht erfolgt header("Location: admin.php"); // Weiterleitung }else{ // Wenn Eintrag nicht geloescht wurde => Fehlermeldung echo get_error('Der Eintrag konnte leider nicht geloescht werden! ".mysql_error()."'); }// close del } else { echo "<div class=\"error\"><h2>Sicher?</h2>\n"; echo "<p>Bist du dir sicher, dass du diesen Beitrag loeschen moechtest?</p>\n"; echo "<a href=\"admin.php\" class=\"the_button right\">Nein, lieber doch nicht...</a>\n"; echo "<a href=\"post_news.php?action=loeschen&mod=del&id=$id\" class=\"the_button\">Ja, loeschen!</a>\n</div>"; } } //------------------------------------------------------------------------------ // Formular auswerten //------------------------------------------------------------------------------
Liebe Gruesse
Alice
Der Beitrag wurde insgesamt 1 mal editiert, zuletzt 18.02.2013 um 17:52 Uhr ...... { signatur } ...