You are not logged in.

  • Login

1

Thursday, October 28th 2010, 11:02am

serverliste

Hallo

habe da eine kleine frage an euch. Undzwar wie kann ich das ganze mit smarty realisieren. Vieleicht kann mir ja jemand ein kleines beispiel machen so das ich es leichter kapiere :)

Hier mal der Originale code

PHP Quellcode

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?PHP
/**
  * serverlist.php
  *
  * Is a small script to demonstrate how to get a serverlist via ts3admin.lib
  *
  * by par0noid solutions - ts3admin.6x.to
  *
*/
 
/*-------SETTINGS-------*/
$ts3_ip = '*******';
$ts3_queryport = *******;
$ts3_user = '*******';
$ts3_pass = '*******';
/*----------------------*/
 
#Include ts3admin.class.php
require("ts3admin.class.php");
 
#build a new ts3admin object
$tsAdmin = new ts3admin($ts3_ip, $ts3_queryport);
 
if($tsAdmin->getElement('success', $tsAdmin->connect())) {
	#login as serveradmin
	$tsAdmin->login($ts3_user, $ts3_pass);
 
	#get serverlist
	$servers = $tsAdmin->serverList();
 
	#set output var
	$output = '';
 
	#generate table codes for all servers
	foreach($servers['data'] as $server) {
		$output .= '<tr bgcolor="#ffffff" onmouseover="style.backgroundColor=\'#eeeeee\'" onmouseout="style.backgroundColor=\'#ffffff\'">';
		$output .= '<td width="50px" align="center">#'.$server['virtualserver_id'].'</td>';
		$output .= '<td width="300px">&nbsp;&nbsp;'.htmlspecialchars($server['virtualserver_name']).'</td>';
		$output .= '<td width="100px" align="center">'.$server['virtualserver_port'].'</td>';
		if(isset($server['virtualserver_clientsonline'])) {
			$clients = $server['virtualserver_clientsonline'] . '/' . $server['virtualserver_maxclients'];
		}else{
			$clients = '-';
		}
		$output .= '<td width="200px" align="center">'.$clients.'</td>';
		$output .= '<td width="100px" align="center">'.$server['virtualserver_status'].'</td>';
		if(isset($server['virtualserver_uptime'])) {
			$uptime = $tsAdmin->convertSecondsToStrTime(($server['virtualserver_uptime']));
		}else{
			$uptime = '-';
		}
		$output .= '<td width="150px" align="center">'.$uptime.'</td>';
	}
}else{
	echo 'Connection could not be established.';
}
 
if(count($tsAdmin->getDebugLog()) > 0) {
	foreach($tsAdmin->getDebugLog() as $logEntry) {
		echo '<script>alert(\''.$logEntry.'\');</script>';
	}
}
 
?>
<html>
	<head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>Serverlist example by Par0noid Solutions</title>
        <style>
			* {
				font-size:13px;
				font-family:Verdana, Geneva, sans-serif;
			}
		</style>
    </head>
    <body bgcolor="#a2ad9b">
    	<table bgcolor="#000000" cellpadding="5" cellspacing="1" width="900px" border="0" align="center">
        	<tr bgcolor="#c0c0c0">
            	<td width="50px" align="center"><b>ID<b></td>
                <td width="300px" align="center"><b>Servername<b></td>
            	<td width="100px" align="center"><b>Port<b></td>
            	<td width="200px" align="center"><b>Current clients<b></td>
                <td width="100px" align="center"><b>Status<b></td>
                <td width="150px" align="center"><b>Uptime<b></td>
            </tr>
            <?PHP echo $output; ?>
        </table>
    </body>
</html>



Nun wollte ich das ganze via smarty umsetzen nur leider klapt es nicht so ganz. Weiss jetzt nicht genau wie ich es da jetzt machen muss.

Hier mal mein code

PHP Quellcode

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
26
27
/*-------SETTINGS-------*/
$ts3_ip = '*******';
$ts3_queryport = *******;
$ts3_user = '*******';
$ts3_pass = '*******';
/*----------------------*/
 
 
 
 
$twa = new ts3admin($ts3_ip,$ts3_queryport);
 
 
if($twa->getElement('success', $twa->connect())) {
	#login as serveradmin
	$twa->login($ts3_user, $ts3_pass);
 
	#get serverlist
		$servers = $twa->serverList();
		$servers['data'] = $server;
		$x = 0;
		$serverliste[$x]['sid']=$server['virtualserver_id'];
		$x ++;
 
			}else{
			$msg="<b>Derzeit sind keine Server vorhanden!</b>";
		}



Und so sieht das HTML dokument aus


HTML Code

1
2
3
{foreach from=$serverliste item=serverliste}
<p>{$serverliste.sid}</p>
{/foreach}

2

Thursday, October 28th 2010, 11:13am

Hi,


dein php Codepart ist unvollständig, man sieht nicht genau wie weit du gekommen bist.

Hast du Smarty richtig initialisiert ?
Die Variable welche du im Template benutzt assigned ?
Das Template mittels display ausgegeben ?


Der Unterschied ist das du den "ouput" in deinem Code weglässt und ins Template verlagerst.

Damit du damit im Template arbeiten kannst musst du die Variable erstma assignen.

PHP Quellcode

1
$smarty->assign("servers",$servers); [...]  $smarty->display("DeinTemplate.tpl")



Dann kannst du im Template auf das Serverarray zugreifen.

Das foreach was du in php durchläufst, durchläufst du dann wie in deinem Ansatz einfach nur im Template.

HTML Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[...]
    <body bgcolor="#a2ad9b">
    	<table bgcolor="#000000" cellpadding="5" cellspacing="1" width="900px" border="0" align="center">
        	<tr bgcolor="#c0c0c0">
            	<td width="50px" align="center"><b>ID<b></td>
                <td width="300px" align="center"><b>Servername<b></td>
            	<td width="100px" align="center"><b>Port<b></td>
            	<td width="200px" align="center"><b>Current clients<b></td>
                <td width="100px" align="center"><b>Status<b></td>
                <td width="150px" align="center"><b>Uptime<b></td>
            </tr>
            {foreach from=$servers item=server}
                <tr><td>{$server.virtualserver_id} {$server.virtualserver_port} bla bla bla, is nur ein Beispiel</td></tr>
            {/foreach}
        </table>
    </body>
</html>

3

Thursday, October 28th 2010, 11:18am

Ja so ähnlich hatte ich das gemacht. Aber leider ohne erfolg.

hier mal der ganze code

PHP Quellcode

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
// Start session
ob_start(); 
session_start (); 
 
// Includen
include("core/config.inc.php");
require('tempdir.php');
require("core/moduls.php");
require("core/ts3admin.class.php");
 
 
 
error_reporting(E_ALL);
ini_set('display_errors', true);
 
 
 
/// Settings
$ts3_ip = "*************";
$ts3_queryport = "*******";
$ts3_user = "*************";
$ts3_pass = "**********";
 
 
 
 
$twa = new ts3admin($ts3_ip,$ts3_queryport);
 
 
if($twa->getElement('success', $twa->connect())) {
	#login as serveradmin
	$twa->login($ts3_user, $ts3_pass);
 
	#get serverlist
		$servers = $twa->serverList();
		$servers['data'] = $server;
		$x = 0;
		$serverliste[$x]['sid']=$server['virtualserver_id'];
		$x ++;
 
			}else{
			$msg="<b>Derzeit sind keine Mitarbeiter vorhanden!</b>";
		}
 
	#set msg var
	$msg = '';
 
$smarty = new dynamicPage;
	if(isset($serverliste)) {
		$smarty->assign("serverliste",$serverliste);
		} else {
		$smarty->assign("msg", $msg);
	}
$smarty->assign("msg",$msg);
$smarty->display('new.html');
 
?>

4

Thursday, October 28th 2010, 11:48am

Hi,

du musst smarty, am besten global, schon richtig initialisieren, sonst funktioniert das nicht.

Schau mal in die Doku:
http://www.smarty.net/manual/de/installing.smarty.basic.php


und bei deiner Konstruktion kannst du den else Part streichen, da msg ja immer assigned wird.

PHP Quellcode

1
2
3
4
if(isset($serverliste)) {
$smarty->assign("serverliste",$serverliste);
} 
$smarty->assign("msg",$msg);


besser ist so:

PHP Quellcode

1
2
3
4
5
6
7
$msg = "",
$serverliste = array();
 
[...]
 
$smarty->assign("serverliste",$serverliste);
$smarty->assign("msg",$msg);

5

Thursday, October 28th 2010, 11:58am

jetz klapt das garnicht mehr. Wenn ich mir aber auch die code anschaue haben wir sie jetzt ganz schön zerpflückt

//EDIT

Hier nun nochmal der ganze php code

PHP Quellcode

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
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
// Start session
ob_start(); 
session_start (); 
 
// Includen
include("core/config.inc.php");
require('tempdir.php');
require("core/moduls.php");
require("core/ts3admin.class.php");
 
error_reporting(E_ALL);
ini_set('display_errors', true);
 
/// Settings
$ts3_ip = "*****";
$ts3_queryport = "******";
$ts3_user = "*****";
$ts3_pass = "*****";
 
 
$twa = new ts3admin($ts3_ip,$ts3_queryport);
 
$twa->getElement('success', $twa->connect());
	#login as serveradmin
	$twa->login($ts3_user, $ts3_pass);
 
	#get serverlist
 
	$server = '';
	$servers = $twa->serverList();
 
	$servers = array();
 
$smarty = new dynamicPage;
$smarty->assign("servers",$servers);
$smarty->display('new.html');
?>


smarty wird richtig eingebunden da es ja läuft. Er zeigt das template auch ann und die tabelle alles keine frage nur der inhalt fehlt.

6

Thursday, October 28th 2010, 12:02pm

"das klappt garnicht" ist natürlich nicht sehr hilfreich ;)

Bring erstmal smarty bei dir zum laufen bevor du 3 Schritte auf einmal machst.

- Smarty includen
- 2 Templatesordner erstellen (Rechte beachten)
- Smarty instanzieren
- ein einfaches Template (.tpl) erstellen und ausgeben lassen

Wenn die basics gehen, dann kannst du auch ohne Probleme alles andere umsetzen.




edit

das leigt daran das du alles überschreibst ;)

PHP Quellcode

1
2
3
4
$servers = array(); // lass am besten (wenn nicht shcon geschehen) $twa->serverList(); ein leeres array zurückgeben wenn keine Server gefunden werden und lass das hier weg.
	$servers = $twa->serverList();
$smarty = new dynamicPage; // und was ist das ??? is dynamicPage bei dir die Smartyklasse ??
$smarty->assign("servers",$servers);

7

Thursday, October 28th 2010, 12:04pm

äm ich glaube wir reden aneinander vorbei.

Smarty läuft schon die ganze zeit seit anfang an. Es geht auch nicht um smarty sondern um den phpcode. Das template ect läuft alles ohne probleme :) Nur der inhalt fehlt. Sprich das auslesen der server :)

8

Thursday, October 28th 2010, 12:06pm

hat sich überschnitten ;)

9

Thursday, October 28th 2010, 12:10pm

Wenn ich das richtig verstehe meinst du so

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
$twa = new ts3admin($ts3_ip,$ts3_queryport);
 
$twa->getElement('success', $twa->connect());
	#login as serveradmin
	$twa->login($ts3_user, $ts3_pass);
 
	#get serverlist
	$servers = $twa->serverList();
 
$smarty = new dynamicPage;
$smarty->assign("servers",$servers);
$smarty->display('new.html');


HTML Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<table bgcolor="#CCCCCC" cellpadding="5" cellspacing="1" width="900px" border="0" align="center">
        	<tr bgcolor="#c0c0c0">
            	<td width="50px" align="center"><b>ID<b></td>
                <td width="300px" align="center"><b>Servername<b></td>
            	<td width="100px" align="center"><b>Port<b></td>
            	<td width="200px" align="center"><b>Current clients<b></td>
                <td width="100px" align="center"><b>Status<b></td>
                <td width="150px" align="center"><b>Uptime<b></td>
            </tr>
            {foreach from=$servers item=server}
                <tr>
				<td>{$servers.virtualserver_id}</td>
				<td>{$servers.virtualserver_port}</td>
				</tr>
            {/foreach}
        </table>


Nur leider habe ich dann den selben efekt. Die tabelle wird angezeigt es wird auch quasi im template ein BR erzeugt sage ich mal aber der inhalt bleibt trozdem aus. Kann dir gerne mal den link via pn zu dem script schicken fürs eigene auge

10

Thursday, October 28th 2010, 12:15pm

Bei der foreachschleife hast du einen Fehler.

"item" ist pendant zu "as", es muss in der Schleife $server und nicht $servers heissen.

HTML Code

1
2
3
4
5
6
{foreach from=$servers item=server}
                <tr>
				<td>{$server.virtualserver_id}</td>
				<td>{$server.virtualserver_port}</td>
				</tr>
            {/foreach}


Wenn das auch nicht geht setz ein {debug} ins template, dann bekommste ein Smartypopup mit allen Variablen angezeigt und du kannst prüfen ob $servers überhaupt das von dir erwartete array ist.

11

Thursday, October 28th 2010, 12:18pm

Hab ich geändert :) aber leider immernoch das selbe :) Hoffendlich nerve ich dich nicht *schäm*

ok mom edit zu spät gelesen :)

12

Thursday, October 28th 2010, 12:24pm

so das popup ist drinne kannst du dir das mal kurz anschauen links haste ja via pn.

13

Thursday, October 28th 2010, 12:33pm

Auch für die anderen ists besser wenn du das hier reinkopierst.


Irgendwie ist das seltsam:

Source code

1
2
3
4
5
6
7
8
{$servers}
Array (3)
success => 1
errors => Array (0)
data => Array (1)
  0 => Array (10)
    virtualserver_id => 1
[...]


Source code

1
2
3
4
5
{$server}
Array (1)
0 => Array (10)
  virtualserver_id => 1
[...]



Warum hast du das 2mal ? und wenn du das $servers Array benutzt dann geht es mit der foreachschleife natürlich nicht, da du ja mehrere Verschachtelungen hast.
Zumal kann ich dir nicht sagen wie es mit dem Gültigkeitsbereich der Variablen aussieht, also inwiefern sich dann $server und $servers üerschneiden, daher benenn es innerhalb der Schleife einfach um.


HTML Code

1
2
3
4
5
6
{foreach from=$server item=s}
                <tr>
				<td>{$s.virtualserver_id}</td>
				<td>{$s.virtualserver_port}</td>
				</tr>
            {/foreach}

14

Thursday, October 28th 2010, 12:41pm

hm ihrgendwie versteht ich das jetzt nicht ganz um erlisch zu sein ^^ Wenn ich das so ändere ist es genauso als würde ich Server oder nur s nutzen innerhalb der foreach. Warum das ganze 2 mal im debug template ist weiss ich nicht. ändere ich es aber in {foreach from=$servers item=servers} dann hat er nur ein arry im debug


Vince ich danke dir ganz herzlich für deine kräftige unterstützung. Ich habs nun hinbekommen und weiss nun auch worans lag. und zwar musste es

PHP Quellcode

1
$smarty->assign("servers",$servers['data']);
heissen :) nun klappt es. Vielen lieben dank

lg
Sascha

This post has been edited 1 times, last edit by "Dragon4048" (Oct 28th 2010, 12:56pm)


15

Thursday, October 28th 2010, 1:15pm

Dann ist gut :)

ansonsten kannst du auch auf das Array direkt zugreifen.

HTML Code

1
{foreach from=$servers.data item=s}

16

Thursday, October 28th 2010, 3:49pm

ah ok gut :) wieder was dazu geklernt :)

Danke dir Vince

Similar threads

Social bookmarks