Autor | Zpráva | ||
---|---|---|---|
petrr Profil * |
#1 · Zasláno: 5. 8. 2010, 08:39:03
Ahojky. mam takový problémek - vytvořil jsem 3x select - (první obsahuje dny, druhý měsíce, třetí roky) mají ukládat data narození uživatele do databáze, jakym zpusobem se to ukládá?
Ještě mám otázku - jak má program poznat když má měsíc 31 nebo 30 nebo 29 dní??? nebo zda je přestupný rok atd? Děkuji |
||
Kajman_ Profil * |
#2 · Zasláno: 5. 8. 2010, 08:46:49
Většinou se to ukládá jako date - tedy si tři hodnoty spojíte a uložíte jako 'YYYY-MM-DD'.
jak má program poznat když má měsíc 31 nebo 30 nebo 29 dní??? nebo zda je přestupný rok atd? Na základce Vám pravidla neřekli? |
||
tatyalien Profil |
#3 · Zasláno: 5. 8. 2010, 10:46:30
Já používám tohle:
function fun_KontrolaData($datum){ $nalezeno = false; // nahradím čárky za tečky (k vůli překliknutí) $odeslano = str_replace(",", ".", $datum); // rozdělím text do pole pomocí teček // $PoleDatumu[0] - den // $PoleDatumu[1] - měsíc // $PoleDatumu[2] - rok $PoleDatumu = explode(".", $odeslano); // kontrola zda pole obsahuje 3 prvnky if (count($PoleDatumu) != 3) { return false; } // kontrola zda text obsahuje čísla foreach ($PoleDatumu as $rozsekano) { if(!$nalezeno && !is_numeric($rozsekano)) { $nalezeno = true; } } if($nalezeno) { return false; } // poskládám datum typu d.m.rrrr $datumovka = fun_odendatPrvniNulu($PoleDatumu[0]).".".fun_odendatPrvniNulu($PoleDatumu[1]).".".$PoleDatumu[2]; if (platne_datum($datumovka)) { // poskládání datumu dle dtb rrrr-m-d a odeslání zpět return $PoleDatumu[2]."-".$PoleDatumu[1]."-".$PoleDatumu[0]; } else { return false; } } function fun_odendatPrvniNulu($vstup){ if (strlen($vstup) == 2) { return (substr($vstup,0,1) == "0") ? substr($vstup,1,1) : $vstup; } else { return $vstup; } } function platne_datum($datum) { // pokud je datum správný, vrátí true, jinak false return preg_match('~^([1-9]|19|[12][0-8]|29(?=\\.([^2]|2\\.(([02468][048]|[13579][26])00|[0-9]{2}(0[48]|[2468][048]|[13579][26]))))|30(?=\\.[^2])|31(?=\\.([13578][02]?\\.)))\\.([1-9]|1[012])\\.[0-9]{4}$~D', $datum); } function fun_DatumTisk($datum) { $test=explode("-",$datum); if((count($test))==3) { return $test[2].".".$test[1].".".$test[0]; } else { return false; } } tohle jsem si kdysi našel a něco napsal sám, a jsem s tím spokojenej |
||
AM_ Profil |
#4 · Zasláno: 5. 8. 2010, 11:24:01
tatyalien:
jen drobný dotaz, proč jsou funkce prefixovány fun_ ? je s nimi legrace, nebo aby se poznalo, že jsou to funkce? v obou případech bych asi tuto prefixaci raději nepoužíval... |
||
tatyalien Profil |
#5 · Zasláno: 6. 8. 2010, 11:38:41
AM:
Ale byl jsem zvyklej z VB v excelu pro jednoznačnost si dát funkci prefix fun_ už od tohohle taky odcházím, ale v pár projektech tohle mám tak jsem to jen vyhrabal a hodil sem bez úprav... |
||
petrr Profil * |
#6 · Zasláno: 6. 8. 2010, 14:32:11
Add #2
"tedy si tři hodnoty spojíte a uložíte jako 'YYYY-MM-DD'." Chtěl bych se zeptat, jakým způsobem se tyto tři hodnoty spojují? Děkuji |
||
Keeehi Profil |
#7 · Zasláno: 6. 8. 2010, 14:36:00
tečkou
$datum=$_POST["rok"]."-".$_POST["mesic"]."-".$_POST["den"]; |
||
petrr Profil * |
#8 · Zasláno: 6. 8. 2010, 15:01:43
Dobře, ještě jsem se chtěl zeptat - když mám tedy 3x vytvořený <select> (první obsahuje dny, druhý měsíce, třetí roky), jakým způsobem přiřadím hodnotu například: do proměnné
$datum=$_POST["rok"] Děkuji Pro upřenění mojí otázky přikladam ukazku html: <html> <select> <!-- select pro rok narozeni --> <option value="2010">2010</option> <option value="2009">2009</option> <option value="2008">2008</option> <option value="2007">2007</option> <option value="2006">2006</option> </select> <select> <!-- select pro mesic narozeni --> <option value="1">leden</option> <option value="2">unor</option> <option value="3">brezen</option> </select> <select> <!-- select pro den narozeni --> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </html> |
||
Keeehi Profil |
#9 · Zasláno: 6. 8. 2010, 15:19:17
petrr:
„$datum=$_POST["rok"]“ Ano, pokud 1) formulář se odesílá pře POST 2) <select name="rok"> |
||
petrr Profil * |
#10 · Zasláno: 6. 8. 2010, 15:24:30
Právě to jsem zkoušel ale ve výsledku se mi do databáze uloží: 0000-00-00, včem tedy ještě může být problém? Děkuji
|
||
Kajman_ Profil * |
#11 · Zasláno: 6. 8. 2010, 15:29:14
Ukažte kód včetně form, opravených select, sestavení datumu a uložení do databáze. Také si nechte vypsat přesné znění dotazu, který do db posíláte a připojte ho sem.
|
||
petrr Profil * |
#12 · Zasláno: 6. 8. 2010, 15:38:59
Dobře zasílám údaje:
HTML: <html> <select><option value="0" selected="selected" name="den">den:</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <select><option value="0" selected="selected" name="mesic">měsíc:</option> <option value="1">Leden</option> <option value="2">Únor</option> <option value="3">Březen</option> <option value="4">Duben</option> <option value="5">Květen</option> <option value="6">Červen</option> <option value="7">Červenec</option> <option value="8">Srpen</option> <option value="9">Září</option> <option value="10">Říjen</option> <option value="11">Listopad</option> <option value="12">Prosinec</option> </select> <select><option value="0" selected="selected" name="rok" >rok:</option> <option value="2010">2010</option> <option value="2009">2009</option> <option value="2008">2008</option> <option value="2007">2007</option> </select> </html> datum sem sestavil takto: <?php $datumnarozeni=$_POST['rok']."-".$_POST['mesic']."-".$_POST['den']; ?> a do db to posílám takto: $queryreg = mysql_query(" INSERT INTO datumnarozeni VALUES ('$datumnarozeni') "); Výsledkem je že se mi to do db uloží jako: 0000-00-00 Včem může spočívat tento problém? Děkuji |
||
Kajman_ Profil * |
#13 · Zasláno: 6. 8. 2010, 15:41:33
Problém je v tom, že ignorujete obě podmínky (rady) z příspěvku [#9]
|
||
petrr Profil * |
#14 · Zasláno: 6. 8. 2010, 15:44:55
Proč myslíte že ignoruji? Však mám přepsané ty podmínky v tom kódu, nebo mi tam ještě něco chybí? děkuji
|
||
Kajman_ Profil * |
#15 · Zasláno: 6. 8. 2010, 15:47:15
1) stále nemáte <form method="POST"...>
2) name cpete tam, kam nepatří Obě podmínky jsou důležité. |
||
petrr Profil * |
#16 · Zasláno: 6. 8. 2010, 15:56:04
Jo už chápu co myslíte, mám to uložené - ve
<form method="POST"> <select></select></form> kam tedy jinam to name takže v #9 je to špatně? Děkuji |
||
Kajman_ Profil * |
#17 · Zasláno: 6. 8. 2010, 15:57:47
|
||
petrr Profil * |
#18 · Zasláno: 6. 8. 2010, 16:03:56
děkuji už to vidím
|
||
Časová prodleva: 14 let
|
0