problema gestione date

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
sto seguendo questo articolo :
https://www.mrw.it/php/articoli/formattare-date-recuperate-database_543.html
però ho un problema ..

ho questo codice come faccio a metterla in formato date ?

il campo birthday è formato date nel database qui e quello che vorrei capire come autoselezionare i giorno il mese e l'anno..

vi posto il codice del menu a tendina:

PHP:
Compleanno	
<select name="inserimento_giorno">
<?php
for ($i=1; $i<=31; $i++)
  echo "<option value=\"$i\" SELECTED>$i</option>";
?>
</select>

<select name="inserimento_mese">
<?php
for ($i=1; $i<=12; $i++)
  echo "<option value=\"$i\" SELECTED>$i</option>";
?>
</select> 

<select name="inserimento_anno">
<?php
for ($i=1900; $i<=date("Y"); $i++)
  echo "<option value=\"$i\" SELECTED>$i</option>";
?>
</select>


e questo è il codie della pagina:


PHP:
<?php

require_once(dirname(__FILE__) . '/include.php');

checkLogin('1 2 3');
	
	$id_utenti = (int)$_SESSION['id_utente'];
	

		//Query SQL
		$strSQL = "SELECT *, DATE_FORMAT(birthday, '%d/%m/%Y') as data_it FROM utenti"
				. " WHERE id = $id_utenti";
		//Eseguo la query e recupero i dati
		$result = mysql_query($strSQL);
		
if(empty($id_utenti)) {
		echo "ID non specificato";
}elseif (mysql_num_rows($result) == 0) { echo "Record non trovato"; }
		else
		{
		
		$row = mysql_fetch_array($result);
		
		//recupero dati...
		$name = $row['name'];
		$firstname = $row['firstname'];
		$birthday = $row["data_it"];
		$note = $row["note"];
		$_sesso = $row["sesso"];
        
    
    
		//Libero la memoria
		mysql_free_result($result);


// Se il modulo viene inviato...
if(isset($_POST['submit']))
{	
	// Dati Inviati dal modulo
	$name = (isset($_POST['name'])) ? trim($_POST['name']) : '';	
	$firstname = (isset($_POST['firstname'])) ? trim($_POST['firstname']) : '';	
	$sesso = (isset($_POST['sesso'])) ? trim($_POST['sesso']) : '';	
	$birthday = "".$_POST["inserimento_anno"]."-" + "".$_POST["inserimento_mese"]."" + "-".$_POST["inserimento_girono"]."";	
	$note= (isset($_POST['note'])) ? trim($_POST['note']) : '';

	// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
	if (!get_magic_quotes_gpc()) {
		$name = addslashes($name);
		$firstname = addslashes($firstname);
		$sesso = addslashes($sesso);
		$birthday = addslashes($birthday);
		$note = addslashes($note);
	}
	
	$id_utente = $_SESSION["id_utente"];
	
	$strSQL = "UPDATE utenti SET"
				. " name = '$name',"
				. " firstname = '$firstname',"
				. " sesso = '$sesso',"
				. " birthday = '$birthday',"
				. " note='$note'"
				. " WHERE id = $id_utente";
	
	if(mysql_query($strSQL)){
		$msg =  "Modificato<br>";
		$msg .="";
	}else{
		$error  = "Errori riscontrati durante l'inserimento<br>";
		$error ."Errore: ".mysql_error();
		echo $strSQL;
	}
	
}

if ( isset ( $error ) )	{ echo '			<p class="error">' . $error . '</p>' . "\n";	}	
if ( isset ( $msg ) )	{ echo '			<p class="msg">' . $msg . '</p>' . "\n";	} else {
?>
<p>Questa  &egrave;  la scheda di <?php echo $_SESSION["name"]; ?></p>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
 Nome<input name="name" type="text" id="name" value="<?php if(isset($name)){echo $name;}else { echo $name; }?>"/><br />
 Cognome<input name="firstname" type="text" id="firstname" value="<?php if(isset($firstname)){echo $firstname;}else { echo $firstname;}?> " /><br />
 Sesso:
<input type="radio" name="sesso" value="M" <?php if($_sesso=="M") echo 'checked="checked"'?>/>Maschio
 <input type="radio" name="sesso" value="F" <?php if($_sesso=="F") echo 'checked="checked"'?> />Femmina<br/>
Compleanno	
<select name="inserimento_giorno">
<?php
for ($i=1; $i<=31; $i++)
  echo "<option value=\"$i\" SELECTED>$i</option>";
?>
</select>

<select name="inserimento_mese">
<?php
for ($i=1; $i<=12; $i++)
  echo "<option value=\"$i\" SELECTED>$i</option>";
?>
</select> 

<select name="inserimento_anno">
<?php
for ($i=1900; $i<=date("Y"); $i++)
  echo "<option value=\"$i\" SELECTED>$i</option>";
?>
</select> 
<br />
 Note<textarea cols="40" rows="5" name="note"><?php if(isset($note)){echo $note;}else { echo $note; }?></textarea><br />
 <input name="submit" type="submit" value="Modifica" /><br />
</form>
<?php } 
}?>

Mi dite come faccio gestire le date in un modo semplice?

grazie mille.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
puoi provare con explode

PHP:
$data_explode = explode('/', $birthday);
// $data_explode[0] sarà il giorno
// $data_explode[1] sarà il mese
// $data_explode[2] sarà l'anno

la select per il giorno diventerà cosi:
PHP:
<?php
for ($i = 1; $i <= 31; $i++) {
  echo "<option value=\"$i\"";
  if(isset($data_explode[0]) && $data_explode[0] == $i) {
    echo " selected='selected'";
  }
echo ">$i</option>";
}
?>
 
Ultima modifica:

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao , io ho provato ma non seleziona da solo quando entro nella scheda..
rimmangono sempere i primi valori del menu a tendina..


ti posto il codice:

codice:

PHP:
<?php

require_once(dirname(__FILE__) . '/include.php');

checkLogin('1 2 3');
	
	$id_utenti = (int)$_SESSION['id_utente'];
	//Controllo se prelevare informazioni
	//relative a news da aggiornare...

		//Query SQL
		 $strSQL = "SELECT *, DATE_FORMAT(birthday, '%d/%m/%Y') as data_it FROM utenti"
                . " WHERE id = $id_utenti";
		//Eseguo la query e recupero i dati
		$result = mysql_query($strSQL);
		
if(empty($id_utenti)) {
		echo "ID non specificato";
}elseif (mysql_num_rows($result) == 0) { echo "Record non trovato"; }
		else
		{
		
		$row = mysql_fetch_array($result);
		
		//recupero dati...
		$name = $row['name'];
		$firstname = $row['firstname'];
		$birthday = $row["data_it"];
		$note = $row["note"];
		$_sesso = $row["sesso"];
    
       $data_explode = explode('-', $birthday);
        // $data_explode[0] sarà il giorno
        // $data_explode[1] sarà il mese
        // $data_explode[2] sarà l'anno  
   
		//Libero la memoria
		mysql_free_result($result);


// Se il modulo viene inviato...
if(isset($_POST['submit']))
{	
	// Dati Inviati dal modulo
	$name = (isset($_POST['name'])) ? trim($_POST['name']) : '';	
	$firstname = (isset($_POST['firstname'])) ? trim($_POST['firstname']) : '';	
	$sesso = (isset($_POST['sesso'])) ? trim($_POST['sesso']) : '';	
	$birthday = "".$_POST["inserimento_anno"]."-" + "".$_POST["inserimento_mese"]."" + "-".$_POST["inserimento_giorno"]."";	
	$note= (isset($_POST['note'])) ? trim($_POST['note']) : '';

	// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
	if (!get_magic_quotes_gpc()) {
		$name = addslashes($name);
		$firstname = addslashes($firstname);
		$sesso = addslashes($sesso);
		$birthday = addslashes($birthday);
		$note = addslashes($note);
	}
	
	$id_utente = $_SESSION["id_utente"];
	
	$strSQL = "UPDATE utenti SET"
				. " name = '$name',"
				. " firstname = '$firstname',"
				. " sesso = '$sesso',"
				. " birthday = '$birthday',"
				. " note='$note'"
				. " WHERE id = $id_utente";
	
	if(mysql_query($strSQL)){
		$msg =  "Modificato<br>";
		$msg .="";
	}else{
		$error  = "Errori riscontrati durante l'inserimento<br>";
		$error ."Errore: ".mysql_error();
		echo $strSQL;
	}
	
}

if ( isset ( $error ) )	{ echo '			<p class="error">' . $error . '</p>' . "\n";	}	
if ( isset ( $msg ) )	{ echo '			<p class="msg">' . $msg . '</p>' . "\n";	} else {
?>
<p>Questa  &egrave;  la scheda di <?php echo $_SESSION["name"]; ?></p>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
 Nome<input name="name" type="text" id="name" value="<?php if(isset($name)){echo $name;}else { echo $name; }?>"/><br />
 Cognome<input name="firstname" type="text" id="firstname" value="<?php if(isset($firstname)){echo $firstname;}else { echo $firstname;}?> " /><br />
 Sesso:
<input type="radio" name="sesso" value="M" <?php if($_sesso=="M") echo 'checked="checked"'?>/>Maschio
 <input type="radio" name="sesso" value="F" <?php if($_sesso=="F") echo 'checked="checked"'?> />Femmina<br/>
Compleanno	
<select name="inserimento_giorno">
<?php
for ($i = 1; $i <= 31; $i++) {
  echo "<option value=\"$i\"";
  if(isset($data_explode[0]) && $data_explode[0] == $i) {
    echo " selected='selected'";
  }
echo ">$i</option>";
}
?></select> <select name="inserimento_mese">
<?php
for ($i = 1; $i <= 12; $i++) {
  echo "<option value=\"$i\"";
  if(isset($data_explode[1]) && $data_explode[1] == $i) {
    echo " selected='selected'";
  }
echo ">$i</option>";
}
?> </select>
 <select name="inserimento_anno">
<?php
for ($i=1900; $i<=date("Y"); $i++) {
  echo "<option value=\"$i\"";
  if(isset($data_explode[2]) && $data_explode[2] == $i) {
    echo " selected='selected'";
  }
echo ">$i</option>";
}
?> </select>
<br />
 Note<textarea cols="40" rows="5" name="note"><?php if(isset($note)){echo $note;}else { echo $note; }?></textarea><br />
 <input name="submit" type="submit" value="Modifica" /><br />
</form>
<?php } 
}?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto come hai settato il campo birthday?
poi metti dei var_dump per vedere se la variabile $birthday si crea come dovrebbe.
poi da quello che vedo la data è nella forma 2012-04-03 quindi l'esplode non va fatto rispetto a '/' ma a '-'
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao
intanto come hai settato il campo birthday?
poi metti dei var_dump per vedere se la variabile $birthday si crea come dovrebbe.
poi da quello che vedo la data è nella forma 2012-04-03 quindi l'esplode non va fatto rispetto a '/' ma a '-'

ciao, ho fatto un pò di prove...


l'inserimento mi è riuscito ad fare in questo modo:
$birthday = date("".$_POST["inserimento_anno"]."-".$_POST["inserimento_mese"]."-".$_POST["inserimento_giorno"]."");
non so se è giusto..

dittemi voi..
e mi sono accorto che viene solo autoselezionato il giorno:

PHP:
<select name="inserimento_giorno">
<?php
for ($i = 1; $i <= 31; $i++) {
  echo "<option value=\"$i\"";
  if(isset($data_explode[0]) && $data_explode[0] == $i) {
    echo " selected='selected'"; 
  }
  
echo ">$i</option>";
}

?></select> <select name="inserimento_mese">
<?php
for ($i = 1; $i <= 12; $i++) {
  echo "<option value=\"$i\"";
  if(isset($data_explode[1]) && $data_explode[1] == $i) {
   echo " selected='selected'"; 
  }
echo ">$i</option>";
}
?> </select>
 <select name="inserimento_anno">
<?php
for ($i=1900; $i<=date("Y"); $i++) {
  echo "<option value=\"$i\"";
  if(isset($data_explode[2]) && $data_explode[2] == $i) {
   echo " selected='selected'"; 
  }
echo ">$i</option>";
}
?> </select>

come mai?


ma poi come mai nel db la salva come 2012-03-04
e qui nell'help di php e cosi?
<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone

$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$today = date("H:i:s"); // 17:16:18
?>

grazie mille.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa una cosa, ma cosa hi dentro
$_POST["inserimento_anno"]
$_POST["inserimento_mese"]
$_POST["inserimento_giorno"]
?
se per caso hai (es.)
$_POST["inserimento_anno"] => 2012
$_POST["inserimento_mese"] => 04
$_POST["inserimento_giorno"] => 03
cioe dei valori di data
non ti serva la funzione date(), ma semplicemente
PHP:
$birthday = $_POST["inserimento_anno"]."-".$_POST["inserimento_mese"]."-".$_POST["inserimento_giorno"];
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
uuu, grazie mille..

per ora lo script è cosi e come ho detto mi autoseleziona da solo solamente il giorno..
l'anno e il mese no.

ho sbagliato qualcosa io nei if ?

nel campo birthday c'è : 1900-01-13


codice:
PHP:
<?php

require_once(dirname(__FILE__) . '/include.php');

checkLogin('1 2 3');
	
	$id_utenti = (int)$_SESSION['id_utente'];
	//Controllo se prelevare informazioni
	//relative a news da aggiornare...

		//Query SQL
		$strSQL = "SELECT *, DATE_FORMAT(birthday, '%d/%m/%Y') as data_it FROM utenti"
                . " WHERE id = $id_utenti"; 
		//Eseguo la query e recupero i dati
		$result = mysql_query($strSQL);
		
if(empty($id_utenti)) {
		echo "ID non specificato";
}elseif (mysql_num_rows($result) == 0) { echo "Record non trovato"; }
		else
		{
		
		$row = mysql_fetch_array($result);
		
		//recupero dati...
		$name = $row['name'];
		$firstname = $row['firstname'];
		$birthday = $row["data_it"];
		$note = $row["note"];
		$_sesso = $row["sesso"];
    
       $data_explode = explode('-', $birthday);
        // $data_explode[0] sarà il giorno
        // $data_explode[1] sarà il mese
        // $data_explode[2] sarà l'anno  
   
		//Libero la memoria
		mysql_free_result($result);


// Se il modulo viene inviato...
if(isset($_POST['submit']))
{	
	// Dati Inviati dal modulo
	$name = (isset($_POST['name'])) ? trim($_POST['name']) : '';	
	$firstname = (isset($_POST['firstname'])) ? trim($_POST['firstname']) : '';	
	$sesso = (isset($_POST['sesso'])) ? trim($_POST['sesso']) : '';	
    $birthday = $_POST["inserimento_anno"]."-".$_POST["inserimento_mese"]."-".$_POST["inserimento_giorno"];  
	$note= (isset($_POST['note'])) ? trim($_POST['note']) : '';

	// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
	if (!get_magic_quotes_gpc()) {
		$name = addslashes($name);
		$firstname = addslashes($firstname);
		$sesso = addslashes($sesso);
		$birthday = addslashes($birthday);
		$note = addslashes($note);
	}
	
	$id_utente = $_SESSION["id_utente"];
	
$strSQL = mysql_query("UPDATE utenti SET"
				. " name = '$name',"
				. " firstname = '$firstname',"
				. " sesso = '$sesso',"
				. " birthday = '$birthday',"
				. " note='$note'"
				. " WHERE id = $id_utente");
	
	if($strSQL){
		$msg =  "Modificato<br>";
		$msg .="";
	}else{
		$error  = "Errori riscontrati durante l'inserimento<br>";
		$error ."Errore: ".mysql_error();
		echo $strSQL;
	}
	
}

if ( isset ( $error ) )	{ echo '			<p class="error">' . $error . '</p>' . "\n";	}	
if ( isset ( $msg ) )	{ echo '			<p class="msg">' . $msg . '</p>' . "\n";	} else {
?>
<p>Questa  &egrave;  la scheda di <?php echo $_SESSION["name"]; ?></p>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
 Nome<input name="name" type="text" id="name" value="<?php if(isset($name)){echo $name;}else { echo $name; }?>"/><br />
 Cognome<input name="firstname" type="text" id="firstname" value="<?php if(isset($firstname)){echo $firstname;}else { echo $firstname;}?> " /><br />
 Sesso:
<input type="radio" name="sesso" value="M" <?php if($_sesso=="M") echo 'checked="checked"'?>/>Maschio
 <input type="radio" name="sesso" value="F" <?php if($_sesso=="F") echo 'checked="checked"'?> />Femmina<br/>
Compleanno	
<select name="inserimento_giorno">
<?php
for ($i = 1; $i <= 31; $i++) {
  echo "<option value=\"$i\"";
  if(isset($data_explode[0]) && $data_explode[0] == $i) {
    echo " selected='selected'"; 
  }
  
echo ">$i</option>";
}

?></select> 
<select name="inserimento_mese">
<?php
for ($i = 1; $i <= 12; $i++) {
  echo "<option value=\"$i\"";
  if(isset($data_explode[1]) && $data_explode[1] == $i) {
   echo " selected='selected'"; 
  }
echo ">$i</option>";
}
?></select>
 <select name="inserimento_anno">
<?php
for ($i=1900; $i<=date("Y"); $i++) {
  echo "<option value=\"$i\"";
  if(isset($data_explode[2]) && $data_explode[2] == $i) {
   echo " selected='selected'"; 
  }
echo ">$i</option>";
}
?></select>
<br />
 Note<textarea cols="40" rows="5" name="note"><?php if(isset($note)){echo $note;}else { echo $note; }?></textarea><br />
 <input name="submit" type="submit" value="Modifica" /><br />
</form>
<?php } 
}?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,

se il POST non è settato la data la hai in formato dd/mm/yyyy come da query che fai ( DATE_FORMAT(birthday, '%d/%m/%Y') )
PHP:
$birthday = $row["data_it"];

quindi l'explode va con lo slash

PHP:
$data_explode = explode('/', $birthday);


se invece è settato ci va il "-" ma cambia anche l'ordine dell array
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Potresti fare cosi

se il post non è settato :

PHP:
$birthday = $row["data_it"];

    $data_explode = explode('/', $birthday);
    $gg = $data_explode[0];
    $mm = $data_explode[1];
    $aa = $data_explode[2];

se invece è settato :

PHP:
$birthday = $_POST["inserimento_anno"] . "-" . $_POST["inserimento_mese"] . "-" . $_POST["inserimento_giorno"];
        $data_explode = explode('-', $birthday);
        $gg = $data_explode[2];
        $mm = $data_explode[1];
        $aa = $data_explode[0];

le select diventeranno :

PHP:
<?php
                for ($i = 1900; $i <= date("Y"); $i++) {
                    echo "<option value=\"$i\"";
                    if ($aa == $i) {
                        echo " selected='selected'";
                    }
                    echo ">$i</option>";
                }
                ?>
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
grazie mille con ultimi script mi funziona benissimo..

ti ringrazio molto criric .. ora mi metto a lavoro su altre cose..

grazie mille.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
eventualmente puoi mettere prima dell'explode
PHP:
<?php
//....
$birthday = strtr($birthday, '/', '-'); //o viceversa $stringa = strtr($stringa, '-', '/');
//.....
?>
in questo modo non ti devi preuccupare se la data è formattata con / o con -
 
Discussioni simili
Autore Titolo Forum Risposte Data
B Problema gestione liste in js Javascript 1
A Problema gestione galleria fotografica in java Javascript 4
A Problema gestione layout con css HTML e CSS 11
P Piccolo problema con gestione immagini. PHP 9
P Problema gestione immagini in PHP PHP 12
L problema gestione utenti e sicurezza persone PHP 3
L problema gestione foto PHP 5
N Problema gestione variabili PHP 5
C Problema gestione cookie Javascript 0
S Problema gestione select multipla Javascript 0
K Problema gestione lettere accentate Classic ASP 25
M Problema gestione TreeView ASP.NET 0
C Problema con la gestione password! Classic ASP 0
maxbossi Problema gestione messaggi Guestbook e Forum Supporto Mr.Webmaster 2
T Problema con gestione menu laterale HTML e CSS 6
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2

Discussioni simili