Newsgroup: it.comp.www.php
Titolo: Data da Function

public function select($table, $where = null, $order = null)
    {
        $q = 'SELECT * FROM '.$table;
        if($where != null)
            $q .= ' WHERE '.$where;
        if($order != null)
            $q .= ' ORDER BY '.$order;
        $query = @mysql_query($q);
        if($query)
        {
            $this->numResults = mysql_num_rows($query);
            for($i = 0; $i < $this->numResults; $i++)
            {
                $r = mysql_fetch_array($query);
                $key = array_keys($r);
                for($x = 0; $x < count($key); $x++)
                {
                    // Sanitizes keys so only alphavalues are allowed
                    if(!is_int($key[$x]))
                    {
                        if(mysql_num_rows($query) > 1)
                            $this->result[$i][$key[$x]] = $r[$key
[$x]];
                        else if(mysql_num_rows($query) < 1)
                            $this->result = null;
                        else
                            $this->result[$key[$x]] = $r[$key[$x]];
                    }
                }
            }
            return true;
        }
        else
        {
            return false;
        }
    }
$type = $_GET['type'];
	if ($type == 'modifica'){
		$db = new Database();
		$db->connect();
		$db->select('attivita','attivita_id = '.$_GET['id'].'');
		$res = $db->getResult();
	}
<input name="attivita_data" type="text" size="10" value="<?php echo
$res['attivita_datainizio']; ?>">
Quando vado a leggere i dati ottenuti dalla funzione select la data la
leggo aaaa-mm-gg proprio come da db
come faccio a visualizzarla in gg-mm-aaaa?
Poi una volta inviata dal form
	function db_update($table, $pk, $pkval){
		$query = "UPDATE ".$table." SET ";
		$trigger = 0;
		foreach($_POST as $field => $value){
		//echo $field." = ".$value."<br><br>";
		  if($trigger > 0) $query = $query . ", ";
		  $query = $query . $field." = trim('$value')";
		  $trigger++;
		}
		$query = $query . " WHERE ".$pk." = ".$pkval;
		echo $query."<br><br>";
		if($result = mysql_query($query)) return(0);
		else echo(print $query);
	}
ho sempre il problema di convertire la data italiana in data inglese
come risolvo sto problema?

 come risolvo sto problema?
il manuale, questo sconosciuto:
http://it.php.net/manual/it/datetime.format.php
http://it.php.net/manual/en/function.date.php


Prima di utilizzare la funzione soprascritta utilizzavo un altra
funzione da data italiana ad inglese
	function date_DB($date,$separatore)
  	{
  		list($day,$month,$year)=explode($separatore,$date);
  		$res_arr=array();
  		$res_arr[]=$year;
  		$res_arr[]=$month;
  		$res_arr[]=$day;
  		$result=implode("-",$res_arr);
  		return $result;
  	}
	$mydata=$_POST['attivita_data'];
	$new_date=date_DB($mydata,'-'); // restituisce 2008-11-24
mentre per vedere la data in italiano facevo: Select date_format
(attivita_data,'%d-%m-%Y') From...
ecco perche chiedo aiuto come  da funzione select postata sopra,
converto la data

 come risolvo sto problema?
Io mi sono scritto una classe apposita, da allora i problemi relativi alle
date si sono ridotti a semplici modifiche/aggiunte a questa classe.. 
La puoi reperire qua: 
http://gabo.homelinux.com/2009/03/gdate/
Prima di essere considerata perfetta ha bisogno di alcune accortezze, come
la gestione dei microsecondi ed una migliore formattazione, ma per un
utilizzo classico in applicazioni web io mi ci trovo benissimo...
-- 
g4b0, linux user n. 369000
http://gabo.homelinux.com

getShort(); della tua funzione ?

 $d->getShort(); della tua funzione ?
$d = new GDate();
$d->setDateFromMysqlTimestamp($rs['data']);
echo $d->getShort();
Il concetto � che la data � memorizzata internamente alla classe come
giorno-mese-anno-ora-minuti-secondi, e queste variabili vengono
modificate/formattate mediante le varie funzioni di set/get.


 g4b0, linux user n. 369000
http://gabo.homelinux.com
Perfetto
        $d = new GDate();
	$d->setDateFromShort($res['attivita_datafine']);
ma qua come la visualizzo?
<input name="attivita_datafine" type="text" size="10" value="<?php
echo cosa?????>">


scusa ho captio tutto
sorry per il post

 sorry per il post
No problem :) Per la cronaca (e per chi lurka), usi la funzione getShort, od
una qualsiasi delle altre get.



Nulla non riesco tirar fuori la data...
ho cambiato $sep in -
la data nel DB è scritta cosi: aaaa-mm-gg
ho utilizzato setDateFromShort per visualizzarla in gg-mm-aaaa
ma nella imput non lo visualizzo
ho fatto pure un print $d->getShort(); ma nulla...
dove sta l'errore?

 dove sta l'errore?
A occhio e croce, nel non aver letto per niente la documentazione della 
classe che stai usando.
Bye.


	/**
	*	legge una data nel formato dd/mm/yyyy e setta l'oggetto
coerentemente
	*	example: $d->setDateFromShort("31/03/1981","/");
	*
	* @param $date     string   la data, nell formato dd/mm/yyy (il
separatore
	*                           è definito dal prossimo parametro)
	* @param $sep      string   il separatore (ad es. '/', '-', ' ')
	* @return  NULL
	*/
ma scusa la data quando entra mi entra aaaa-mm-gg giusto?
e dovrebbe restituirmi gg-mm-aaaa
o forse ho capito male io?

 o forse ho capito male io?
Hai capito male. Se la aspetta in dd/mm/yyyy.
Gia` solo per usare "-" invece di "/" devi specificare un altro parametro.
Per restituirtela ci sara` un'altra funzione.
Bye.


TUTTO A POSTO adesso vedo la data corretta
la Select ok messa a posto
ma quando fare l'update:
	function db_update($table, $pk, $pkval){
		$query = "UPDATE ".$table." SET ";
		$trigger = 0;
		foreach($_POST as $field => $value){
		  if($trigger > 0) $query = $query . ", ";
		  $query = $query . $field." = trim('$value')";
		  $trigger++;
		}
		$query = $query . " WHERE ".$pk." = ".$pkval;
		echo $query."<br><br>";
		if($result = mysql_query($query)) return(0);
		else echo(print $query);
	}
mi prende tutti i valori che provengono dal $_POST
per cui ritorniamo al mio vecchio problema...
nella input visualizzo 08-06-2006 quando la passo alla funzione
db_update devo passarla come 2009-06-08
chi mi puo aiutare?

 chi mi puo aiutare?
Devi istanziare un oggetto GDate per ciascuna data, e con
getFromMysqlTimestamp ottieni la data nel formato che piace a mysql.
Prova ad usare la classe in un esempio banale, vedrai che � pi� facile di
quanto sembra!


 g4b0, linux user n. 369000
http://gabo.homelinux.com
.... chiedo troppo un esempio?..

 .... chiedo troppo un esempio?..
C'� sul sito...


 g4b0, linux user n. 369000
http://gabo.homelinux.com
 function db_update($table, $pk, $pkval){
                $query = "UPDATE ".$table." SET ";
                $trigger = 0;
                foreach($_POST as $field => $value){
                  if($trigger > 0) $query = $query . ", ";
                  $query = $query . $field." = trim('$value')";
Questo è il tuo esempio non so se è corretto inserirlo qui
$d = new GDate();
$d->setDateFromXmlDatetime(‘dato dal mio POST′);
come faccio a dire SE arriva il dato dalla casella input 'data_a'
allora la data italiana trasformala in inglese e accoda alla query sql
se io faccio un print $field.$value mi da data_a = 2009-06-06
