- Home
- Categorie
- Coding e Sistemistica
- PHP
- scomporre data da database
-
Grazie ma mi restituisce questo errore
A non well formed numeric value encountered in <b>xxx.php
Forse pui' essere utile se l'elemento $data che estraggo proviene da un ciclo while
[PHP] $data = $company_hits->Fields('data');[/PHP]
-
E' errato il suggerimento proposto da dymissy per il motivo che la funzione date accetta, come parametro facoltativo, un timestamp e non una data formattata, per cui hai bisogno di convertire la data da te estratta prima di riformattarla come credi.
Sostanzialmente, il codice che ti serve è il seguente:
[PHP]echo date("m-d-Y", strtotime($data));[/PHP]
-
Ha ragione Blancks,
ho dato per scontato che fosse il timestamp senza pensare che è già stata formattata la data.Sorry.
-
Perfetto!
Vi ringrazio!!!
Si pui' impostare la lingua italiana e che visualizzi il nome del mese in automatico in italiano ? Ad esempio - sabato 15 ottobre 2009 - ?
Oppure bisogna inserire i mesi in un array e scomporre la data?Grazie!!
Mitici e velocissimi!!
-
Ti conviene fare una funzione apposita a questo punto:
[php]function date_format($data)
{
$ts = strtotime($data);$mese = array(); $mese[1] = 'Gennaio'; $mese[2] = '.....'; #etc per tutti e 12 i mesi $giorno = array(); $giorno['Mon'] = 'Lunedì'; $giorno['Tue'] = 'Martedì'; .. per tutti e 7 i giorni return $giorno[date("D", $ts)] . " " . date("j", $ts) . " " . $mese[date("n", $ts)] . " " . date("Y", $ts);
}[/php]
Così che poi ti basta richiamarla molto semplicemente dove ti serve:
[php]$data = date_format($company_hits->Fields('data'));
echo $data;[/php]Fammi sapere
Referenze di supporto:
-
Ciao, ho provato a inserire quello che mi hai suggerito
[PHP]<?
function date_format($data)
{
$ts = strtotime($data);$mese = array(); $mese[1] = 'Gennaio'; $mese[2] = 'Febbraio'; $mese[3] = 'Marzo'; $mese[4] = 'Aprile'; $mese[5] = 'Maggio'; $mese[6] = 'Giugno'; $mese[7] = 'Luglio'; $mese[8] = 'Agosto'; $mese[9] = 'Settembre'; $mese[10] = 'Ottobre'; $mese[11] = 'Novembre'; $mese[12] = 'Dicembre'; $giorno = array(); $giorno['Mon'] = 'Lunedi'; $giorno['Tue'] = 'Martedi'; $giorno['Wed'] = 'Mercoledi'; $giorno['Thu'] = 'Giovedi'; $giorno['Fri'] = 'Venerdi'; $giorno['Sat'] = 'Sabato'; $giorno['Sun'] = 'Domenica'; return $giorno[date("D", $ts)] . " " . date("j", $ts) . " " . $mese[date("n", $ts)] . " " . date("Y", $ts);
}
while (!$company_hits->EOF) {
$id = $company_hits->Fields('id');
$data = date_format($company_hits->Fields('data'));
$link = $company_hits->Fields('link');$i++;
?>[/PHP]
Poi ho aggiunto
[PHP]echo $data; [/PHP]E mi restituisce questo errore:
Cannot redeclare date_format() in xxxxx.php on line 237
cioè a questa riga
[PHP] return $giorno[date("D", $ts)] . " " . date("j", $ts) . " " . $mese[date("n", $ts)] . " " . date("Y", $ts);[/PHP]
-
Devo aver adoperato il nome di una funzione evidentemente già implementata da php
Prova a sostituire il nome della funzione con mydate, nella dichiarazione e nel richiamo
-
Tutto ok!:)
Cambiato il nome della funzione ed è tutto perfetto come volevo!!
Grazie!
-
Salve,
Ho provato ad usare questa funzione però mi da un errore
Ecco il codice:
[PHP] <?function mydate($data)
{
$ts = strtotime($data);$mese = array(); $mese[1] = 'Gennaio'; $mese[2] = 'Febbraio'; $mese[3] = 'Marzo'; $mese[4] = 'Aprile'; $mese[5] = 'Maggio'; $mese[6] = 'Giugno'; $mese[7] = 'Luglio'; $mese[8] = 'Agosto'; $mese[9] = 'Settembre'; $mese[10] = 'Ottobre'; $mese[11] = 'Novembre'; $mese[12] = 'Dicembre'; $giorno = array(); $giorno['Mon'] = 'Lunedi'; $giorno['Tue'] = 'Martedi'; $giorno['Wed'] = 'Mercoledi'; $giorno['Thu'] = 'Giovedi'; $giorno['Fri'] = 'Venerdi'; $giorno['Sat'] = 'Sabato'; $giorno['Sun'] = 'Domenica'; return $giorno[date("D", $ts)] . " " . date("j", $ts) . " " . $mese[date("n", $ts)] . " " . date("Y", $ts);
}
while (!$company_hits->EOF) {
$id = $company_hits->Fields('id');
$data = mydate($company_hits->Fields('data'));
$link = $company_hits->Fields('link');$i++;
}
echo $data;
?>[/php]
Ed ecco l'errore:
Fatal error: Call to a member function on a non-object in /membri/rcayla2/mydate.php on line 37Potete aiutarmi??
-
Nella funzione il blocco col while è il modo in cui l'utente prima di te richiamava il parametro della data.
La funzione mydate devi istanziarla a parte ad inizio file e richiamarla dove ti serve.
esempio:
[PHP]<?php
function mydate($data)
{
$ts = strtotime($data);$mese = array(); $mese[1] = 'Gennaio'; $mese[2] = 'Febbraio'; $mese[3] = 'Marzo'; $mese[4] = 'Aprile'; $mese[5] = 'Maggio'; $mese[6] = 'Giugno'; $mese[7] = 'Luglio'; $mese[8] = 'Agosto'; $mese[9] = 'Settembre'; $mese[10] = 'Ottobre'; $mese[11] = 'Novembre'; $mese[12] = 'Dicembre'; $giorno = array(); $giorno['Mon'] = 'Lunedi'; $giorno['Tue'] = 'Martedi'; $giorno['Wed'] = 'Mercoledi'; $giorno['Thu'] = 'Giovedi'; $giorno['Fri'] = 'Venerdi'; $giorno['Sat'] = 'Sabato'; $giorno['Sun'] = 'Domenica'; return $giorno[date("D", $ts)] . " " . date("j", $ts) . " " . $mese[date("n", $ts)] . " " . date("Y", $ts);
}
echo mydate('2009-10-18'); #stamperà: domenica 18 ottobre 2009
?>[/PHP]