Separare Ziua, Luna, An din data
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
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.
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", ";
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.
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 ', '. $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.
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