Autor Zpráva
petr18
Profil *
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
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 *
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
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 *
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
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
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
<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.
Nevim jak vám, ale mě ten kód co jsem napsal odmítl JUSH zvýraznit...

Petr18:
udelám to tak jak uvedl DarkMeni
To co spáchal DarkMeni je dost hrůza. (nic osobního)
Rellik
Profil
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0