Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PEAR, PECL und Frameworks > Smarty und number_format()
Antwort
 
Themen-Optionen
Alt 13.02.2007, 13:33   Nach oben    #1
Berti
Benutzer
 
Registriert seit: 18.06.2006
Ort: Straubing
Beiträge: 85
Standard Smarty und number_format()

Hi ich lasse mit folgender Abfrage alle Suchergebnisse suchen.

PHP-Code:
/* TEMPLATE FESTELGEN
   Damit das System weis, welche Seite angezeigt
   werden soll, wird hier die "Body-Variable"
   definiert. */
$smarty->assign('body''results');

$resultDB $db->query("SELECT
                            `ID`,
                            `title`,
                            `artid`,
                            `isbn`,
                            `price`,
                            `shipping`
                        FROM
                            `bero__articles`
                        WHERE
                            `check` = '1'"
);

if (
$db->num_rows($resultDB))
{
    
// Leeres Array erzeugen
    
$results = array();

    for (
$i 0$i $db->num_rows($resultDB); $i++)
    {
        
$row      $db->fetch_assoc($resultDB);
        
$result[] = $row;
    }

    
// In Smarty speichern
    
$smarty->assign('search_results'$result);
}

// Anzahl der gefundenen Datensätze in
// Smarty speichern
$smarty->assign('result_nb'$db->num_rows($resultDB)); 
Mit dem folgenden Code lasse ich die Ergebnisse aus dem Array, das erzeugt wurde dann ausgeben.
HTML-Code:
{foreach from=$search_results item=result}
<!-- result ID #{$result.ID} -->
<fieldset id="field_1">
  <legend>{$result.title}</legend>

  <b>Artikelnummer:</b>
  {$result.artid}
  <div id="clr"></div>

  <b>ISBN-Nummer:</b>
  {$result.isbn}
  <div id="clr"></div><br>

  <b>Preis:</b>
  <!-- hier der preis -->
  <div id="clr"></div>

  <b>Versandkosten:</b>
  <!-- hier die versandkosten -->
  <div id="clr"></div>
</fieldset>
{/foreach}
Wie kann ich die Werte aus dem Feld `price` und `shipping` mit number_format() in einem Smarty-Template formatieren. ODER wie müsste ich den o.g. PHP-Code umarbeiten, damit ich folgende number_format()-Ausgabe durchführen kann und die Werte dann wieder korrekt ans Template übergeben werden?

PHP-Code:
$numer ''// Irgendeine Zahl
$value str_replace(',''.'$number);
echo 
number_format($value 2',''.') . '&nbsp;€'
Berti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.02.2007, 13:40   Nach oben    #2
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.627
Standard

Bitte beachte beim nächsten Mal die Wahl des Forums. Smarty ist ein Thema, welches in das Forum "PEAR, PECL und Frameworks" passt.
Danke.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.02.2007, 15:14   Nach oben    #3
Artemis
Semantic Web Fanatic
 
Benutzerbild von Artemis
 
Registriert seit: 03.06.2006
Beiträge: 236
Standard

Von was für einem Datentyp sind denn price und shipping?

Warum willst du erst alle Kommata und Punkte aus der Zahl entfernen und dann wieder mit number_format() formatieren?
__________________
Applikations-Programmierung:
BlitzMax, BlitzPlus

Webentwicklung:
PHP, (X)HTML, CSS, JavaScript, MySQL


Artemis ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.02.2007, 19:58   Nach oben    #4
Berti
Benutzer
 
Registriert seit: 18.06.2006
Ort: Straubing
Beiträge: 85
Standard

Beide Felder sind char.

Ich formatiere es deswegen, weil ich dann die werte mit PHP verrechne. Und manche Werte werden auch nur im Format 1.0 eingegeben. Und drum will ich alle Werte im Format x.xx € mit number_format() formatieren.
Berti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 20:12   Nach oben    #5
Berti
Benutzer
 
Registriert seit: 18.06.2006
Ort: Straubing
Beiträge: 85
Standard

Hallo ich habe jetzt mal versucht ein neues Plugin zu erstellen.

PHP-Code:
<?php
    
function smarty_modifier_number_format($string)
    {
        return 
number_format($string2',''.') . '&nbsp;€';
    }
?>
Wenn ich dieses Plugin jetzt mit folendem aufrufen will funktioniert es nicht.
HTML-Code:
{$result.price|number_format}
{$result.price} gibt den Wert in der Form x.xx oder x.x aus.

Wo liegt da mein Fehler?
Berti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 20:23   Nach oben    #6
Artemis
Semantic Web Fanatic
 
Benutzerbild von Artemis
 
Registriert seit: 03.06.2006
Beiträge: 236
Standard

Und was gibt Smarty ohne |number_format aus?

Außerdem wäre so etwas wie currency_format besser.
__________________
Applikations-Programmierung:
BlitzMax, BlitzPlus

Webentwicklung:
PHP, (X)HTML, CSS, JavaScript, MySQL


Artemis ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 21:07   Nach oben    #7
Berti
Benutzer
 
Registriert seit: 18.06.2006
Ort: Straubing
Beiträge: 85
Standard

Wie gesagt:
{$result.price} alleine gibt einen "unformatierten" Wert aus der Datenbank aus.
{$result.price|number_format} soll einen "formatierten" Wert im Format x.xx € ausgeben.
Berti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 21:12   Nach oben    #8
CIX88
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 576
Standard

Wie wäre es mit money_format() ?
(nur ein Vorschlag)
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 23:26   Nach oben    #9
robo47
BIN EIN KRASSA HELD!!!111
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.174
Standard

bin mir nicht sicher, aber kann es sein, dass der Datentyp ein Problem ist ? ich weis nicht wie Smarty das ganze implementiert, aber ein Cast Richtung float kann vielleicht helfen, weil die Funktion mit einem String nicht klar kommt ? Der String hat vielleicht auch noch irgendwo ne Leerstelle ?

mfg
robo47
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.02.2007, 07:22   Nach oben    #10
Artemis
Semantic Web Fanatic
 
Benutzerbild von Artemis
 
Registriert seit: 03.06.2006
Beiträge: 236
Standard

Also sieht der unformatierte Wert so aus: 1435,23?

Wenn ja, musst du deine Funktion ein bisschen ändern.
PHP-Code:
<?php

function smarty_modifier_money_format($sString)
{
  
$fNumber = (float) str_replace(',''.'$sString);
  return 
number_format($fNumber2',''.') . '&nbsp;€';
}

?>
__________________
Applikations-Programmierung:
BlitzMax, BlitzPlus

Webentwicklung:
PHP, (X)HTML, CSS, JavaScript, MySQL


Artemis ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.02.2007, 11:17   Nach oben    #11
Berti
Benutzer
 
Registriert seit: 18.06.2006
Ort: Straubing
Beiträge: 85
Standard

Ok. Wenn ich dieses Plugin dann habe, müsste ich es doch eigentlich dann mit folgendem Ausdruck zur Anwendung bringen.

{$eine_variable|number_format}

Oder? So funktioniert es nämlich leider nicht.
Jetzt wird nämlich nur noch die erste Stelle einer Zahl ausgegeben
Also wenn ich den Wert 1.56 habe wird jetzt nur noch 1 ausgegeben

Geändert von Berti (17.02.2007 um 11:19 Uhr).
Berti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.02.2007, 11:49   Nach oben    #12
Artemis
Semantic Web Fanatic
 
Benutzerbild von Artemis
 
Registriert seit: 03.06.2006
Beiträge: 236
Standard

Müsste ja auch money_format heißen.

Oder der Input-String hat doch ein anderes Format.

PHP-Code:
<?php

function smarty_modifier_money_format($sString)
{
  
$fNumber = (float) str_replace(',''.'$sString);
  return 
number_format($fNumber2',''.') . '&nbsp;€';
}

echo 
'<pre>'.smarty_modifier_money_format('124456,23').'</pre>';

?>
Das gibt folgendes aus:
Code:
124.456,23 €
Also richtig. Das Problem liegt demnach bei dir.
__________________
Applikations-Programmierung:
BlitzMax, BlitzPlus

Webentwicklung:
PHP, (X)HTML, CSS, JavaScript, MySQL


Artemis ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.02.2007, 04:39   Nach oben    #13
SRIT
Neuer Benutzer
 
Registriert seit: 21.02.2007
Beiträge: 8
Standard

Algemein gesagt, würde ich Preise und ähnliche Zahlen, die im deutschen, mit einem Komma besetzt werden (und im englischen, mit einem Punkt), als Float speichern, ob nun im Skript oder in der Datenbank. Dabei erledigen sich Umformatierungen, von selbst und man kann besser mit den Zahlen arbeiten.
PHP-Code:
function smarty_modifier_number_format($iNumber$iDecPlaces=2$sDecSep=','$sThSep='.')
{
    return 
number_format($iNumber$iDecPlaces$sDecSep$sThSep);

Der Modifier funktioniert definitiv!

Code:
{$meine_smarty_var|number_format}
//bzw.
{$meine_smarty_var|number_format:3:',':'!'}
//erreicht, dass drei Stellen nach dem KOmma angezeigt werden, wir ein Komma als Dezimaltrenner bekommen und ein '!' als Tausendertrenner
Die Parameter nach number_format, sind nicht zwingend erforderlich!
SRIT ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mehrsprachigkeit mit Smarty Eyüp PEAR, PECL und Frameworks 7 08.06.2007 15:40
Verständnissfrage zu Smarty la-finest PEAR, PECL und Frameworks 7 26.09.2006 19:25
Smarty - Verschachtelungen? ljungi PEAR, PECL und Frameworks 5 31.03.2006 22:15
Navigation auf Smarty umstellen?! napsio PEAR, PECL und Frameworks 4 25.01.2006 19:22
PEAR Alternative zu Smarty ex³ PEAR, PECL und Frameworks 5 08.11.2005 21:19


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:05 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44