Zur Boardunity Forenstartseite
  #1  
Alt 03.05.2004, 20:03
Benutzerbild von Jan Stöver
Boardunity Team
 
Registriert seit: 12.2003
Ort: Lübeck
Beiträge: 2.326

Ein Problem mit Funktion und Platzhalter


Mhhh ... irgendwie ... ich weiss auch nicht.

Ich möchte auf einer nicht vB Seite die Online Nutzer (Mitglieder und Gäste) anzeigen lassen.

Die nicht vB Seite ist im Templateverfahren mit Platzhaltern für Funktionen aufgebaut ( {blablub} )

Im Template habe ich den Halter {whoson} ... dieser ist in der index.php wie folgt definiert:

Code:
if(strpos($strs,"{whoson}")>1)$tpl->Insert("{whoson}", board_online());

Die Funktion board_online schaut wie folgt aus und befindet sich in der functions.php


Code:
function board_online()
{
require_once("../**/online_extern.php"); 
}

Der Code aus der online_extern.php sieht so aus


Code:
<?php

error_reporting(E_ALL & ~E_NOTICE);

require_once("./includes/config.php");

function iif($expression, $returntrue, $returnfalse = '') {
	return ($expression ? $returntrue : $returnfalse);
}

mysql_connect($servername,$dbusername,$dbpassword);
mysql_select_db($dbname);

$showusernames = 0; // 1 um Usernamen anstelle der Anzal auszugeben

$settings = mysql_query("SELECT * FROM ".$tableprefix."setting WHERE varname = 'cookietimeout'");
$settings = mysql_fetch_array($settings);

$datecut = time()-$settings['value'];

if ($showusernames == 1)
{
	$regmembers = mysql_query("SELECT DISTINCT username,options FROM ".$tableprefix."user,".$tableprefix."session 
		WHERE ".$tableprefix."session.userid=".$tableprefix."user.userid AND ".$tableprefix."session.lastactivity>$datecut 
		ORDER BY username ASC") or exit("oops2");
		
	while($regmember = mysql_fetch_array($regmembers))
	{
		$regmember['options'] = intval($regmember['options']);
		
		foreach($regmember as $optionname => $optionval)
		{
			$regmember["$optionname"] = iif($regmember['options'] & $optionval, 1, 0);
		}
		
		if ((($regmember['invisible'] == 0)) and $regmemberson or ($bbuserinfo['usergroupid'] == 6 and $regmember['invisible'] == 1))
		{
			$regmemberson .= ", ";
		}
	
		$regmembercomma++;
		if ($regmember['invisible'] == 0 or $bbuserinfo['usergroupid'] == 6) {
			if ($regmember['invisible'] == 1) {
				$userinvisible = "*";
			}
						
			$regmemberson .= $regmember['username'].$userinvisible;
		} else {
			$regmembercomma++;
		}
	}
	
	if (!$regmemberson)
	{
		$regmemberson = "(none)";
	}
		
} else {
	$regmembers = mysql_query("SELECT COUNT(DISTINCT userid) AS membersonline FROM ".$tableprefix."session WHERE userid>0 AND ".$tableprefix."session.lastactivity>$datecut") or exit("oops3");
	$regmembers = mysql_fetch_array($regmembers);
	
	$regmemberson = number_format($regmembers['membersonline']);
}

$howmany = substr_count($regmemberson,",");

if (($showusernames == 1 and $howmany >= 1) or ($showusernames == 0 and $regmemberson > 1))
{
	$memberstext = 'Mitglieder';
}
else
{
	$memberstext = 'Mitglied';
}

$guests = mysql_query("SELECT COUNT(userid) AS guestsonline FROM ".$tableprefix."session WHERE userid=0 AND ".$tableprefix."session.lastactivity>$datecut") or exit("oops4");
$guests = mysql_fetch_array($guests);

if ($guests['guestsonline'] > 1)
{
	$gueststext = 'Gäste';
}
else
{
	$gueststext = 'Gast';
}
$guestson = number_format($guests['guestsonline']);

$show = $memberstext.' online: '.$regmemberson.'. '.$gueststext.' online: '.$guestson.'.';

echo "<span style=\"font-family: Verdana; font-size: 12px\">$show</span>";

?>

Mein Problem ist nun nicht wirklich von mir erfassbar ... denn egal wo ich {whoson} einfüge, steht die Ausgabe immer ganz oben auf der Seite ...

Weiss jemand von euch, woran das liegen könnte? Wieso ich die Ausgabe von {whoson} nicht in eine Tabelle plaziert bekomme?

Geändert von Jan Stöver (03.05.2004 um 21:11 Uhr).
  #2  
Alt 03.05.2004, 20:08
Benutzerbild von Akira
Mitglied
 
Registriert seit: 07.2002
Ort: Österreich
Beiträge: 238
ganz unten in der funktion steht doch ein echo drinnen.

du must das echo in einer variable speichern, das ganze per return zurückgeben und mit {whoson} ersetzen lassen.

du solltest in der funtion board_online() nicht die datei includen sondern den code selber in die funktion schreiben, das ergebnis zurückgeben lassen und dann mit {whoson} ersetzen.

  #3  
Alt 03.05.2004, 20:16
Benutzerbild von Philipp Gérard
Zeitdenken
 
Registriert seit: 09.2003
Ort: Wien
Beiträge: 832
Schreib den Krams aus der online_extern.php in die Funktion, die du auch aufrufst und ersetzt das "echo" einfach mit "return".

__________________
Philipp Gérard
Gewöhnliche Menschen denken nur daran, wie sie ihre Zeit verbringen. Ein intelligenter Mensch versucht sie zu nützen. - Arthur Schopenhauer
  #4  
Alt 03.05.2004, 20:20
Benutzerbild von Jan Stöver
Boardunity Team
 
Registriert seit: 12.2003
Ort: Lübeck
Beiträge: 2.326
Also meinst du wie folgt ...

functions.php

Code:
error_reporting(E_ALL & ~E_NOTICE);

chdir(../**/);

require_once("./includes/config.php");

chdir(../**/);

function iif($expression, $returntrue, $returnfalse = '') {
	return ($expression ? $returntrue : $returnfalse);
}

mysql_connect($servername,$dbusername,$dbpassword)  ;
mysql_select_db($dbname);

$showusernames = 0; // 1 um Usernamen anstelle der Anzal auszugeben

$settings = mysql_query("SELECT * FROM ".$tableprefix."setting WHERE varname = 'cookietimeout'");
$settings = mysql_fetch_array($settings);

$datecut = time()-$settings['value'];

if ($showusernames == 1)
{
	$regmembers = mysql_query("SELECT DISTINCT username,options FROM ".$tableprefix."user,".$tableprefix."session 
		WHERE ".$tableprefix."session.userid=".$tableprefix."user.userid AND ".$tableprefix."session.lastactivity>$datecut 
		ORDER BY username ASC") or exit("oops2");
		
	while($regmember = mysql_fetch_array($regmembers))
	{
		$regmember['options'] = intval($regmember['options']);
		
		foreach($regmember as $optionname => $optionval)
		{
			$regmember["$optionname"] = iif($regmember['options'] & $optionval, 1, 0);
		}
		
		if ((($regmember['invisible'] == 0)) and $regmemberson or ($bbuserinfo['usergroupid'] == 6 and $regmember['invisible'] == 1))
		{
			$regmemberson .= ", ";
		}
	
		$regmembercomma++;
		if ($regmember['invisible'] == 0 or $bbuserinfo['usergroupid'] == 6) {
			if ($regmember['invisible'] == 1) {
				$userinvisible = "*";
			}
						
			$regmemberson .= $regmember['username'].$userinvisible;
		} else {
			$regmembercomma++;
		}
	}
	
	if (!$regmemberson)
	{
		$regmemberson = "(none)";
	}
		
} else {
	$regmembers = mysql_query("SELECT COUNT(DISTINCT userid) AS membersonline FROM ".$tableprefix."session WHERE userid>0 AND ".$tableprefix."session.lastactivity>$datecut") or exit("oops3");
	$regmembers = mysql_fetch_array($regmembers);
	
	$regmemberson = number_format($regmembers['membersonline']);
}

$howmany = substr_count($regmemberson,",");

if (($showusernames == 1 and $howmany >= 1) or ($showusernames == 0 and $regmemberson > 1))
{
	$memberstext = 'Mitglieder';
}
else
{
	$memberstext = 'Mitglied';
}

$guests = mysql_query("SELECT COUNT(userid) AS guestsonline FROM ".$tableprefix."session WHERE userid=0 AND ".$tableprefix."session.lastactivity>$datecut") or exit("oops4");
$guests = mysql_fetch_array($guests);

if ($guests['guestsonline'] > 1)
{
	$gueststext = 'Gäste';
}
else
{
	$gueststext = 'Gast';
}
$guestson = number_format($guests['guestsonline']);

$show = $memberstext.' online: '.$regmemberson.'. '.$gueststext.' online: '.$guestson.'.';

return $show;
Und wie genau läuft das dann in der index? Die kennt ja dann $show ...

Code:
if(strpos($strs,"{whoson}")>1)$tpl->Insert("{whoson}",				board_online());
Was muss dann daran genau geändert werden?

  #5  
Alt 03.05.2004, 20:56
Benutzerbild von Jan Stöver
Boardunity Team
 
Registriert seit: 12.2003
Ort: Lübeck
Beiträge: 2.326
Ich Döddel ...

Vorhin haue ich ewig rum, weil ich die Funktion nicht richtig definiert hatte in der index.php und nu so ein Kleinkram ... naja - sagte in einem anderen Thread nicht umsonst, dass ich ein Noob bin

Dankeschön!

Antwort


Stichworte
-

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem beim Ändern von Beiträgen ...?! Jan Stöver Informationen, Anregungen und Kritik 4 24.03.2005 15:15
Problem mit Mediawiki mvorlaender Blog, CMS, Wiki und Sonstige 1 11.10.2004 15:27
Problem mit MyPHPAdmin Marty Programmierung und Datenbanken 5 15.03.2004 10:31
Problem mit dem phpBB 2.2-Installer rellek Forensoftware 2 25.02.2004 16:30






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25