Seite 1 von 2
Online-Anzeige Pcpin Chat / Parse Error
Verfasst: 27.03.2008 21:23
von tomtom
Hallo,
mittels einer Datei info.php mit dem Inhalt
Code: Alles auswählen
<html> <head> <title>Chatonline</title> </head> <body> <?php $MYSQL_HOST = "xxx"; /* einfach so stehen lassen */ $MYSQL_USER = "xxx"; /* dein db-benutzername */ $MYSQL_PW = "txxx"; /* dein db-passwort */ $MYSQL_DB = "uxxx_1"; /* name der db vom chat */ $conn = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PW); mysql_select_db($MYSQL_DB, $conn); $i = 0; $user_raum = mysql_query("SELECT * FROM `pcpin_nickname`, `pcpin_room`, `pcpin_session` WHERE pcpin_nickname.default = 'y' AND _s_room_id = pcpin_room.id AND _s_user_id = user_id ORDER BY name ASC, nickname_plain ASC; "); $user_count = mysql_query("SELECT * FROM `pcpin_session` WHERE _s_online_status != ''; "); while($row = mysql_fetch_assoc($user_count)) { $i++; } echo "<tr><td align='left' <font face='verdana' size='1' color='#000000'><b><br>im Chat:</b> "; while($row = mysql_fetch_assoc($user_raum)) { echo htmlspecialchars($row[nickname_plain]); echo ","; } echo "</font></div></td></tr></table>"; ?> </body> </html>
wird per Iframe
Code: Alles auswählen
<iframe src="http://www.DeinServer.de/DieDatei.php" width="230px" height="230px" scrolling="no" marginheight="0" marginwidth="0" frameborder="0"></iframe>
eine Onlineliste der User geliefert.
Frage1: Kann mit jmd. sagen, wie ich es hinbekommen, dass in der Anzeige nach allen z.b. 5 Usern ein Zeilenumbruch erzwungen wird?
"User1, User2, User3, User4, User5,
User6, User7, User8, User9 User10"
Frage 2: Die Anzeige im Firefox ist so wie sie soll:
[ externes Bild ]
Im IE jeodch weniger (Schrift, weißer Hintergrund):
[ externes Bild ]
Wer kann helfen, das anzupassen?
Danke!
Verfasst: 30.03.2008 21:27
von tomtom
*schieb*
Frage 1 kann doch sicher jeder PHP Profi beantworten oder?
Verfasst: 30.03.2008 22:02
von Mavo460
Nicht getestet aber sollte funktionieren:
Code: Alles auswählen
<html>
<head>
<title>Chatonline</title>
</head>
<body>
<?
$MYSQL_HOST = "xxx"; /* einfach so stehen lassen */
$MYSQL_USER = "xxx"; /* dein db-benutzername */
$MYSQL_PW = "txxx"; /* dein db-passwort */
$MYSQL_DB = "uxxx_1"; /* name der db vom chat */
$conn = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PW);
mysql_select_db($MYSQL_DB, $conn);
$i = 0;
$user_raum = mysql_query("SELECT * FROM `pcpin_nickname`, `pcpin_room`, `pcpin_session` WHERE pcpin_nickname.default = 'y' AND _s_room_id = pcpin_room.id AND _s_user_id = user_id ORDER BY name ASC, nickname_plain ASC; ");
$user_count = mysql_query("SELECT * FROM `pcpin_session` WHERE _s_online_status != ''; ");
while($row = mysql_fetch_assoc($user_count)) { $i++; }
echo "<tr><td align='left' <font face='verdana' size='1' color='#000000'><b><br>im Chat:</b> ";
while($row = mysql_fetch_assoc($user_raum)) { echo htmlspecialchars($row[nickname_plain]); echo ","; } if ($i % 5 == 0) {
echo '<br>';
} echo "</font></div></td></tr></table>";
?>
</body>
</html>
Warum bindest du das ganze allerdings per iframe ein? Ist doch einfacher wenn du das in die index.php selbst mit einbindest vorrausgesetzt der Chat läuft auf dem gleichen Server wie das Forum
MfG Marco
Verfasst: 30.03.2008 22:10
von tomtom
Hm. dieser Code
Code: Alles auswählen
<html> <head> <title>Chatonline</title> </head> <body><body style="background-color:#EFEFEF"> <?php $MYSQL_HOST = "xxx"; /* einfach so stehen lassen */ $MYSQL_USER = "xxx"; /* dein db-benutzername */ $MYSQL_PW = "xxx"; /* dein db-passwort */ $MYSQL_DB = "xxx"; /* name der db vom chat */ $conn = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PW); mysql_select_db($MYSQL_DB, $conn); $i = 0; $user_raum = mysql_query("SELECT * FROM `pcpin_nickname`, `pcpin_room`, `pcpin_session` WHERE pcpin_nickname.default = 'y' AND _s_room_id = pcpin_room.id AND _s_user_id = user_id ORDER BY name ASC, nickname_plain ASC; "); $user_count = mysql_query("SELECT * FROM `pcpin_session` WHERE _s_online_status != ''; "); while($row = mysql_fetch_assoc($user_count)) { $i++; } echo "<tr><td align='left'><font face='verdana' size='1' color='#000000'><b><br>im Chat:<br></b> "; while($row = mysql_fetch_assoc($user_raum)) { echo htmlspecialchars($row[nickname_plain]); echo ","; } if ($i % 2 == 0) {
echo '<br>';} echo "</font></div></td></tr></table>"; ?> </body> </html>
läuft leider nicht. Hatte jetzt mal testweise 2 eingestellt.
Noch eine Idee?
Wenn nicht per Iframe, wie dann?
Den Inhalt des includeten Datei in die index.php und Ausgabe in der index_body.tpl?
Verfasst: 30.03.2008 22:59
von Mavo460
Ändere den Rest ab der while schleife in folgendes:
Code: Alles auswählen
while($row = mysql_fetch_assoc($user_raum))
{
$i++;
echo htmlspecialchars($row[nickname_plain]);
echo ",";
if ($i % 5 == 0) {
echo '<br>';
}
}
echo "</font></div></td></tr></table>";
ich hatte vergessen den zeilenumbruch in die while schleife zu packen. Testen kann ich es leider nicht so richtig da ich keine abfrage mit dem kram auf die schnelle zusammen gebaut habe. Grundsätzlich ist aber
der punkt wo nach 5 inhalten ein zeilenumbruch gemacht wird.
Zu deiner anderen Frage: Ja ich würde wenn beides auf einem Server liegt in die index.php bauen, also den Code der Chat abfrage und dann eben über das template an die index_body.tpl übergeben

Dann kannst du auch dadurch das css nutzen
MfG Marco
Verfasst: 30.03.2008 23:42
von tomtom
Danke der Umbruch scheint zu tun.
Kannst du mir bitte sagen, was ich aus der ursprünglichen includeten Datei weglassen kann? Und wo baue ich in der index.php das ein?
Verfasst: 31.03.2008 01:59
von Mavo460
Das Funktioniert allerdings nur wenn der Chat auf dem gleichen Serverliegt wie das Forum und auch die DB die gleiche ist wie die in welchem das Forum liegt. Ansonsten eben noch die db-verbindung includieren.
öffne index.php und suche:
füge darüber ein:
Code: Alles auswählen
$chat_user_online_anzeigen = 1;
if ($chat_user_online_anzeigen = 1){
$i = 0;
$user_count = mysql_query("SELECT * FROM `pcpin_session` WHERE _s_online_status != ''; ");
while($row = mysql_fetch_assoc($user_count)) { $i++; }
$sql = 'SELECT * FROM `pcpin_nickname`, `pcpin_room`, `pcpin_session` WHERE pcpin_nickname.default = 'y' AND _s_room_id = pcpin_room.id AND _s_user_id = user_id ORDER BY name ASC, nickname_plain ASC';
$result = $db->sql_query($sql);
while( $row = $db->sql_fetchrow($result) )
{
$chatusername .= htmlspecialchars($row['nickname_plain']) . ', ';
$chatusernamen = $test;
}
$chatuserzahl = $i;
}
suche:
Code: Alles auswählen
'NEWEST_USER' => sprintf($lang['Newest_user'], '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$newest_uid") . '">', $newest_user, '</a>'),
füge darunter ein:
Code: Alles auswählen
'CHATUSERZAHL => sprintf($chatuserzahl),
'CHATUSERNAMEN' => sprintf($chatusernamen),
öffne index_body.tpl
suche:
Code: Alles auswählen
<tr>
<td class="row1" align="center" valign="middle" rowspan="2">
und erhöhe rowspan um 1. rowspan kann auch mehr sein bei mehr spalten und muss entsprechend erhöht werden um 1
suche
Code: Alles auswählen
<tr>
<td class="row1" align="left"><span class="gensmall">{TOTAL_USERS_ONLINE} [ {L_WHOSONLINE_ADMIN} ] [ {L_WHOSONLINE_MOD} ]<br />{RECORD_USERS}<br />{LOGGED_IN_USER_LIST}</span></td>
</tr>
füge darunter ein:
Code: Alles auswählen
<tr>
<td class="row1" align="left"><span class="gensmall">Es befinden sich zur Zeit <b>{CHATUSERZAHL}</b> User im Chat<br>Folgende User sind im Chat: <b>{CHATUSERNAMEN}</b></span></td>
</tr>
Es handelt sich entsprechend bei den templates um das des subSilver. Bei einem anderen musst du das entsprechend anpassen. Ich habe den Zeilen umbruch nach 5 Usern rausgenommen da es im Forum selbst nicht so gut ausschaut. Ich würde es dann weiterhin hintereinander lassen die Usernamen.
Ich habe das ein wenig getestet. Funktionsgarantie gebe ich aber keine helfe aber gern weiter
MfG Marco
Verfasst: 31.03.2008 12:36
von tomtom
Danke ... aber der Code
Code: Alles auswählen
$chat_user_online_anzeigen = 1;
if ($chat_user_online_anzeigen = 1){
$i = 0;
$user_count = mysql_query("SELECT * FROM `pcpin_session` WHERE _s_online_status != ''; ");
while($row = mysql_fetch_assoc($user_count)) { $i++; }
$sql = 'SELECT * FROM `pcpin_nickname`, `pcpin_room`, `pcpin_session` WHERE pcpin_nickname.default = 'y' AND _s_room_id = pcpin_room.id AND _s_user_id = user_id ORDER BY name ASC, nickname_plain ASC';
$result = $db->sql_query($sql);
while( $row = $db->sql_fetchrow($result) )
{
$chatusername .= htmlspecialchars($row['nickname_plain']) . ', ';
$chatusernamen = $test;
}
$chatuserzahl = $i;
}
verursacht einen Fehler:
Parse error: syntax error, unexpected T_STRING in /home/www/p172/html/forum/index.php on line 66
Zeile 66:
Code: Alles auswählen
$sql = 'SELECT * FROM `pcpin_nickname`, `pcpin_room`, `pcpin_session` WHERE pcpin_nickname.default = 'y' AND _s_room_id = pcpin_room.id AND _s_user_id = user_id ORDER BY name ASC, nickname_plain ASC';
Verfasst: 31.03.2008 12:57
von Mavo460
Moin,
tausch die SQL Zeile mal gegen diese aus:
Code: Alles auswählen
$sql = 'SELECT * FROM `pcpin_nickname`, `pcpin_room`, `pcpin_session` WHERE pcpin_nickname.default = "y" AND _s_room_id = pcpin_room.id AND _s_user_id = user_id ORDER BY name ASC, nickname_plain ASC';
Das einzige was ich geändert habe war das
MfG MArco
Verfasst: 31.03.2008 13:09
von tomtom
Ok der Fehler ist weg, danke.
Nur wird leider kein Name angezeigt, auch wenn jmd. im Chat ist:
Es befinden sich zur Zeit 1 User im Chat
Folgende User sind im Chat: