Separare Ziua, Luna, An din data

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
ionatan
Mesaje: 94

Separare Ziua, Luna, An din data

Buna,
Ma tot chinui de cateva zile si nu ii dau de capat, va rog sa ma ajutati.
in tabeulul cu utilizatori am mai adaugat o coloana "data_materii" de tip DATE. in pagina de inregistrare am mai adaugat 3 selecturi prin care isi adauga data de nastere iar in procesare.php preiau cu

Cod: Selectaţi tot

$datanastere=$_POST['anul'].''.$_POST['luna'].''.$_POST['ziua'];
 
si le adaug.pana aici totul e bine... Ceea ce nu reusesc este cum fac sa editez data nasterii adica sa o preiau din baza de date tot in trei selecturi prin value......nu stiu daca sunt inteles cele trei $_post le-am facut una, dar acum cum le separ pentru a fi editate in parte ziua,luna, anul

Va multumesc pt rabdare.
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje: 4343
Salut
Ar fi 2 variante.
1. Se preia data din acea coloana din baza de date asa cum este adaugata, apoi se aplica in php functia: explode('separator', $data) , "separator" fiind caracterul prin care sunt separate anul, luna si ziua. Va rezulta un array cu acele trei valori.

2. Se preiau separat acele valori direct in instructiunea SQL Select, cu functii MySQL pentru data si timp:

Cod: Selectaţi tot

$sql = "SELECT YEAR(data_materii) AS anul, MONTH(data_materii) AS luna, DAYOFMONTH(data_materii) AS ziua FROM nume_tabel WHERE Conditie";
 

ionatan Mesaje: 94
Salut,
Multumesc pt raspuns, am reusit in doua feluri :

1. Se preia data din acea coloana din baza de date asa cum este adaugata

Cod: Selectaţi tot

list($anul, $luna, $ziua) = explode('-', $data_nastere);
echo " $ziua <br> $luna  <br> $anul  ";
 
2.

Cod: Selectaţi tot

$matrice = explode("-",$data_nastere);
$anul = $matrice[0];
$luna = $matrice[1];
$ziua = $matrice[2]; 

echo " $ziua <br> $luna  <br> $anul  ";
 
Pentru a afisa data de nastere de ex: 23 Octombrie, 1980 am facut asa:

Cod: Selectaţi tot

echo " $ziua ";
       
     if (isset($luna) && $luna == 1  )  { echo 'Ianuarie';   }
       else if (isset($luna) && $luna == 2  )  { echo 'Februarie';  } 
    else if (isset($luna) && $luna == 3  )  { echo 'Marie';  }
    else if (isset($luna) && $luna == 4  )  { echo 'Aprilie';  }
    else if (isset($luna) && $luna == 5  )  { echo 'Mai';  }
    else if (isset($luna) && $luna == 6  )  { echo 'Iunie';  }
    else if (isset($luna) && $luna == 7  )  { echo 'Iulie';  }
    else if (isset($luna) && $luna == 8  )  { echo 'August';  }
    else if (isset($luna) && $luna == 9  )  { echo 'Septembrie';  }
    else if (isset($luna) && $luna == 10 )  { echo 'Octombrie';  }
    else if (isset($luna) && $luna == 11 )  { echo 'Noiembrie';  }
    else if (isset($luna) && $luna == 12 )  { echo 'Decembrie';  }

echo",&nbsp;";
echo "$anul";
 
merge, e ok, dar nu stiu daca am ales varianta cea mai buna sau cea corecta va rog sa ma corectati cu vreo idee.
Cu stima, Ionatan.
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje: 4343
Daca functioneaza, e bun.
Uite o varianta cu mai putin cod:

Cod: Selectaţi tot

$data_nastere = '1980-10-23';
$lunile = array(1=>'Ianuarie', 'Februarie', 'Martie', 'Aprilie', 'Mai', 'Iunie', 'Iulie', 'August', 'Septembrie', 'Octobmrie', 'Noiembrie', 'Decembrie');
list($anul, $luna, $ziua) = explode('-', $data_nastere);
echo " $ziua ";
if (isset($luna) && isset($lunile[$luna])) { echo $lunile[$luna]; }
echo ',&nbsp;'. $anul;
 

ionatan Mesaje: 94
multumesc pentru raspuns, e mai bine asa, cod mai putin..
am mai intampinat o problema, cum spuneam am 3 selecturi pt update data nastere de ex:

Cod: Selectaţi tot

<select  name="ziua">
	<option value="<?php echo $ziua ?> " >  <?php echo $ziua;   ?> </option>
	<option value="01">1</option>
           ...................
     <option value="31">31</option>
</select>
in value nu imi preia ziua din baza de date cu echo $ziua;
in option, da.

mentionez ca atunci cand moodific datele si fac update e ok, cand revin imi arata datele modificate...iar daca fac update fara sa mai modific nici un select imi face update cu 0000-00-00 adica value are valoarea zero.
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje: 4343
Din ce am observat in codul dat, lipseste caracterul de incheiere a liniei de cod, punct si virgula (;) la echo $ziua de la "value".
Daca e altceva, nu stiu.

ionatan Mesaje: 94
Am rezolvat problema
caracterul de incheiere a liniei de cod, punct si virgula (;) la echo $ziua de la "value". nu contreaza, merge si cu si fara... greseala era ca lesasem spatiu gol inainte de <?php in value sau dupa ?>

Cod: Selectaţi tot

<option value="<?php echo $ziua ?> " >      // gresit
<option value=" <?php echo $ziua ?>" >     // gresit
<option value="<?php echo $ziua ?>" >     //corect
si atunci clar, mie imi lua valoare lui $ziua dar si cu spatii goale ceea ce determina eroarea in msql si imi facea zero cand faceam update fara sa selectez alta zi etc datorita faptului ca datannastere era de tip "date"
oricum va multumesc pt tot
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

Subiecte similare