tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
338
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    xtratz xtratz ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Beiträge
    223
    Hallo Leute,

    habe ein Problem mit Smarty.
    Und zwar will ich ein Template untereinander, so oft ausgeben wie Einträge in der DB vorhanden sind.
    Leider wird immer nur der lez´tzte EIntrag angezeigt.

    Weis zuuuufällig jemand wie sich das umsetzen lässt?

    PHP-Code:
     $containerQuery function_dbQuery('select * from container');
       
       
       while(
    $containerRow function_dbFetchArray($containerQuery)){
       
          
    $smarty->assign('container_header'$containerRow['container_name']);
          
       } 
    Gruss und Danke
     

  2. #2
    Avatar von ronaldo84
    ronaldo84 ronaldo84 ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Berlin / Rudow
    Beiträge
    453
    Du kannst auch einfach das komplette Ergebnis des Querys an das Template übergeben und dann mittels foerach die Werte auslesen.

    Bsp:

    Logik Datei:
    PHP-Code:
      $sql 'SELECT contact_id, name, nick FROM contacts ORDER BY contact';
    $smarty->assign('kontakte'$db->getAssoc($sql)); 
    Im Template
    HTML-Code:
    {foreach key=cid item=con from=$kontakte}
      <a href="kontact.php?contact_id={$cid}">{$con.name} - {$con.nick}</a><br />
    {/foreach}
    Aus der Smarty Dokumentation.
     
    Bitte alle erledigten Themen abschliessen.

  3. #3
    xtratz xtratz ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Beiträge
    223
    Danke DIr.

    Kannst DU mir nochmal kurz helfen bitte?
    Denn ich bekomme entweder gar nix oder nur der erste Inhalt bzw. alle Werte vom ersten Eintrag hintereinander ausgegeben.

    Wäre nett wenn Du mal über meinen COde schauen könntest, wo evtl. der Fehler liegt.

    PHP-Code:
     $containerQuery function_dbQuery('select * from container');
       
    $smarty->assign('container_header'function_dbFetchArray($containerQuery)); 
    PHP-Code:
    {foreach key=container_id item=container_name from=$container_header}

    {
    $container_name}

    {/foreach} 
    Ausgabe:

    1 Kategorien links testinhalt 1 1

    Die DB FUnktionen sind im Prinzip dasselbe wie Du oben im Beispiel geschrieben hast.

    Danke Dir.
    Geändert von xtratz (11.07.07 um 12:24 Uhr)
     

  4. #4
    Avatar von ronaldo84
    ronaldo84 ronaldo84 ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Berlin / Rudow
    Beiträge
    453
    Du mußt dabei deine Spaltennamen angeben. In der Foreach-Schleife gibst du ja ein item an. Im Beispiel
    Code :
    1
    
    item=con
    Wenn du nun z.B. eine Spalte mit dem Namen "preis" hast mußt du diesen so ausgeben:
    Code :
    1
    2
    3
    
    [COLOR=#000000][COLOR=#007700]{foreach [/COLOR][COLOR=#0000BB]key[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]container_id item[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]con from[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]$container_header[/COLOR][COLOR=#007700]} [/COLOR][/COLOR]
    {$con.preis}
    {/foreach}
    Für die Spalte "bezeichnung
    Code :
    1
    
    {$con.bezeichnung}
    etc. Das heißt du mußt dein en Spaltennamen verbunden mit dem . an dein Item anhängen.
    Bei der Key-Eigenschaft wird dein Primärschlüssel angegeben (z.B. key=artnr)
     
    Bitte alle erledigten Themen abschliessen.

  5. #5
    Rambomaster Rambomaster ist offline Mitglied Silber
    Registriert seit
    Feb 2007
    Beiträge
    74
    PHP-Code:
    {foreach key=container_id item=con from=$container_header}

    Für den Namen: {$con.name}<br />
    Für den Nick: {$con.nick}

    {/foreach} 
    Die Foreach-Schleife von Smarty kannst du mit der von PHP vergleichen. Du sagst du holst dir das Array von $container_header (from=$container_header) und du sagst du willst nachher über con auf das Array zugreifen können (item=com).

    @edit Hmm da war einer schneller
     

  6. #6
    xtratz xtratz ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Beiträge
    223
    Ok danke euch.

    Hab das aber schon probiert weil ich mir das auch dachte.
    Jedoch fast das selbe Ergebnis mit dem Unterschied das mir nun alle Werte (Container_id, Container_name, Container_position usw.) des ersten Eintrages der Tabelle, hintereinander ausgegeben werden und immer nur der erste Buchstabe.

    Das ist komisch.

    Ne Idee?
     

  7. #7
    Avatar von ronaldo84
    ronaldo84 ronaldo84 ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Berlin / Rudow
    Beiträge
    453
    Die Daten in deinem Array sind korrekt? Hast du das mla überprüft? Kannst du mal bitte deinen Quelltext posten?
     
    Bitte alle erledigten Themen abschliessen.

  8. #8
    Rambomaster Rambomaster ist offline Mitglied Silber
    Registriert seit
    Feb 2007
    Beiträge
    74
    Ich habe meine Ausgaben immer noch zusätzlich in ein weiteres Array gespeichert. Also zum Beispiel so...

    PHP-Code:
    while($containerRow function_dbFetchArray($containerQuery)){
          
    $container[] = $containerRow;
    }

    $smarty->assign("container_header"$container); 
    Damit hatte ich eigentlich noch nie Probleme.
     

  9. #9
    xtratz xtratz ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Beiträge
    223
    Also ich kann machen was ich will.
    Auch das Beispiel von Rambomaster klappt, aaaaber immer nur der erste Buchstabe wird angezeigt.

    Hier mal der Code:

    PHP-Code:
    $containerQuery function_dbQuery('select * from container');
       
       
    $smarty->assign('container_header'function_dbFetchArray($containerQuery));  
       
      
       
       
        
    // $smarty->assign('container_header', $containerRow['container_name']);
          
       
       
        
    $links $smarty->fetch('container/test.html');
        
    $smarty->assign('links'$links); 

    HTML-Code:
    {foreach key=container_id item=con from=$container_header}
    
    {$con.container_name}<br>
    
    {/foreach}
    Die Werte aus dem Array sind korrekt.
    Wenn ich Sie mit einer normalen Whileschleife ausgeben lasse. Das klappt aber nicht mehr sobald ich diese in eine Smarty Variable packe.
     

  10. #10
    xtratz xtratz ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Beiträge
    223
    Hmm Ok!

    Habs hinbekommen mit letzterem Versuch.
    Hatte nur die Variable im Template nicht mit geändert ;-(

    Schussel!

    Ich Danke euch für die Hilfe!

    Gruss
     

Ähnliche Themen

  1. CKFinder wer kennt ihn und kennt sich damit aus?
    Von Lenox im Forum Coders Talk
    Antworten: 0
    Letzter Beitrag: 29.12.08, 00:11
  2. Smarty Problem! kennt sich einer aus?
    Von xtratz im Forum PHP
    Antworten: 5
    Letzter Beitrag: 06.07.07, 16:17
  3. Wer kennt sich gut mit weblication aus?
    Von zwutz im Forum Content Management Systeme (CMS)
    Antworten: 0
    Letzter Beitrag: 21.10.05, 14:02
  4. Antworten: 0
    Letzter Beitrag: 13.10.05, 08:01
  5. Frage zu SSI - wer kennt sich aus?
    Von firemike im Forum Coders Talk
    Antworten: 0
    Letzter Beitrag: 25.03.04, 14:50