| Autor | Zpráva | ||
|---|---|---|---|
| petr18 Profil * |
#1 · Zasláno: 31. 5. 2011, 16:44:23
Nazdar,
potřeboval bych od vás pomoci s vytvořením registrace. Můj problém je následující: uživatel který se chce zaregistrovat na server musí mít minimálně 18 let, ale v option rok budou hodnoty od 1903 po 2011 ale pokud žadatel zvolí rok od 1994 do 2011 tak mu hodí hlášení, že není oprávněn se na server zaregistrovat . Jak na to v php? |
||
| Darker Profil |
#2 · Zasláno: 31. 5. 2011, 17:03:44 · Upravil/a: Darker
Získáme aktuální rok a odečteme od něj rok zadaný. Získané číslo musí být větší nebo rovno 18.
if(date("Y")-(int)$_POST["rok_naroz"]<18)
echo "Je celkem jedno, kolik ti je, ale musis tam vybrat rok mensi nez ".(date("Y")-17)." jinak te dal nepustim.";
else echo "Tak tu mame dalsiho 'plnoleteho' uzivatele."
|
||
| DarkMeni Profil * |
#3 · Zasláno: 31. 5. 2011, 17:11:14
Asi nějak takto:
//Takle by mohl vypadat cyklus vykreslení 1903 - 2011
echo "<select name='rok_narozeni'>";
$end = 2011; //A nebo tam nějak vložit nynější rok
for($cislo=1903;$now<$end;$cislo++){
echo "<option value='".$cislo."'>".$now."</option>";
}
echo "</select>";
//A tohle by mohl být zpracovávací skript:
$rok = $_POST["rok_narozeni"];
$ted = 2011; // a nebo nějak zjistit nynější rok
$osmnact = 2011-18;
$pokracovat = true;
if($rok<=$osmnact){$pokracovat = false;}
if($pokracovat){
//Pokračování zpracovávání...
}
Název proměnných v češtině je jen pro přehlednost, s tím cyklusem si nejsem zase až tak jistý protože se selectem sem nedělal a nevim kam mam vkládat data aby si to pak PHP zjistil, tak napsal sem to tak jak by jsem to asi řešil já a nevim jestli to bude fungovat, ale kdyby jo a bylo by to to co jsi chtěl tak si to můžeš nějak upravit. |
||
| Rellik Profil |
#4 · Zasláno: 31. 5. 2011, 17:27:29
DarkMeni:
„$ted = 2011; // a nebo nějak zjistit nynější ro“ na to je funkce date() - http://cz.php.net/manual/en/function.date.php Petr18 Tyto registrace jsou celkem neúčinné - jak zabráníš někomu aby si nezadal rok narození jiný než skutečný? Darker to vystihl dobře... |
||
| DarkMeni Profil * |
#5 · Zasláno: 31. 5. 2011, 17:34:35
Rellik má pravdu, možná bude stačit checkbox (zaškrtátko) a u něho něco jako že je mu víc než 18 let a souhlasí s podmínkama atd... jinak dík za link na tu funkci.
|
||
| Petr18 Profil |
#6 · Zasláno: 31. 5. 2011, 18:21:51 · Upravil/a: Petr18
Díki, udelám to tak jak uvedl DarkMeni, ale na výpis let od 1903 po aktualni rok použiji funkci range() a foreach().
|
||
| Rellik Profil |
#7 · Zasláno: 31. 5. 2011, 18:40:59 · Upravil/a: Rellik
Na to stačí jeden řádek s for()
<select name="rok">
<?php
for ($i = 1903; $i <= 2011; $i++) { echo "\t<option value='".$i."'>".$i."</option>\n";}
?>
</select> |
||
| Darker Profil |
#8 · Zasláno: 31. 5. 2011, 18:42:59 · Upravil/a: Darker
<select name="rok">
<?php
for ($i = 1903; $i <=((int)date("Y")-18); $i++) { echo "<option value=\"$i\">$i</option>\n";}
?>
</select>Kdyby tvůj web náhodou existoval déle než 18 let. A proč zobrazovat roky který nemá cenu vybírat, páč neprojdou. Petr18: „udelám to tak jak uvedl DarkMeni“ To co spáchal DarkMeni je dost hrůza. (nic osobního) |
||
| Rellik Profil |
#9 · Zasláno: 31. 5. 2011, 18:47:52
Jo i tak se to dá udělat, že aktuální rok do kterého to má počítat se přiřadí automaticky... Já to psal spíš jako ukázku... V programování jsou možné všelijaké vychytávky... :-)
|
||
| Tori Profil |
#10 · Zasláno: 31. 5. 2011, 19:43:00
Darker:
„Nevim jak vám, ale mě ten kód co jsem napsal odmítl JUSH zvýraznit...“ Pokud blok kódu obsahuje otvírací/koncový tag PHP, použijte zvýraznění pro HTML. Petr18: „udelám to tak jak uvedl DarkMeni“ V tom případě všechny výskyty proměnné $now nahraďte proměnnou $cislo (anebo opačně), jinak se vám cyklus for zasekne v nekonečné smyčce. |
||
|
Časová prodleva: 14 let
|
|||
0