php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.10.2004, 07:38  
Gast
 
Beiträge: n/a
Standard Zahlen- und Datumsformat...

Hallo zusammen,
ich habe da ein Problem, dass mir schon einige schlaflose Nächte erbracht hat

Ich habe eine kleine mysql Datenbank erstellt. Funktioniert auch alles soweit.
Leider habe ich mit den Formaten ein Problem. Wie kann ich die ausgabe von Zahlen formatieren?

1. Tabelle in mysql hat eine spalte "wert" Typ "int".
Darin kann ich ja nur einfache Zahlen speichern z.B. "70", oder???
Ich möchte mit php die Daten abfragen und "70,00 €" ausgeben.
Was kann ich machen??????

2. Frage ist ähnlich.
Das Datumsformat ist z.Z. "2004-05-22"...
Kann ich das auch so ausgeben "22.05.2004"?????


Wäre schön, wenn mir jemand einen Tipp geben kann...
Danke im Voraus!
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.10.2004, 08:40  
Gast
 
Beiträge: n/a
Standard

1.

Zahlentypen und Ihre Wertigkeit
int, float, double long usw. einfach mal nachlesen und du weist warum der typ INT nicht Hallo speichern kann

zu 1.
echo $row['preis'].'&euro';

zu 2.
speichere einen unixstamp und du kannst die ausgabe formatieren wie du willst

oder:
mktime benutzen

oder
$var = '2004-05-22';
$varArray = explode('-', $var);
echo $varArray[2].'.'.$varArray[1].'.'.$varArray[0];


mfg
 
Alt 29.10.2004, 08:56  
Gast
 
Beiträge: n/a
Standard

Hallo,

Zu1: Also, du kannst zum Beispiel das Feld der DB einfach in ein char oder varchar umwandeln. Dann kannst du Formate der Form 70,00 Euro speichern. oder du gehst folgendermaßen vor.

class MyClass{

var feld1; //wichtig; Die Variablennamen müssen genau wie die Felder der
var feld2; //Tabelle heißen.
var feld3_id; //Das idFeld aus der DB

function select() {

$query = "SELECT * FROM MyTable";
$id = mysql_query($query); //Führt query aus

while ($zeile = mysql_fetch_assoc($id)) {

//solange Abfrage Ergenisse liefert
//mysql_fetch_assoc() liefert eine Zeile des result Sets als Assoziatives Array
//mit Feldnamen als keys

$mc = new MyClass(); // Erzeugen eines Objekts

foreach ($zeile as $key => $value)
$mc -> $key = $value;

$mc -> feld = $mc -> feld.", 00 Euro"; //Falls du beim int bleiben willst
$mc -> feld = convSQLDate_GermanDate($mc -> feld); //Datumsformat.

$array[$mc -> feld3_id] = $mc; //ein Array mit den Objekten füllen
}
mysql_free_result($id);
return $array;
}
}


Abrufen der Daten:

<?php

include_once("./PfadZurKlasse.php");
include_once("./tools.php");

$result = MyClass::select();

foreach($result as $key => $value) echo $value->feld1."*";

?>

Achso: die Convert Funktion. Schreib sie am besten in eine tools.php

function convSQLDate_GermanDate($date) {
splitSQLDate($date, & $day, & $month, & $year);
$germandate = $day.".".$month.".".$year;
return $germandate;
}

und die split funktion

function splitSQLDate($date, & $day, & $month, & $year) {
// Datum aus der DB kommt in der Form Y-m-d
preg_match("/(\d{4})\-(\d{2})\-(\d{2})/", $date, $matches);

$day = $matches[3];
$month = $matches[2];
$year = $matches[1];
}
 
Alt 29.10.2004, 09:01  
Gast
 
Beiträge: n/a
Standard

SELECT * FROM ( prima tipp select mit * )

MyClass::select(); ( punktnotation ... viel spass in php5 )
 
Alt 29.10.2004, 09:02  
Gast
 
Beiträge: n/a
Standard

2.
PHP-Code:
setlocale(LC_TIME"de_DE");
echo 
strftime(%d.%m.%Y,strtotime($DATUM)); 
http://de2.php.net/manual/de/function.strftime.php
http://de2.php.net/manual/de/function.strtotime.php

Zitat:
Zitat von Maltaalataion
function splitSQLDate($date, & $day, & $month, & $year) {
// Datum aus der DB kommt in der Form Y-m-d
preg_match("/(\d{4})\-(\d{2})\-(\d{2})/", $date, $matches);

$day = $matches[3];
$month = $matches[2];
$year = $matches[1];
}
1. Warum hier Referenzen?
2. preg_match ist ein bischen zu viel des guten, es gibt genügend Datum und Zeit Funktionen die alles liefern was man braucht ?

3. Um die hässliche Wert-Zuweisung bei Split-Funktionen zu umgehen gibt es list();
 
Alt 29.10.2004, 09:35  
Gast
 
Beiträge: n/a
Standard

Zitat:
SELECT * FROM ( prima tipp select mit * )

MyClass::select(); ( punktnotation ... viel spass in php5 )
Wieso? Ist in php5 die Syntax anders? Hatte noch keine Zeit mich damit zu beschäftigen.

Zitat:
2. preg_match ist ein bischen zu viel des guten, es gibt genügend Datum und Zeit Funktionen die alles liefern was man braucht />
Das hab ich aus einem alten script. Damals hatte ich noch nicht so den Überblick, kannte mich aber von Java her mit RegEx und Musternvergleichen aus. Das hat hingehauen und ich habs einfach immer übernommen. Irgendwann ist mir dann das mit dem Rad und dem zweimal erfinden in den Sinn gekommen. Wie auch immer.
 
Alt 29.10.2004, 11:39  
Gast
 
Beiträge: n/a
Standard

aslo ich hatte in php5 immer probleme mit aufruf einer function in einer klasse per punktnotation
meine Meinung im Moment ist am besten immer ein object erzeugen und per pfeilnotation zugreifen

---
Bei der SQL-Anweisung SELECT * FROM ... muss das Datenbank-Management-System (DBMS) alle Spalten der betreffenden Datensätze selektieren, auch wenn in der anschließenden Verarbeitung nur ein Teil davon wirklich gebraucht wird. Das ist langsam und schlicht und einfach unsinnig, und die unnötigen Spalten verhindern unter Umständen, dass der integrierte Optimizer die Query effizient ausführen kann.
http://www.php-faq.de/q/q-sql-select.html
 
Alt 29.10.2004, 12:01  
Gast
 
Beiträge: n/a
Standard

Probleme beim statischen Aufrufen einer Methode (::) enstehen nur, wenn du innerhalb der Methoden Beziehungen auf das eigene Objekt nehmen willst ($this).Da ja kein Objekt instanziiert bzw. nicht über dieses auf die Methode zugegriffen wird meckert php.
 
Alt 29.10.2004, 13:36  
Gast
 
Beiträge: n/a
Standard

Zitat:
auch wenn in der anschließenden Verarbeitung nur ein Teil davon wirklich gebraucht wird

Klar. Aber zb Aufruf

$user::selectAll() // Alle Nutzer der DB mit allen Werten der Felder

Derjenige, der das template baut, braucht nur $user zu kennen und kann sich darauf verlassen, dass in $user->name immer der Username steht in $user->email immer die Mail usw. Ob ders dann braucht oder nicht ist eine andere Sache. Sicher, wenn der die zb. die mail niemals braucht, dann werde ich sie auch nicht aus der DB holen. Oft stellt sich das dann aber erst später heraus, oder der Kunde kommt mit einem neuen Wunsch. So bin ich flexibeler. Optimieren kann man immer noch.

Aber eo etwas ist doch sicher von Vorteil. Wer die Templates baut, muss von der DB und dem php nichts wissen. Er braucht nur die smarty Platzhalter zu setzen.

<table>
{foreach item=user key=uid from=$user}

<tr><td> Username:<td>

{if $user->name}
<td>{user->name}</td>
{else}
<td> kein Nutzername vorhanden</td>
{/if}</tr>

<tr><td> Mail:<td>
<td>{user->mail}</td></tr>
{/foreach}
</table>
 
Alt 29.10.2004, 13:41  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Am besten nimmst du für das Feld wert den Datentype DECIMAL().
Ansonsten geht es mit CONCAT

Code:
SELECT CONCAT(wert,',00 €') wert, DATE_FORMAT(datum,'%d.%m.%Y') datum FROM tabelle
DiBo33 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[gelöst] Zahlen sortieren mit Varchar moose Datenbanken 8 21.07.2008 13:53
Zahlen mit 0 darstellen? GSJLink PHP Tipps 2007 5 02.04.2007 11:05
Zahlen (Double) formatiert darstellen Marie PHP Tipps 2007 2 24.01.2007 22:32
Doppelte Einträge nur einmal Zählen Zangelo Datenbanken 2 06.12.2006 17:41
Brauche Funktion um Strings aus einer txt-Datei zu zählen mark_gebert PHP Tipps 2006 11 16.08.2006 14:30
Zahlen effektiv verschlüsseln Jacks Rache PHP Tipps 2006 20 10.07.2006 01:44
Zahlen zusammenzählen Sonja PHP Tipps 2006 11 28.03.2006 11:07
Nur Zahlen im Textfeld Broadcast HTML, Usability und Barrierefreiheit 3 03.01.2006 17:05
Zahlen aus Array löschen, die größer (kleiner) sind als X R4v3r PHP Tipps 2005 5 06.03.2005 19:00
Tabellen nach Zahlen sortieren Datenbanken 2 29.11.2004 00:03
Formatierung von Zahlen durch Punkte Beatbox PHP Tipps 2004 5 06.10.2004 10:49
[Erledigt] Bestimmte Zahlen in zufälliger Reihenfolge ausgeben PHP Tipps 2004 12 15.09.2004 20:04
[Erledigt] Zählen wie viele Arrays bereits diesen Wert haben PHP Tipps 2004 6 04.09.2004 01:04
Mein Script soll Seitenaufrufe eines Benutzers zählen PHP Tipps 2004 12 13.07.2004 16:37
[Erledigt] &quot;echte&quot; Downloads zählen: wie geht sowas? PHP Tipps 2004 22 28.06.2004 09:50

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-tipps-2004/11394-zahlen-und-datumsformat.html, preg_match datum und zeit, smarty double werte formatieren, php smarty umwandeln y m d, umwandeln datum in zahl, smarty, formatierung zahlen echo, y-m-d umwandeln smarty, mysql format zahlen speichern, php5 zahlen datum, html zahlen in datum darstellen, php ausgabe von zahlen formatieren, php5 datumsformatierung, echo zahl formatieren in date php, datumsformat html in zahlen, smarty double wert in euro umwandeln, smarty textbox nur ziffern, zahlen und datumsformat, preg_match y-m-d, \varchar umwandeln\ \in char\

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.