Mehre Toplisten (Hitsin Hitsout) auslesen.

Allgemeiner Support für das kostenlose Toplisten Script Top Xl

Moderator:Paddelberg

Enno
Beiträge:13
Registriert:Donnerstag 16. August 2007, 08:31
Mehre Toplisten (Hitsin Hitsout) auslesen.

Beitrag von Enno » Sonntag 19. August 2007, 09:09

Hallo erst einmal.

Ich hatte dich (Paddelberg) schon im SM Forum angesprochen wegen dem Thema.

Ich möchte auf einigen meiner Seiten eine Übersicht bauen, auf der alle Toplisten aufgelistet sind mit Hitsin, Hitsout, Webmaster, Besucher, usw (wie einen Index).

Nun habe ich einmal alle Toplisten in einer DB und einmal je Topliste eine DB.

Wie kann ich auf die Daten zugreifen??

Gibt es eine Möglichkeit das Script selbst anzusprechen oder muss ich mir selber DB abfragen bauen?

Bei der Version mit mehreren DBs brauche ich ja dann eine Möglichkeit mehre DBs nach einander anzusprechen?

Gibt es schon eine Lösung?

Danke und Grüße
Enno

Benutzeravatar
Paddelberg
Site Admin
Beiträge:925
Registriert:Dienstag 17. Januar 2006, 00:02
Wohnort:Worms

Beitrag von Paddelberg » Montag 20. August 2007, 00:53

Hi
also, das Script ansprechen geht nur bedingt.
Du möchtest nur die daten der Topliste anzapfen?
Also keine Mitgliederaccounts anziegen lassen?

sowas in der art habe ich rausgekramt
ich muss es nur noch anpassen, dann poste ich das hier
mfg
simon

Enno
Beiträge:13
Registriert:Donnerstag 16. August 2007, 08:31

Danke

Beitrag von Enno » Montag 20. August 2007, 07:57

DANKE

Ja es geht mir nur darum die Statistiken auf einer externen Seite anzuzeigen.
(Hits in, Hits out, Hits in Total, Hits out Total, Mitglieder(Anzahl))
So das ich damit eine kleine Übersicht bauen kann.

Ich habe mich nun auch mal an den Template versucht, das hat richtig gut geklappt.


Danke und Mfg Enno

horstimen
Beiträge:7
Registriert:Samstag 18. August 2007, 08:10

Beitrag von horstimen » Montag 20. August 2007, 10:29

mach es so, pack einfach ne statistik.html in jede toplist rein.

und dann stehen da die stats zur liste

und dann machst einfach ne html mit iframes zu den verschiedenen statistik.html

und shcon haste alle auf einer seite.

Enno
Beiträge:13
Registriert:Donnerstag 16. August 2007, 08:31

Beitrag von Enno » Montag 20. August 2007, 10:57

Entschuldige @horstimen ich kann dir jetzt nicht ganz folgen??

Wie meinst du das? Wenn ich dich richtig verstehe soll ich eine neue Seite in der Topliste anlegen und die dann verlinken? Aber dazu brauche ich doch auch erst einmal die Daten (Statistik) aus der Topliste????


Danke Enno

Benutzeravatar
Paddelberg
Site Admin
Beiträge:925
Registriert:Dienstag 17. Januar 2006, 00:02
Wohnort:Worms

Beitrag von Paddelberg » Montag 20. August 2007, 17:04

er mein wohl das du ne extra stats Seite für jede liste machen sollst, die du dann in iframe öffnen kannst

machs lieber so

als erstes die index.php (die datei, die die Übersicht mit den Listen zeigt!)

Code: Alles auswählen

<?php 
############################################
### Top-XL Lister  -   ##### stats meherer listen anzeigen
############################################
////////////////////////////////////////////
////////////////////////////////////////////


# config - 
$path = '../top-xl'; # pfad zu einer der toplisten (für includes)
$template_file = 'html/rows.html'; # relativer Pfad zu dem template includive filename
$sprache = 'de'; # sprache de/en etc - > sprachfile für vorhanden sein


### datenban config

# TopListe 1
$conf_array[] = array(
'table_pre' => 'topxl', # vorspann der tabellen
'db' => array(
'mysql_host' => 'localhost', # host zur datenbank
'mysql_username' => '', # username für die datenbank
'mysql_passwd' => '', # passwort für die Db
'mysql_dbase' => '' # name der datenbank
));

# TopListe 2
$conf_array[] = array(
'table_pre' => 'topxl', # vorspann der tabellen
'db' => array(
'mysql_host' => 'localhost', # host zur datenbank
'mysql_username' => '', # username für die datenbank
'mysql_passwd' => '', # passwort für die Db
'mysql_dbase' => '' # name der datenbank
));

# TopListe 3
$conf_array[] = array(
'table_pre' => 'topxl', # vorspann der tabellen
'db' => array(
'mysql_host' => 'localhost', # host zur datenbank
'mysql_username' => '', # username für die datenbank
'mysql_passwd' => '', # passwort für die Db
'mysql_dbase' => '' # name der datenbank
));

# TopListe 4
#..... du kannst beliebig viele Listen auslesen




###############################################
### script anfang
###############################################

# safety für includes
$scriptpath = $_SERVER['DOCUMENT_ROOT'];

# sprachfile
include($path."/lang/".$sprache.".php");

if(!file_exists($template_file))
	{echo "The template file ".$template_file." does not exist."; exit;}

$sql_username = '';

# die listen in ner schleife
foreach ($conf_array as $conf)
	{
	
	###### Sql
	
	# Tables 
	$topxl_user_table =   $conf['table_pre']."_user";
	$topxl_admin_table =  $conf['table_pre']."_admin";

	# sql connect
	if ($conf['db']['mysql_username'] != $sql_username)
		{
		$sql_username = $conf['db']['mysql_username'];
		set_magic_quotes_runtime(0);
		
		mysql_connect($conf['db']['mysql_host'],$conf['db']['mysql_username'],$conf['db']['mysql_passwd']) OR DIE (mysql_error()); 
		}
	mysql_select_db($conf['db']['mysql_dbase']);
	
	# vars zu entsprechenden liste auslesen
	include($path."/inc/vars.php");
	
	# filename der topliste - index.php entfernen
	if ($filename == "index.php")
		{$filenamex == "";}
	else {$filenamex = $filename;}
	
	# stats rausholen
	$countuser = mysql_query("SELECT COUNT(id) as cnt FROM ".$topxl_user_table." WHERE active='yes'") or die (mysql_error()); 
	$row = @mysql_fetch_array($countuser);
	$allusers = $row["cnt"];
	$counthits = mysql_query("SELECT sum(hitintotal) AS insumme,sum(hitouttotal) AS outsumme,sum(hitin) AS curinsumme,sum(hitout) AS curoutsumme FROM ".$topxl_user_table." WHERE active='yes'") or die (mysql_error()); 
	$counthitsrow = @mysql_fetch_array($counthits);
	$allhitsin = $counthitsrow[insumme];
	$allhitsout = $counthitsrow[outsumme];
	$currenthitsin = $counthitsrow[curinsumme];
	$currenthitsout = $counthitsrow[curoutsumme];
	if ($currenthitsin and $currenthitsin !=0 and $currenthitsout and $currenthitsout !=0)
		{
		$ratiohits = $currenthitsout/$currenthitsin;
		$ratiohits = substr($ratiohits, 0, 4);
		}
	else {$ratiohits = 1;}
	if ($allhitsin and $allhitsin !=0 and $allhitsout and $allhitsout !=0)
		{
		$ratiohitstotal = $allhitsout/$allhitsin;
		$ratiohitstotal = substr($ratiohitstotal, 0, 4);
		}
	else {$ratiohitstotal = 1;}
	$nextreset = $lastreset+$resettime;
	
	# template öffnen
	$fp1 = fopen($template_file,"r");  
	$zeile = fread ($fp1, filesize ($template_file));
	
	#### platzhalter im template ersetzen
	
	# vars
	$zeile = ereg_replace("{topsiteurl}",$topsiteurl,$zeile); # urls zur topliste
	$zeile = ereg_replace("{topsitename}",$topsitename,$zeile); # name der topliste
	$zeile = ereg_replace("{allhitsin}",$allhitsin,$zeile); # alle hits in
	$zeile = ereg_replace("{allhitsout}",$allhitsout,$zeile); # alle hits out
	$zeile = ereg_replace("{currenthitsin}",$currenthitsin,$zeile);	# hits inout seit letztem reset
	$zeile = ereg_replace("{allusers}",$allusers,$zeile); # anzahl freigeschalteter user
	$zeile = ereg_replace("{lastreset}",date("Y.m.d-H.i.s", $lastreset),$zeile); # zeitpunkt letztes reset
	$zeile = ereg_replace("{nextreset}",date("Y.m.d-H.i.s", $nextreset),$zeile); # zeitpunkt nächstes reset
	$zeile = ereg_replace("{ratiohits}",$ratiohits,$zeile); # verhältnis hits in/out seit letztem reset
	$zeile = ereg_replace("{ratiohitstotal}",$ratiohitstotal,$zeile); # verhältnis hits in/out gesamt

	# texte
	$zeile = ereg_replace("{text_signup}",$text_signup,$zeile); 
	$zeile = ereg_replace("{text_hitsin}",$text_hitsin,$zeile);
	$zeile = ereg_replace("{text_currenthitsin}",$text_currenthitsin,$zeile); 
	$zeile = ereg_replace("{text_hitsout}",$text_hitsout,$zeile);
	$zeile = ereg_replace("{text_currenthitsout}",$text_currenthitsout,$zeile);
	$zeile = ereg_replace("{text_lastreset}",$text_lastreset,$zeile);
	$zeile = ereg_replace("{text_nextreset}",$text_nextreset,$zeile);
	$zeile = ereg_replace("{text_ratiototal}",$text_ratiototal,$zeile);
	$zeile = ereg_replace("{text_ratio}",$text_ratio,$zeile);
	$zeile = ereg_replace("{text_members}",$text_members,$zeile);
	@fclose($fp1);
	$main_content .= $zeile;
	}
###############################################
### script ende
###############################################

# Ausgabe
echo $main_content;

?>
und dann noch die datei rows.html

Code: Alles auswählen

<table width="500" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
	<tr>
		<td colspan="5" nowrap="nowrap" bgcolor="#FFFFFF"><strong><a href="{topsiteurl}">{topsitename}</a></strong></td>
		<td nowrap="nowrap" bgcolor="#FFFFFF"><a href="{topsiteurl}/add.php" target="_blank" class="members">{text_signup}</a></td>
	</tr>
	<tr>
		<td nowrap="nowrap" bgcolor="#FFFFFF">{currenthitsin} {text_currenthitsin}</td>
		<td nowrap="nowrap" bgcolor="#FFFFFF">{currenthitsout} {text_currenthitsout}</td>
		<td nowrap="nowrap" bgcolor="#FFFFFF">{text_ratio} 1/{ratiohits}</td>
		<td nowrap="nowrap" bgcolor="#FFFFFF">{allhitsin} {text_hitsin}</td>
		<td nowrap="nowrap" bgcolor="#FFFFFF">{allhitsout} {text_hitsout}</td>
		<td nowrap="nowrap" bgcolor="#FFFFFF">{text_ratiototal} 1/{ratiohitstotal}</td>
	</tr>
	<tr>
		<td colspan="6" nowrap="nowrap" bgcolor="#FFFFFF">
		{allusers} {text_members}  &nbsp;&nbsp;{text_nextreset} {nextreset} &nbsp;&nbsp; {text_lastreset} {lastreset}</td>
	</tr>
</table>
Zuletzt geändert von Paddelberg am Sonntag 4. November 2007, 23:09, insgesamt 2-mal geändert.

Benutzeravatar
Paddelberg
Site Admin
Beiträge:925
Registriert:Dienstag 17. Januar 2006, 00:02
Wohnort:Worms

Beitrag von Paddelberg » Montag 20. August 2007, 17:06

Anleitung

du musst dir die Config im oberen teil der index.php deinen bedürfnissen anpassen
Du musst dir für jede Liste einen neuen array anlgen, in dem dann die connect daten und der vorspann für die tabellen steht

mfg
simon

Enno
Beiträge:13
Registriert:Donnerstag 16. August 2007, 08:31

Beitrag von Enno » Montag 20. August 2007, 23:43

Ist ja geil danke dir Tausendfach!!!!!!!!!!!!

Eine Frage habe ich noch, wohin lege ich die rows.html (ins selbe Verzeichnis wie die index.php oder soll die in die Toplisten) (ich denke mal bei die Index.php)

und im config teil kann ich bei der Version wo ich alle Toplisten in einer DB habe Überall die selben DB Daten eintragen nur den 'table_pre' => 'änder ich hier ab'??



Trotzdem erst mal Danke echt super

Benutzeravatar
Paddelberg
Site Admin
Beiträge:925
Registriert:Dienstag 17. Januar 2006, 00:02
Wohnort:Worms

Beitrag von Paddelberg » Dienstag 21. August 2007, 00:04

den pfad zur rows.html kannst du ziemlich am anfang angeben
in der var $template_file

var $path = da musst du den Pfad zu einer bestehenden installation einer Topliste angeben (den pfad zum hauptverzeichniss)

var $sprache = halt die Sprache. kommt aus den Sprachfiles der bestehenden installation, die du unter path angegeben hast -> deswegen gehen da nur die Sprachen, die in der bestehenden installation enthalten sind
Überall die selben DB Daten eintragen nur den 'table_pre' => 'änder ich hier ab'??
ja, genau.

mfg
simon

Enno
Beiträge:13
Registriert:Donnerstag 16. August 2007, 08:31

Beitrag von Enno » Dienstag 21. August 2007, 07:48

Super danke dir.

Werde mich heute nachmittag gleich mal drüber machen, Ergebnisse poste ich hier.

Bis dann dann und Mfg Enno

Enno
Beiträge:13
Registriert:Donnerstag 16. August 2007, 08:31

Beitrag von Enno » Mittwoch 22. August 2007, 23:02

Also es Funktioniert super.

Werde oder besser will jetzt noch ein bissel daran rum basten,
da ich die Daten auf der Seite verteilt brauche,
kann ich das Arry einzeln anzapfen oder ist es besser wenn ich mir eine Array mit einer Schleife für meine Inhalte bauen die ich dazwischen haben will?

(link zur Seite http://top100.ero-sexportal.de) ich habe da im Inhalt ein Liste mit Texten zu den Toplisten und ich wollte das die jeweiligen Daten zu den Toplisten direkt darunter stehen dann die nächste und so weiter und so weiter?

Ein eigenes Template zu den Toplisten kommt noch habe das auf einer anderen URL geht auch super.

MFG Enno

Benutzeravatar
Paddelberg
Site Admin
Beiträge:925
Registriert:Dienstag 17. Januar 2006, 00:02
Wohnort:Worms

Beitrag von Paddelberg » Donnerstag 23. August 2007, 00:13

ich würde wohl die Beschreibungen/Bilder etc mit in den config array packen.

Code: Alles auswählen

# TopListe 1 
$conf_array[] = array( 
'table_pre' => 'topxl', # vorspann der tabellen 
'pic_url' => 'http://www.domain.de/img.jpg',
'beschreibung' => 'Beschreibung der liste',
'more_link' => 'http://www.domain.de/kategoriexxx.html',
'db' => array( 
'mysql_host' => 'localhost', # host zur datenbank 
'mysql_username' => '', # username für die datenbank 
'mysql_passwd' => '', # passwort für die Db 
'mysql_dbase' => '' # name der datenbank 
)); 
zusätzliche Template replacer

Code: Alles auswählen

$zeile = ereg_replace("{pic_url}",$conf[pic_url],$zeile); 
$zeile = ereg_replace("{beschreibung}",$conf[beschreibung],$zeile); 
$zeile = ereg_replace("{more_link}",$conf[more_link],$zeile); 
im template musste dann halt noch dementsprechend die Platzhalter dazu machen

{pic_url}
{beschreibung}
{more_link}

mfg
simon

Enno
Beiträge:13
Registriert:Donnerstag 16. August 2007, 08:31

Beitrag von Enno » Donnerstag 23. August 2007, 08:26

Wow ist ja noch besser!!


Danke dir

Grüße und MFG Enno

Enno
Beiträge:13
Registriert:Donnerstag 16. August 2007, 08:31

Beitrag von Enno » Donnerstag 4. Oktober 2007, 22:28

Also die Sache Funktioniert Super!!!!!

Nur eins noch, kann ich irgendwie alles extra noch zusammen rechnen lassen in eine extra Ausgabe.

So das ich oben oder unten eine Ausgabe habe wo alle Toplisten zusammen gerechnet sind????
Mir geht es nur um die "Mitglieder", "Hits in Total", "Hits out Total".

Idee:
Das ich das "Templates öffnen" aus der Schleife nehme erst alles Durchlaufe lasse in einer Global zusammen rechne und dann an 's Templates sende???

Grüße und Danke Enno

Benutzeravatar
Paddelberg
Site Admin
Beiträge:925
Registriert:Dienstag 17. Januar 2006, 00:02
Wohnort:Worms

Beitrag von Paddelberg » Donnerstag 4. Oktober 2007, 22:50

Hi
du machst dir 3 neue vars (vor die foreach Schleife, nach $sql_username = ''; )

$all_members = '0';
$all_hits_in_total = '0';
$all_hits_out_total = '0';

in der foreach Schleife, nach $nextreset = $lastreset+$resettime; schreibst du dann folgendes

$all_members = $all_members + $allusers;
$all_hits_in_total = $all_hits_in_total + $allhitsin;
$all_hits_out_total = $all_hits_out_total + $allhitsout;


Die Ausgabe kannst du machen, indem du ganz am ende, bei echo $main_content; entwder davor, oder danach schreibst

z.B.

echo '<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="100%">Mitglieder gesamt: '.$all_members.' - Hits In gesamt: '.$all_hits_in_total.' - Hits out gesamt: '.$all_hits_out_total.'</td>
</tr>
</table>';

mfg
simon

Antworten