serverliste

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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

    Quellcode

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



    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

    Quellcode

    1. /*-------SETTINGS-------*/
    2. $ts3_ip = '*******';
    3. $ts3_queryport = *******;
    4. $ts3_user = '*******';
    5. $ts3_pass = '*******';
    6. /*----------------------*/
    7. $twa = new ts3admin($ts3_ip,$ts3_queryport);
    8. if($twa->getElement('success', $twa->connect())) {
    9. #login as serveradmin
    10. $twa->login($ts3_user, $ts3_pass);
    11. #get serverlist
    12. $servers = $twa->serverList();
    13. $servers['data'] = $server;
    14. $x = 0;
    15. $serverliste[$x]['sid']=$server['virtualserver_id'];
    16. $x ++;
    17. }else{
    18. $msg="<b>Derzeit sind keine Server vorhanden!</b>";
    19. }
    Alles anzeigen



    Und so sieht das HTML dokument aus


    Quellcode

    1. {foreach from=$serverliste item=serverliste}
    2. <p>{$serverliste.sid}</p>
    3. {/foreach}
    Riek-Media.com - Webhosting riek-media.com
  • 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.

    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.

    Quellcode

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

    hier mal der ganze code

    Quellcode

    1. <?php
    2. // Start session
    3. ob_start();
    4. session_start ();
    5. // Includen
    6. include("core/config.inc.php");
    7. require('tempdir.php');
    8. require("core/moduls.php");
    9. require("core/ts3admin.class.php");
    10. error_reporting(E_ALL);
    11. ini_set('display_errors', true);
    12. /// Settings
    13. $ts3_ip = "*************";
    14. $ts3_queryport = "*******";
    15. $ts3_user = "*************";
    16. $ts3_pass = "**********";
    17. $twa = new ts3admin($ts3_ip,$ts3_queryport);
    18. if($twa->getElement('success', $twa->connect())) {
    19. #login as serveradmin
    20. $twa->login($ts3_user, $ts3_pass);
    21. #get serverlist
    22. $servers = $twa->serverList();
    23. $servers['data'] = $server;
    24. $x = 0;
    25. $serverliste[$x]['sid']=$server['virtualserver_id'];
    26. $x ++;
    27. }else{
    28. $msg="<b>Derzeit sind keine Mitarbeiter vorhanden!</b>";
    29. }
    30. #set msg var
    31. $msg = '';
    32. $smarty = new dynamicPage;
    33. if(isset($serverliste)) {
    34. $smarty->assign("serverliste",$serverliste);
    35. } else {
    36. $smarty->assign("msg", $msg);
    37. }
    38. $smarty->assign("msg",$msg);
    39. $smarty->display('new.html');
    40. ?>
    Alles anzeigen
    Riek-Media.com - Webhosting riek-media.com
  • Hi,

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

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


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

    Quellcode

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


    besser ist so:

    Quellcode

    1. $msg = "",
    2. $serverliste = array();
    3. [...]
    4. $smarty->assign("serverliste",$serverliste);
    5. $smarty->assign("msg",$msg);
  • 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

    Quellcode

    1. <?php
    2. // Start session
    3. ob_start();
    4. session_start ();
    5. // Includen
    6. include("core/config.inc.php");
    7. require('tempdir.php');
    8. require("core/moduls.php");
    9. require("core/ts3admin.class.php");
    10. error_reporting(E_ALL);
    11. ini_set('display_errors', true);
    12. /// Settings
    13. $ts3_ip = "*****";
    14. $ts3_queryport = "******";
    15. $ts3_user = "*****";
    16. $ts3_pass = "*****";
    17. $twa = new ts3admin($ts3_ip,$ts3_queryport);
    18. $twa->getElement('success', $twa->connect());
    19. #login as serveradmin
    20. $twa->login($ts3_user, $ts3_pass);
    21. #get serverlist
    22. $server = '';
    23. $servers = $twa->serverList();
    24. $servers = array();
    25. $smarty = new dynamicPage;
    26. $smarty->assign("servers",$servers);
    27. $smarty->display('new.html');
    28. ?>
    Alles anzeigen


    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.
    Riek-Media.com - Webhosting riek-media.com
  • "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 ;)

    Quellcode

    1. $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.
    2. $servers = $twa->serverList();
    3. $smarty = new dynamicPage; // und was ist das ??? is dynamicPage bei dir die Smartyklasse ??
    4. $smarty->assign("servers",$servers);
  • Wenn ich das richtig verstehe meinst du so

    Quellcode

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


    Quellcode

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


    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
    Riek-Media.com - Webhosting riek-media.com
  • Bei der foreachschleife hast du einen Fehler.

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

    Quellcode

    1. {foreach from=$servers item=server}
    2. <tr>
    3. <td>{$server.virtualserver_id}</td>
    4. <td>{$server.virtualserver_port}</td>
    5. </tr>
    6. {/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.
  • Auch für die anderen ists besser wenn du das hier reinkopierst.


    Irgendwie ist das seltsam:

    Quellcode

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


    Quellcode

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



    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.


    Quellcode

    1. {foreach from=$server item=s}
    2. <tr>
    3. <td>{$s.virtualserver_id}</td>
    4. <td>{$s.virtualserver_port}</td>
    5. </tr>
    6. {/foreach}
  • 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

    Quellcode

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

    lg
    Sascha
    Riek-Media.com - Webhosting riek-media.com

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dragon4048 ()