[Variablen] Newsarray an Smarty übergeben & sortiert ausgeben lassen

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

  • [Variablen] Newsarray an Smarty übergeben & sortiert ausgeben lassen

    Hi @all und ein frohes neues Jahr!

    Ich stehe vor einem Problem. Ich arbeite mit PHP & Smarty und möchte ein Array an Smarty übergeben. Smarty soll dann die Datensätze nach Jahr und Tag sortiert ausgeben:

    NEWS AUS 2006
    Dienstag, 6.1.2006
    - NEWS 9 (10:24 UHR)
    - NEWS 8 (10:21 UHR)
    - NEWS 7 (10:10 UHR)

    NEWS AUS 2005
    Dienstag, 6.1.2005
    - NEWS 6 (15:33 UHR)
    - NEWS 5 (11:24 UHR)
    - NEWS 4 (08:11 UHR)

    Sonntag, 4.1.2005
    - NEWS 3 (12:26 UHR)
    - NEWS 2 (11:25 UHR)
    - NEWS 1 (10:24 UHR)

    Die Datenbank-Tabelle sieht ungefähr so aus:
    NEWS_ID
    NEWS_DATUM
    NEWS_TITEL
    NEWS_TEXT

    Der PHP-Code ungefähr so:


    PHP-Code:
    ...
    $news = array();
    while(
    $row $sql->fetchrow())
    {
         
    array_push($news$row);
    }

    $smarty->assign('news'$news);
    ... 
    Dann ein Smarty-Template nehmen:
    PHP-Code:
    {foreach from=$news item=wert}
       {
    $wert->NEWS_DATUM}
       
    usw., usw.,....
    {/foreach} 
    Geht ja eigentlich auch, nur eben nicht sortiert, so wie ich es oben angegeben habe

    Wäre toll, wenn mir Jemand helfen könnte, denn ich bin nach 2 Tagen echt am verzweifeln...
    Zuletzt geändert von Smarty; 04.01.2006, 11:47.

  • #2
    Wieso sortierst du die News nicht schon beim auslesen?

    Kommentar


    • #3
      Gute Frage, weil ich bescheuert bin?
      Ne, ich hab da im Moment echt ne Blockade im Kopf. Warum, das wissen nur die Götter...

      Kommentar


      • #4
        Na dann sortier beim auslesen.

        Dafür braucht man aber keine 2 Tage.

        Kommentar


        • #5
          O.K., mag sein, aber ich wollte es eben im Template zurechtstückeln...
          Trotzdem danke.

          Kommentar


          • #6
            Du kannst dir durchaus auch einen Modifikator schreiben.

            Ist nicht weiter kompliziert.

            Kommentar


            • #7
              Könntest du mir ein Tipp geben, wie ich das am Besten sortiere beim auslesen?

              Kommentar


              • #8
                mittels

                PHP-Code:

                ORDER BY feldname 
                das man am Ende der SQL Query anhängt. Nach welchem Feld du sortierst mußt du selber wissen, da ich deine Datenbankstruktur nicht kenne!

                Kommentar


                • #9
                  Hihi, ja das kenne ich doch
                  Ich meinte ja damit, dass ich den ganzen Schmu so ausgegeben bekomme, so wie ich oben geschrieben hatte.

                  Kommentar


                  • #10
                    Bahnhof? Ich versteh gerade nicht was du meinst, sorry

                    Kommentar


                    • #11
                      O.K. Ik nigt guf schpregge deutsch Nein, Spaß beiseite!

                      Gehe mal bitte auf http://www.winfuture.de/
                      Genau so, sollen die News ausgegeben werden, jedoch nicht mit PHP/HTML-Geschmuddel, sondern durch Ausgabe in einem Smarty-Template.

                      Kommentar


                      • #12
                        Mittels {foreach}

                        würde ich vorschlagen.

                        Dann checkst du halt bei jedem Durchlauf ob sich das Datum geändert hat und ziehst dann die Headline ein.

                        Kommentar


                        • #13
                          Danke, soweit war ich schon die Tage, aber bekomme eben nicht unterschieden, ob mehrere News an einem Tag geschrieben wurden, um nur eine Headline mit Datum anzuzeigen.
                          Hier das Template

                          Code:
                          <div id="archivebox">
                          <div class="box_newsticker">
                          {if $showheader==1}
                          <div class="box_innerhead">{$lang.title_newsticker}</div>
                          {/if}
                          {foreach from=$news_items item=news name=dn}
                          
                          {assign var=SameDay value=$news->time_start|date_format:"%d.%Y"}
                          
                          {* ------ TAG UND DATUM ------ *}
                          <div class="newsticker_header">
                          <span class="time_ticker">{$news->time_start|date_format:"%A, %d.%B %Y"}</span>
                          </div>
                          
                          
                          {* ------ NEWSTITEL ------ *}
                          <div class="floatcontent">
                          <h2><a class="ticker" href="index.php?area={$area}&amp;p=news&amp;newsid={$news->newsid}">
                          {$news->title|sslash}</a></h2>
                          <br />
                          
                          {* ------ NEWSBILD ------ *}
                          {if $news->icon!=''}
                          <a href="{$news->link}"><img src="uploads/newscat_icons/{$news->icon}" alt="" border="0" align="left" /></a>
                          {/if}
                          
                          {if $news->image && $news->icon==''}
                            <a href="index.php?area={$area}&amp;p=news&amp;newsid={$news->newsid}">
                          <img src="{$news->image}" alt="" border="0" align="{$news->image_align|default:'left'}" /></a>
                          {/if}
                          
                          {* ------ NEWSINTRO ------ *}
                          {if $news->shortintro}
                            <div class="text_ticker">{$news->shortintro}</div>
                          {/if}
                          
                          {* ------ NEWTEXT ------ *}
                          {if $news->text}
                           <div class="newstext">
                          
                          {* ------------ HIER WIRD UNTERSCHIEDEN, OB ARCHIV ODER STARTSEITE ------------ *} 
                          {if $smarty.request.p=='newsarchive'}
                          {$news->text|sslash}
                          {else}
                          {$news->text|truncate:300|strip_tags}
                          {/if}
                           </div>
                          {/if}
                          
                          </div>
                          
                          
                          {$news->time_start|date_format:'%H:%M'},&nbsp;
                          <a class="newsintro"  href="index.php?area={$area}&amp;p=user&amp;id={$news->uid}">{$news->uname}</a> &nbsp;|&nbsp; 
                          <a class="newsintro"  title="{$lang.readmorenews}" 
                          href="index.php?area={$area}&amp;p=news&amp;newsid={$news->newsid}">
                          
                          {* {$lang.readmorenews}  *}
                          
                          {$news->hits} 
                          
                          {$lang.hitstext}</a>
                          
                          {if $news->comments} | 
                          <a class="newsintro"   href="index.php?area={$area}&amp;p=news&amp;newsid={$news->newsid}#comments">
                          
                          
                          {$news->comments} {$news->commtext}</a>
                          {/if} | 
                          <a class="newsintro"  href="index.php?area={$area}&amp;p=news&amp;newsid={$news->newsid}&amp;print=1" target="_blank">
                          {$lang.printtext}
                          </a>
                          
                          <div align="right">
                            <a title="{$lang.readmorenews}" href="index.php?area={$area}&amp;p=news&amp;newsid={$news->newsid}">
                          <img class="absmiddle" src="{$img_folder}/button_readnews.gif" alt="{$lang.readmorenews}" border="0" />
                          </a>
                          </div>
                          
                          {if !$smarty.foreach.title.last}
                            <div class="news_spacer" style="clear:both">
                          <img src="{$img_folder}/pixel.gif" alt="" width="7" height="12" />
                          </div>
                          {else}
                            <div style="padding:3px;clear:both">&nbsp;</div>
                          {/if}
                          
                          {/foreach}
                          Zuletzt geändert von Smarty; 04.01.2006, 13:21.

                          Kommentar


                          • #14
                            Du mußt am Ende des Foreaches das Datum des Umlaufes in eine Tempvar packen und oben überprüfen ob das Datum des nächsten Umlaufes ungleich des letzten (als des Tempdatums) ist.

                            Anhand der Info kannst du dann die Headline ausgeben.

                            Und brich bitte den Code um. Ich hab nen Megascrollbar.

                            Kommentar


                            • #15
                              WOW, man bin ich ein Ochse...
                              LÖSUNG:

                              Code:
                              {foreach from=$news_items item=news name=dn}
                              {if $DateTemp != $news->time_start|date_format:"%d.%Y"}
                                
                                -- ZEIGE HEADLINE --
                              
                              {/if}
                                
                              -- NEWS --
                              
                              {assign var=DateTemp value=$news->time_start|date_format:"%d.%Y"}
                              {/foreach}
                              DANKE DIR FÜR DEN ARSCHTRITT!!!

                              Kommentar

                              Lädt...
                              X