problema gestione date

luigi777

Utente Attivo
14 Feb 2008
1.085
1
38
39
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.085
1
38
39
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.042
149
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.085
1
38
39
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.042
149
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.085
1
38
39
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.085
1
38
39
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.042
149
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
C problema seo + cerco esperto SEO e Posizionamento 1
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
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1
H problema carrello woocommerce PHP 2

Discussioni simili