Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Smarty mit Datenbank auslesen,nur weiser Bildschirm!

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Smarty mit Datenbank auslesen,nur weiser Bildschirm!

    Hallo Leute!

    Ich mache gerade meine ersten Gehversuche mit Smarty und habe ein Problem.

    Ich habe eine index.tpl in dem Ordner templates und und eine dazugehörige index.php!

    Hier mal der Code der index.tpl
    Code:
    <table border="1">
        {foreach item='data' from=$row_data}
        <tr><td>{$data.name}</td></tr>
     <tr><td>{$data.email}</td></tr>
     <tr><td>{$data.datum|date_format:"%H:%M"}</td></tr>
     <tr><td>{$data.lesen}</td></tr>
        {/foreach}
    </table>
    Und der Code der index.php
    PHP-Code:
    require('conf.php');
    require_once(
    'Smarty.class.php');
    $smarty =& new Smarty();
    $sqlbefehl ="
       Select
        name,
        email,
        datum,
        lesen
       From
        tabelle
       "
    ;
    $erg_data mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
    while(
    $row_data mysql_fetch_array($erg_data)){
        
    $data = array();
     
    array_push($data,$row_data);
     
     
    $smarty->assign('data',$row_data);
    }
    $smarty->display('index.tpl'); 
    Das Endresultat ist das ich keine Fehlermeldung bekomme aber auch der Bildschirm weis bleibt. Für eine kleine Hilfestellung was ich da falsch mache wäre ich dankbar.

    mfg der litter

  • #2
    Bekommst Du mit
    Code:
    <table border="1">
      <tr>
        <th>name</th>
        <th>email</th>
        <th>datum</th>
        <th>lesen</th>
      <tr>
    wenigstens die header angezeigt?
    Wie sieht es mit error_reporting, display_errors, display_startup_errors aus?

    Kommentar


    • #3
      Habe das error_reporting in der conf.php drin stehen und display_errors auch,ich bekomme keinen Fehler gemeldet!

      Der header wird ausgegeben!

      Kommentar


      • #4
        $smarty->assign('data',$row_data);

        innerhalb der schleife überschreibst du 'data' aber wieder, gell?

        schreib das mal unterhalb von der schleife.. und $data = array(); über die schleife..


        lg
        Andi

        PS: Lass dir dann vorm smart->assign(...) nochmal das data Array mittels var_dump() ausgeben..

        Kommentar


        • #5
          Habe das jetzt mal so gemacht!

          PHP-Code:
          require('conf.php');
          require_once(
          'Smarty.class.php');
          $smarty =& new Smarty();
          $sqlbefehl ="
             Select
              name,
              email,
              datum,
              lesen
             From
              tabelle
             "
          ;
          $erg_data mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
          $data = array();
          while(
          $row_data mysql_fetch_array($erg_data)){
              
           
          array_push($data,$row_data);
           
          }
          print_r($data);
          $smarty->assign('data',$row_data);
          $smarty->display('index.tpl'); 
          Und das Array mit print_r() ausgegeben
          Code:
          Array ( [0] => Array ( [0] => daniel [name] => daniel [1] => daniel@web.de [email] => daniel@web.de [2] => 1221039420 [datum] => 1221039420 [3] => 0 [lesen] => 0 ) [1] => Array ( [0] => frank [name] => frank [1] => frank@web.de [email] => frank@web.de [2] => 1221039438 [datum] => 1221039438 [3] => 0 [lesen] => 0 ) [2] => Array ( [0] => olaf [name] => olaf [1] => olaf@web.de [email] => olaf@web.de [2] => 1221039446 [datum] => 1221039446 [3] => 0 [lesen] => 0 ) [3] => Array ( [0] => sven [name] => sven [1] => sven@sven.de [email] => sven@sven.de [2] => 1221039459 [datum] => 1221039459 [3] => 0 [lesen] => 0 ) )
          Einen Fehler sehe ich schon mal,es wird jeder Datensatz doppelt ausgegeben,aber warum?

          Kommentar


          • #6
            was wird bei var_dump ausgegeben, wenn du statt

            PHP-Code:
             array_push($data,$row_data); 
            das schreibst:

            PHP-Code:
              $data[] = $row_data
            ?


            und warum genau schreibst du:

            PHP-Code:
            $smarty =& new Smarty(); 
            ?


            lg
            Andi

            Kommentar


            • #7
              Ob array_push() oder $array[] = $value; ist egal, hat den selben Effekt (steht auch im Manual).

              Und zu dem Probem. mysql_fetch_array() gibt die Daten zweifach zurück. Einmal als assoziatives Array also "name" => daniel und nochmal als numerisches Array 0 => daniel ... verwende anstatt mysql_fetch_array() am besten mysql_fetch_assoc() das liefert dir NUR ein assoziatives Array.

              Im übrigen, wenn du sowieso nur mit assoziativen Arrays arbeitest, also als Key immer die Spaltennamen, kannst du generell auf mysql_fetch_assoc() umsteigen.

              Kommentar


              • #8
                Du füllst das Array $data mit allen Datensätzen, gibst aber dann an Smarty $row_data weiter...

                Kommentar


                • #9
                  Der Code in der index.php sieht jetzt so aus
                  PHP-Code:
                  require('conf.php');
                  require_once(
                  'Smarty.class.php');
                  $smarty =& new Smarty();
                  $sqlbefehl ="
                     Select
                      name,
                      email,
                      datum,
                      lesen
                     From
                      tabelle
                     "
                  ;
                  $erg_data mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
                  $data = array();
                  while(
                  $row_data mysql_fetch_assoc($erg_data)){
                      
                   
                  $data[] = $row_data;
                   
                  }
                  var_dump($data);
                  $smarty->assign('data',$data);
                  $smarty->display('index.tpl'); 
                  und die Ausgabe mit var_dump() so
                  Code:
                  array(4) { [0]=> array(4) { ["name"]=> string(6) "daniel" ["email"]=> string(13) "daniel@web.de" ["datum"]=> string(10) "1221039420" ["lesen"]=> string(1) "0" } [1]=> array(4) { ["name"]=> string(5) "frank" ["email"]=> string(12) "frank@web.de" ["datum"]=> string(10) "1221039438" ["lesen"]=> string(1) "0" } [2]=> array(4) { ["name"]=> string(4) "olaf" ["email"]=> string(11) "olaf@web.de" ["datum"]=> string(10) "1221039446" ["lesen"]=> string(1) "0" } [3]=> array(4) { ["name"]=> string(4) "sven" ["email"]=> string(12) "sven@sven.de" ["datum"]=> string(10) "1221039459" ["lesen"]=> string(1) "0" } }
                  Also jetzt wird das richtig ausgegeben,aber wenn ich var_dump() auskommentiere wird mir nichts mehr angezeigt auser der header!

                  Kommentar


                  • #10
                    Jap Florian.. hatte ich übersehen (mysql_fetch_array).. ich dachte da hunzt array_push dazwischen..

                    zum Problem..:
                    Code:
                    <table border="1">
                        {foreach item='data' from=$row_data}
                        <tr><td>{$data.name}</td></tr>
                     <tr><td>{$data.email}</td></tr>
                     <tr><td>{$data.datum|date_format:"%H:%M"}</td></tr>
                     <tr><td>{$data.lesen}</td></tr>
                        {/foreach}
                    </table>
                    ist falsch.. machs mal so:

                    Code:
                    <table border="1">
                        {foreach from=$data item='dat'}
                        <tr><td>{$dat.name}</td></tr>
                     <tr><td>{$dat.email}</td></tr>
                     <tr><td>{$dat.datum|date_format:"%H:%M"}</td></tr>
                     <tr><td>{$dat.lesen}</td></tr>
                        {/foreach}
                    </table>

                    lg
                    Andi

                    Kommentar


                    • #11
                      Der_Brain

                      den Fehler habe ich gerade ebend selber gefunden!

                      Vielen Dank für eure Hilfe. Ich habe heute zum ersten mal versucht mit smarty zu arbeiten,ich hoffe das nun alles ohne solch Schusselfehler abläuft!

                      mfg der litter

                      Kommentar

                      Lädt...
                      X