Problem mit Smarty

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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.
    Zuletzt geändert von 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.

    Kommentar


    • #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]

      Kommentar


      • #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>"
        Zuletzt geändert von Victorious; 17.12.2005, 09:23.

        Kommentar


        • #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]

          Kommentar


          • #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"])

            Kommentar


            • #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]

              Kommentar


              • #8
                jupp

                Kommentar


                • #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?
                  Zuletzt geändert von 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]

                  Kommentar


                  • #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); 

                    Kommentar


                    • #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]

                      Kommentar


                      • #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.
                        Zuletzt geändert von Victorious; 18.12.2005, 10:19.

                        Kommentar


                        • #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

                          Kommentar


                          • #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);

                            Kommentar


                            • #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]

                              Kommentar

                              Lädt...
                              X