Problem mit Smarty

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Smarty

    Ich hab nen mvp time geschrieben für ein MORPG, so funktioniert auch so wie es soll. Will es aber nun für smarty umschreiben, hat auch bisher geklappt wie ich es gerne hätte. Nur ist da folgendes Problem aufgetreten das er eine falsche zeit anzeigt aber wieso.

    Das beispie mit Smartyl
    So wie es funktionieren soll:
    Das beispiel ohne Smarty

    SO sieht der coder aus
    mvp.php:
    PHP Code:
    $smarty->assign('mvptime',liko($mvpspawn));

    $dbserver 'localhost';                 //Database Server
    $dbuser 'blub';                        //Database Username
    $dbpass 'blub';                            //Database Password
    $dbdatabase ''blub;      //Database Server
    $db_time_table 'mvp';         //MVP Time Table

    $issiusta $_REQUEST['issiusta'];
    $ID $_REQUEST['ID'];
    $mvpspawn $_REQUEST['mvpspawn'];

    function 
    liko($mvpspawn)
    {

     if (
    $mvpspawn time()) { $skirt $mvpspawn time(); }
     else { 
    $skirt time() - $mvpspawn; };
    $vskirt 0$mskirt 0$sskirt 0;
     while(
    $skirt >= 3600) {
      
    $vskirt++;
      
    $skirt -= 3600;
     };
     while(
    $skirt >= 60) {
      
    $mskirt++;
      
    $skirt -= 60;
     };
     if (
    $vskirt == 0) { $vskirt ""; }
     else { 
    $vskirt $vskirt."h "; };
     if (
    $mskirt == 0) { $mskirt ""; }
     else { 
    $mskirt $mskirt."m "; };
     
    $sskirt $skirt;

     return (
    $vskirt.$mskirt.$sskirt."s");
     };
    $i 0;

    $db mysql_connect($dbserver,$dbuser,$dbpass);
    mysql_select_db($dbdatabase,$db);

    if (
    $issiusta) {
    $rezultatai mysql_fetch_array(mysql_query("SELECT mvpspawntime FROM ".$db_time_table." WHERE ID = ".$ID));
    extract($rezultatai);
    if (
    $mvpspawn == 0) { $mvpspawn $mvpspawntime; }
    $mvpspawn time() + $mvpspawn*60;
    mysql_query("UPDATE ".$db_time_table." SET mvpspawn = ".$mvpspawn.", killcount = killcount + 1 WHERE ID = ".$ID);



    Und so die tpl:
    PHP Code:
    {foreach from=$mvp  item=mvp}
      <
    tr>
        <
    td width="19%">{$mvp.MVP}</td>
        <
    td width="31%">{$mvptime}</td>
        <
    td width="25%"><form action="mvp.php" method="post">
    <
    input type=hidden name=issiusta value={$mvp.ID}>
    <
    input type="hidden" name="ID" value="{$mvp.ID}">
    <
    input name="mvpspawn" type="text" maxlength="3" size="3" class=text
    <
    input type="image" src="set.gif" ></td></form>
        <
    td width="25%">{$mvp.killcount}</td>
      </
    tr>{/foreach} 
    Ich denke aber nicht das es an der tpl liegt.
    Last edited by Victorious; 17-12-2005, 09:57.

  • #2
    Ich weiss nun wo das problem ist, habs auch behoben aber nun habe ich das nächste problem das er bei jedem mvp die zeit anzeigt vom letzt eingetragen mvp.

    Comment


    • #3
      Was ist denn $mvptime? In deinem PHP Script sieht man kein assign für Smarty. $mvptime hat auch nichts mit dem Smarty foreach zu tun also sollte das wohl $mvp.mvptime oder $mvp.time heissen!

      Wenn nicht musst du die Relevanten Code teile mal posten.
      gruss Chris

      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

      Comment


      • #4
        $mvp.mvptime wenn ich das mache wird nur die zeit die dort ist ausgelesen, aber hab dazu ne funktion geschrieben in der sie in stunden minuten und sekunden aufteilt und runter bzw rauf zählt. Das funktioniert auch nur er zeigt mir bei allen mvp die gleichezeit zeit und zwar die in der db als letztes eingetragen wurde. Ist auch logisch das er das macht , nur wie bekomme ich das hin das er alle zeiten anzeigt und richtig zugeordnet ist.


        So sieht der code aus ohne smarty

        Einmal die Funktion:
        PHP Code:
        function liko($mvpspawn)
        {
         if (
        $mvpspawn time()) { $skirt $mvpspawn time(); }
         else { 
        $skirt time() - $mvpspawn; };
        $vskirt 0$mskirt 0$sskirt 0;
         while(
        $skirt >= 3600) {
          
        $vskirt++;
          
        $skirt -= 3600;
         };
         while(
        $skirt >= 60) {
          
        $mskirt++;
          
        $skirt -= 60;
         };
         if (
        $vskirt == 0) { $vskirt ""; }
         else { 
        $vskirt $vskirt."h "; };
         if (
        $mskirt == 0) { $mskirt ""; }
         else { 
        $mskirt $mskirt."m "; };
         
        $sskirt $skirt;

         return (
        $vskirt.$mskirt.$sskirt."s");
         };
        $i 0;

        $db mysql_connect($dbserver,$dbuser,$dbpass);
        mysql_select_db($dbdatabase,$db);

        if (
        $issiusta) {
        $rezultatai mysql_fetch_assoc(mysql_query("SELECT mvpspawntime FROM ".$db_time_table." WHERE ID = ".$ID));
        extract($rezultatai);
        if (
        $mvpspawn == 0) { $mvpspawn $mvpspawntime; };
        $mvpspawn time() + $mvpspawn*60;
        mysql_query("UPDATE ".$db_time_table." SET mvpspawn = ".$mvpspawn.", killcount = killcount + 1 WHERE ID = ".$ID);

        Und hier die Ausgabe:
        PHP Code:
        $duom mysql_query("SELECT * FROM ".$db_time_table." WHERE 1 ORDER BY mvpspawn");
        while (
        $rezult mysql_fetch_assoc($duom)) {
         
        extract($rezult);
        echo <<<END
        <tr><td bgcolor=#EFF3FF>$MVP</td>
        END;
        echo 
        "<td  bgcolor=#EFF3FF>".liko($mvpspawn)."</td>"
        Last edited by Victorious; 17-12-2005, 09:23.

        Comment


        • #5
          PHP Code:
          $smarty->assign('mvptime',liko($mvpspawn)); 
          So gibts du 1x die Zeit mit.. Logisch das es immer die gleiche ist.


          PHP Code:
          $result mysql_fetch_array(....); // Restliche daten
          $result["mvptime"] = liko($result["mvpspawn"]);

          $smarty->assign('data'$result); 
          Mit $data kannst du dann in deinem Template arbeiten.
          Schreib in das TPL mal irgendwo {debug} dann siehst du womit du arbeitest.
          gruss Chris

          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

          Comment


          • #6
            hm hab das jetzt mal gemacht aber nun sagt er mir das.

            Parse error: parse error, unexpected '[', expecting ')' in /is/htdocs/wp1009673_FMKUCXMAF1/www/Link/mvp.php on line 65

            PHP Code:
            $query "SELECT * FROM mvp   ORDER BY mvpspawn";
            $ergebn2 mysql_query($query); 

            while (
            $resultmysql_fetch_array($ergebn2)) {
            $result["mvptime"] = liko($result["mvpspawn"]);

            $smarty->assign('mvp3',$result);

            function 
            liko($result["mvpspawn"])

            Comment


            • #7
              Und Zeile 65 is welche?

              function liko($result["mvpspawn"]) <--- Die da?
              gruss Chris

              [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

              Comment


              • #8
                jupp

                Comment


                • #9
                  Ja was packst du auch nen Array in eine Funktionsdeklaration?

                  function foo($variable)

                  nicht

                  function foo($variable["bar"])

                  Ich kann mich nicht erinnern gesagt zu haben das du die Funktion ändern musst... Die passt schon ...

                  PHP Code:
                  function foo($bar)
                  {
                      echo 
                  $bar;
                  }

                  foo("ich bin der inhalt"); 
                  Das sollte dir doch was sagen oder?
                  Last edited by hhcm; 17-12-2005, 16:28.
                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Comment


                  • #10
                    hm jetzt zeigt nix mehr an nur die tabelle,

                    PHP Code:
                    $query "SELECT * FROM mvp   ORDER BY mvpspawn";
                    $ergebn2 mysql_query($query); 

                    while (
                    $resultmysql_fetch_array($ergebn2)) {
                    $result['mvpspawn'] = liko($result["mvpspawn"]);
                    $result =$result;
                    $smarty->assign('mvp3',$result); 

                    Comment


                    • #11
                      Was denn jetz zeigt was an oder zeigt nichts an?

                      Was macht $result =$result da drin?

                      Benutzt du mvp3 auch in deinem Template, wenn ja wie...

                      Poste mal das ergebnis von

                      PHP Code:
                      echo "<pre>";
                      print_r($result); 
                      gruss Chris

                      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                      Comment


                      • #12
                        Oh nun gehts hatte nen schreib fehler in der tpl.

                        Aber eine frage hätte ich da noch wie kann ich javascript und css einbetten, da sie ja selber {} verwenden geht das nicht aber ich brauch es.
                        Last edited by Victorious; 18-12-2005, 10:19.

                        Comment


                        • #13
                          Original geschrieben von Victorious


                          Aber eine frage hätte ich da noch wie kann ich javascript und css einbetten, da sie ja selber {} verwenden geht das nicht aber ich brauch es.
                          {literal}

                          css / javascript code

                          {/literal}

                          grüße
                          mfg

                          Comment


                          • #14
                            Hm ich versteh eins nicht und zwar soll er hochzählen laut debug macht er es auch aber ausgeben tut er nur array wenn ich in der php append benutze bei assign zählt er nicht hoch sondern nur die letzte zahl.

                            PHP Code:
                            $i=0;
                            $query "SELECT * FROM mvp Where 1  ORDER BY mvpspawn";
                            $ergebn2 mysql_query($query); 

                            while (
                            $resultmysql_fetch_array($ergebn2)) {
                            $result['mvpspawn'] = liko($result["mvpspawn"]);
                            $result $result;
                            $smarty->append('mvp3',$result);
                            $r$i++;
                            $smarty->append('i',$r);

                            Comment


                            • #15
                              Und warum benutzt du nicht

                              {counter start=1 skip=1}

                              in deinem Template (innerhalb des foreach?)

                              Ausserdem könntest du mal TOTAL ausprobieren

                              Siehe ( hier ) ganz unten
                              gruss Chris

                              [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                              Comment

                              Working...