stinknormaler Ticker mit Schleife

Status
Nicht offen für weitere Antworten.
du musst mir nochmal helfen. Ich hab es jetzt probiert, aber das funktioniert nicht. Das was ich da durchlaufen lassen möchte, wird in die Seite per PHP include eingebettet und ist ein dynamisches Script. Durch dieses Script werden automatisch die neuesten Forenbeiträge angezeigt. Unddas will ich halt durchlaufen lassen.

Gibt es da nicht eine Möglichkeit, im Head mit Java Script eine Funktion zu schreiben, welche ich dann um diesen Include Befehl lege?

ALso sprich so:

<head>
<script type="text/javascript">

function = durchlaufen_der_eingebetteten_Datei()
{
}
</script>
</head>
<body>

<?php include("datei.php");?> und hierum die Funktion

</body>


Hoffe du kannst mir helfen.
 
Mmmh...meine Kristallkugel sitzt grad im Biergarten:-)

Wie sieht denn das Skript aus, welches die neuesten Beiträge anzeigen soll?

In den Head der Seite muss nix(zumindest, was den Ticker betrifft).
 
PHP:
<?php
// ############ Edit below ###############################
$length = '25'; // length of topic title
$limit = '5'; // how many topics?
$l_recent = '';
$l_started = 'erstellt am';
$l_by = 'von';
$special_forums = '0'; // 0 = no; 1 = yes
$forums = '1,2,3'; // ID of forums; separate them with a comma
$css = 'http://www.your_domain.com/forum/templates/name/name.css'; //path and name to your css_sheet - optional
// ############ Edit above ###############################

define('IN_PHPBB', true);
$phpbb_root_path = 'phpBB/'; // board folder with! ending mark (if in same folder just './')
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

@$userdata = session_pagestart($user_ip, PAGE_INDEX);
@init_userprefs($userdata);

// #### html output ####
echo "<link rel=\"stylesheet\" href=\"$css\" type=\"text/css\">"; // - optional
echo "<table width=\99%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" class=\"forumline\">";
// #### html output ####

$sql = "SELECT post_id FROM ". POSTS_TABLE;
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not obtain matched posts list.', '', __LINE__, __FILE__, $sql);
}
$recent_ids = array();
while( $row = $db->sql_fetchrow($result) )
{
	$recent_ids[] = $row['post_id'];
}
$db->sql_freeresult($result);

$recent_forum = ( isset($HTTP_POST_VARS['forum']) ) ? intval($HTTP_POST_VARS['forum']) : -1;
if ( $recent_forum == -1 )
{
        $is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata); 
        $ignore_forum_sql = '';
        while( list($key, $value) = each($is_auth_ary) )
        {
                if ( !$value['auth_read'] )
                {
                        $ignore_forum_sql .= ( ( $ignore_forum_sql != '' ) ? ', ' : '' ) . $key;
                }
        }
        if ( $ignore_forum_sql != '' )
        {
                $auth_sql .= ( $auth_sql != '' ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) ";
        }
}
if ( $recent_author == '' && $auth_sql == '' )
{
        $sql = "SELECT topic_id FROM ". POSTS_TABLE ."
                   WHERE post_id IN (" . implode(", ", $recent_ids) . ") 
                   $where_sql GROUP BY topic_id";
}
else
{
        $from_sql = POSTS_TABLE ." p"; 
        if ( $auth_sql != '' )
        {
                $from_sql .= ", ". FORUMS_TABLE ." f";
                $where_sql .= " AND f.forum_id = p.forum_id AND $auth_sql";
        }
        $sql = "SELECT p.topic_id FROM $from_sql 
                   WHERE p.post_id IN (" . implode(", ", $recent_ids) . ") 
                   $where_sql GROUP BY p.topic_id";
}
if ( !($result = $db->sql_query($sql)) )
{
        message_die(GENERAL_ERROR, 'Could not obtain topic ids', '', __LINE__, __FILE__, $sql);
}

$recent_ids = array();
while( $row = $db->sql_fetchrow($result) )
{
        $recent_ids[] = $row['topic_id'];
}
$db->sql_freeresult($result);

$auth_results = implode(', ', $recent_ids);
$where_part1 = ( $special_forums == '0' ) ? 't.topic_id IN ('.$auth_results.')' : 'f.forum_id IN ('.$forums.')';

$sql = "SELECT t.*, f.forum_id, f.forum_name, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time 
           FROM ". TOPICS_TABLE ." t, ". FORUMS_TABLE ." f, ". USERS_TABLE ." u, ". POSTS_TABLE ." p, ". POSTS_TABLE ." p2, ". USERS_TABLE ." u2
           WHERE $where_part1 
                      AND t.topic_poster = u.user_id
                      AND f.forum_id = t.forum_id 
                      AND p.post_id = t.topic_first_post_id
                      AND p2.post_id = t.topic_last_post_id
                      AND u2.user_id = p2.poster_id
           ORDER BY t.topic_last_post_id DESC LIMIT $limit";
if ( !$result = $db->sql_query($sql) )
{
        message_die(GENERAL_ERROR, 'Could not obtain main information', '', __LINE__, __FILE__, $sql);
}
$line = array();
while( $row = $db->sql_fetchrow($result) )
{
        $line[] = $row;
}
$db->sql_freeresult($result);		
		
$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();
for($i = 0; $i < count($line); $i++)
{
        $forum_url = append_sid("viewforum.$phpEx?" . POST_FORUM_URL . '=' . $line[$i]['forum_id']);
        $forum_id = $line[$i]['forum_id'];
        $topic_url = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $line[$i]['topic_id']);
        $topic_id = $line[$i]['topic_id'];

        $orig_word = array();
        $replacement_word = array();
        obtain_word_list($orig_word, $replacement_word);
        $word_censor = ( count($orig_word) ) ? preg_replace($orig_word, $replacement_word, $line[$i]['topic_title']) : $line[$i]['topic_title']; 
        $topic_title = ( strlen($line[$i]['topic_title']) < $length ) ? $word_censor : substr(stripslashes($word_censor), 0, $length) . "..."; 

        $topic_type = ( $line[$i]['topic_type'] == POST_ANNOUNCE ) ? $lang['Topic_Announcement'] .' ': '';
        $topic_type .= ( $line[$i]['topic_type'] == POST_GLOBAL_ANNOUNCE ) ? $lang['Topic_global_announcement'] .' ': '';
        $topic_type .= ( $line[$i]['topic_type'] == POST_STICKY ) ? $lang['Topic_Sticky'] .' ': '';
        $topic_type .= ( $line[$i]['topic_vote'] ) ? $lang['Topic_Poll'] .' ': '';

        $views = $line[$i]['topic_views'];
        $replies = $line[$i]['topic_replies'];
        if ( ( $replies + 1 ) > $board_config['posts_per_page'] )
        {
                $total_pages = ceil( ( $replies + 1 ) / $board_config['posts_per_page'] );
                $goto_page = ' [ ';
                $times = 1;
                for($j = 0; $j < $replies + 1; $j += $board_config['posts_per_page'])
                {
                        $goto_page .= '<a href="' . append_sid("".$phpbb_root_path."viewtopic.$phpEx?" . POST_TOPIC_URL . "=" . $topic_id . "&amp;start=$j") . '" >' . $times . '</a>';
                        if ( $times == 1 && $total_pages > 4 )
                        {
                                $goto_page .= ' ... ';
                                $times = $total_pages - 3;
                                $j += ( $total_pages - 4 ) * $board_config['posts_per_page'];
                        }
                        else if ( $times < $total_pages )
                        {
                                $goto_page .= ', ';
                        }
                        $times++;
                }
                $goto_page .= ' ] ';
        }
        else
        {
                $goto_page = '';
        }

        if ( $line[$i]['topic_status'] == TOPIC_LOCKED )
        {
                $folder = $images['folder_locked'];
                $folder_new = $images['folder_locked_new'];
        }
        else if ( $line[$i]['topic_type'] == POST_ANNOUNCE )
        {
                $folder = $images['folder_announce'];
                $folder_new = $images['folder_announce_new'];
        }
        else if ( $line[$i]['topic_type'] == POST_GLOBAL_ANNOUNCE )
        {
                $folder = $images['folder_global_announce'];
                $folder_new = $images['folder_global_announce_new'];
        }
        else if ( $line[$i]['topic_type'] == POST_STICKY )
        {
                $folder = $images['folder_sticky'];
                $folder_new = $images['folder_sticky_new'];
        }
        else
        {
                if ( $replies >= $board_config['hot_threshold'] )
                {
                        $folder = $images['folder_hot'];
                        $folder_new = $images['folder_hot_new'];
                }
                else
                {
                        $folder = $images['folder'];
                        $folder_new = $images['folder_new'];
                }
        }

        if ( $userdata['session_logged_in'] )
        {
                if ( $line[$i]['post_time'] > $userdata['user_lastvisit'] ) 
                {
                        if ( !empty($tracking_topics) || !empty($tracking_forums) || isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
                        {
                                $unread_topics = true;
                                if ( !empty($tracking_topics[$topic_id]) )
                                {
                                        if ( $tracking_topics[$topic_id] > $line[$i]['post_time'] )
                                        {
                                                $unread_topics = false;
                                        }
                                }
                                if ( !empty($tracking_forums[$forum_id]) )
                                {
                                        if ( $tracking_forums[$forum_id] > $line[$i]['post_time'] )
                                        {
                                                $unread_topics = false;
                                        }
                                }
                                if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
                                {
                                        if ( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] > $line[$i]['post_time'] )
                                        {
                                                $unread_topics = false;
                                        }
                                }
                                if ( $unread_topics )
                                {
                                        $folder_image = $folder_new;
                                        $folder_alt = $lang['New_posts'];
                                        $newest_img = '<a href="' . append_sid("".$phpbb_root_path."viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&amp;view=newest") . '"><img src="'.$phpbb_root_path.$images['icon_newest_reply'] . '" alt="' . $lang['View_newest_post'] . '" title="' . $lang['View_newest_post'] . '" border="0" /></a> ';
                                }
                                else
                                {
                                        $folder_alt = ( $line[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['No_new_posts'];
                                        $folder_image = $folder;
                                        $folder_alt = $folder_alt;
                                        $newest_img = '';
                                }
                        }
                        else if ( $line[$i]['post_time'] > $userdata['user_lastvisit'] ) 
                        {
                                $folder_image = $folder_new;
                                $folder_alt = $lang['New_posts'];
                                $newest_img = '<a href="' . append_sid("".$phpbb_root_path."viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&amp;view=newest") . '"><img src="'. $phpbb_root_path.$images['icon_newest_reply'] . '" alt="' . $lang['View_newest_post'] . '" title="' . $lang['View_newest_post'] . '" border="0" /></a> ';
                        }
                        else 
                        {
                                $folder_image = $folder;
                                $folder_alt = ( $line[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['No_new_posts'];
                                $newest_img = '';
                        }
                }
                else
                {
                        $folder_image = $folder;
                        $folder_alt = ( $line[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['No_new_posts'];
                        $newest_img = '';
                }
        }
        else
        {
                $folder_image = $folder;
                $folder_alt = ( $line[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['No_new_posts'];
                $newest_img = '';
        }
			
        $forum_name = $line[$i]['forum_name'];

        $first_time = create_date($board_config['default_dateformat'], $line[$i]['topic_time'], $board_config['board_timezone']);
        $first_author = ( $line[$i]['user_id'] != ANONYMOUS ) ? '<a href="' . append_sid("".$phpbb_root_path."profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . '='  . $line[$i]['user_id']) . '" class="genmed">'.$line[$i]['username'].'</a>' : ( ($line[$i]['post_username'] != '' ) ? $line[$i]['post_username'] : $lang['Guest'] ); 
        $last_time = create_date($board_config['default_dateformat'], $line[$i]['post_time'], $board_config['board_timezone']);
        $last_author = ( $line[$i]['id2'] == ANONYMOUS ) ? ( ($line[$i]['post_username2'] != '' ) ? $line[$i]['post_username2'] . ' ' : $lang['Guest'] . ' ' ) : '<a href="' . append_sid("".$phpbb_root_path."profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . '='  . $line[$i]['id2']) . '" class="genmed">' . $line[$i]['user2'] . '</a>';
        $last_url = '<a href="'. append_sid("".$phpbb_root_path."viewtopic.$phpEx?"  . POST_POST_URL . '=' . $line[$i]['topic_last_post_id']) . '#' . $line[$i]['topic_last_post_id'].'"><img src="'. $phpbb_root_path.$images['icon_latest_reply'].'" alt="'.$lang['View_latest_post'].'" border="0" /></a>';

        $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

        // #### html output ####
		
		echo "<tr><td><br><br></td></tr>";
		echo "<tr><td><strong>Forum:</strong></td></tr>";
		echo " <tr><td class=\"$row_class\"><a href=\"$phpbb_root_path$forum_url\" class=\"genmed\" target=\"_blank\"><strong>$forum_name</strong></a></td></tr>";
		echo "<tr><td><strong>Thema:</strong></td></tr>";
		echo "<tr><td class=\"$row_class\"><span class=\"topictitle\">$newest_img $topic_type<a href=\"$phpbb_root_path$topic_url\" class=\"topictitle\" target=\"_blank\">$topic_title</a></span>
                 <font size=\"-6\">$goto_page<br /> $l_started $first_time $l_by $first_author</font></td></tr>";
		echo "<tr><td><strong>letzte Anwort:</strong></td></tr>";
		echo "<tr><td class=\"$row_class\" align=\"left\" valign=\"middle\" nowrap=\"nowrap\"><span class=\"gensmall\"> $last_url $last_time&nbsp;<br />$last_author</span>&nbsp;&nbsp;</td></tr>";
		
	

        // #### html output ####
}

// #### html output ####
echo "</table>";
// #### html output ####
?>

Das ist das gesamte Script. Ist ein Mod speziell zum phpBB.
 
Du packst das Javascript dorthin in die Seite, wo der Ticker ersscheinen soll.

Dann ersetzt du im JS-Code alle Zeilen, welche mit "tNews.push" beginnen, durch das PHP-Skript.

Das PHP-Skript musst du dann noch etwas anpassen...

Die beiden Passagen mit
Code:
// #### html output ####
echo "<link rel=\"stylesheet\" href=\"$css\" type=\"text/css\">"; // - optional
echo "<table width=99%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" class=\"forumline\">";
// #### html output ####

....und

// #### html output ####
echo "</table>";
// #### html output ####
....löschst du aus dem PHP-Code.

Dann musst du das PHP-Skript noch ein wenig umschreiben, dass es den HTML-Code, welchen es derzeit in Tabellenzellen schreibt, als String in den JS-Array schreibt:
...für jedes Posting...a la
Code:
echo "tNews.push('$ausgabestring');";

Du musst nur drauf achten, dass der Ausgabestring wie bereits erwähnt keine Single-Quotes.... und des Weiteren auch keine Zeilenumbrüche enthält.
 
Muss ich das PHP Scrip extra kennzeichnen, oder soll ich das ohne <?php ?> rein setzen?

Und den letzten Abschnitt wegen Ausgabestring versteh ich auch nicht. Weiß ni, was ich da machen soll.
 
Zuletzt bearbeitet:
das PHP-Skript musst du natürlich mit <?php ..?> kennzeichnen.

Es muss, wenn es fertig ist, soetwas ausgeben(pro Beitrrag):
Code:
tNews.push('irgendein Text');
...ein Minimum an PHP-Kenntnissen sollten dafür allerdings schon vorhanden sein.
 
und irgendein Text ist in dem Falle der Link z.B. der zum entsprechenden Forum führt, oder?
 
wenn ich alles so mache, wie du mir sagst, dann kommt eine Fehlermeldung, die mit dem template des Forums zusammenhängt.

Fatal error: Cannot redeclare class template in /home/www/web6/html/phpBB/includes/template.php on line 30

So sieht jetzt das Script aus, welches ich per include einbette:
PHP:
		echo "tNews.push('')";
		echo "tNews.push('<strong>Forum:</strong>')";
		echo "tNews.push('<div class=\"$row_class\"><a href=\"$phpbb_root_path$forum_url\" class=\"genmed\" target=\"_blank\"><strong>$forum_name</strong></a></div>')";
		echo "tNews.push('<strong>Thema:</strong>')";
		echo "tNews.push('<div class=\"$row_class\"><span class=\"topictitle\">$newest_img $topic_type<a href=\"$phpbb_root_path$topic_url\" class=\"topictitle\" target=\"_blank\">$topic_title</a></span>
                 <font size=\"-6\">$goto_page')";
		echo "tNews.push('$l_started $first_time $l_by $first_author</font></div>')";
		echo "tNews.push('<strong>letzte Anwort:</strong>')";
		echo "tNews.push('div class=\"$row_class\" align=\"left\" nowrap=\"nowrap\"><span class=\"gensmall\"> $last_url $last_time&nbsp')";
		echo "tNews.push('$last_author</span>&nbsp;&nbsp;</div>')";

Die Zeilen mit output hab ich rausgenommen.

Das JavaScript sieht so aus:
Code:
<script type="text/javascript">
<!--
/* * * * * * * * * * * * * * * * D I E  V A R I A B L E N * * * * * * * * * * * * * * * * * */
tNews=new Array();

//°°°°°°°°°°Die News

tNews=new Array();
<?php include ("recent.php");?>

//°°°°°°°°°°Laufrichtung(up,down,left,right)
strDir      ='up';

//°°°°°°°°°°Delimiter zwischen den einzelnen News(nur bei left/right)
strDelimiter=' + + + ';
...
 
Zuletzt bearbeitet:
Alarm zurück: Die Fehleranzeige kam daher, dass ich unter dem JavaScript noch mal die selbe Datei eingebettet habe. Nun habe ich dies rausgenommen und die Fehleranzeige ist weg.

Allerdings durchläuft noch immer nichts. Es ist nichts von einem Durchlauf zu sehen.
 
Status
Nicht offen für weitere Antworten.
Zurück