Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Data urodzenia przy rejestracji
Forum PHP.pl > Forum > Przedszkole
ebate
Otóż chciałbym, aby na mojej stronie przy rejestracji była opcja podania swej daty urodzenia.

Tak więc oto mój kod php rejestracji:

  1. <?php
  2.  
  3. require('conn.php');
  4.  
  5. if (isset($_POST['konto']) and isset($_POST['password']) and isset($_POST['password2']))
  6.  
  7. {
  8.  
  9. if ($_POST['password']==$_POST['password2'])
  10.  
  11. {
  12.  
  13. $konto = mysql_real_escape_string (trim($_POST['konto']));
  14.  
  15. $password = sha1(mysql_real_escape_string (trim($_POST['password'])));
  16.  
  17. $imie = mysql_real_escape_string (trim($_POST['imie']));
  18.  
  19. $drugie_imie = mysql_real_escape_string (trim($_POST['drugie_imie']));
  20.  
  21. $nazwisko = mysql_real_escape_string (trim($_POST['nazwisko']));
  22.  
  23. $email = mysql_real_escape_string (trim($_POST['email']));
  24.  
  25. $miasto = mysql_real_escape_string (trim($_POST['miasto']));
  26.  
  27. $plec = mysql_real_escape_string (trim($_POST['plec']));
  28.  
  29. $numer_telefonu = mysql_real_escape_string (trim($_POST['numer_telefonu']));
  30.  
  31. $numer_gg = mysql_real_escape_string (trim($_POST['numer_gg']));
  32.  
  33. $ile =mysql_query("SELECT * FROM `user` WHERE login = '$konto'");
  34.  
  35. $ile = mysql_num_rows($ile);
  36.  
  37. if ($ile==0) {
  38.  
  39. $zapytanie="INSERT INTO user (login,password,imie,drugie_imie,nazwisko,email,miasto,plec,numer_telefonu,n
    umer_gg) VALUES('$konto','$password','$imie','$drugie_imie','$nazwisko','$email','$miasto','$plec','$numer_telefonu','$numer_gg')"
    ;
  40.  
  41. mysql_query($zapytanie) or die("Wystąpił błąd" );
  42.  
  43. echo('Konto '.$konto.' zostalo utworzone.</br><a href=index.php>Kliknij, aby wrócić do Strony głównej</a>');
  44.  
  45.  
  46.  
  47. }
  48.  
  49. else
  50.  
  51. {
  52.  
  53. echo("Taki uzytkownik juz istnieje. Kliknij <a href=register.php>wstecz</a> aby zarejestrowac sie ponownie");
  54.  
  55. }
  56.  
  57. }
  58.  
  59. else echo ("Podane hasla nie zgadzaja sie.</br><a href=register.php>Wróc, aby wpisac hasła poprawnie</a>");
  60.  
  61. }
  62.  
  63. else{
  64.  
  65. ?>
  66.  
  67. <html>
  68.  
  69. <body>
  70.  
  71. <h1>Rejestracja</h1>
  72.  
  73. <form action="register.php" method="post">
  74.  
  75. <strong>Login:</strong><input name="konto" type="text" value="" /><br>
  76.  
  77. <strong>Hasło:</strong><input name="password" type="password" value="" /><br>
  78.  
  79. <strong>Powtorz hasło:</strong><input name="password2" type="password" value="" /><br>
  80.  
  81. <strong>Imię:</strong><input name="imie" type="text" value="" /><br>
  82.  
  83. <strong>Drugie imię:</strong><input name="drugie_imie" type="text" value="" /><br>
  84.  
  85. <strong>Nazwisko:</strong><input name="nazwisko" type="text" value="" /><br>
  86.  
  87. <strong>Miasto:</strong><input name="miasto" type="text" value="" /><br>
  88.  
  89. <strong>Płeć:</strong><br><select name="plec"><option value="Mężczyzna">Mężczyzna</option><option value="Kobieta">Kobieta</option></select><br>
  90.  
  91. <strong>E-mail:</strong><input name="email" type="text" value="" /><br>
  92.  
  93. <strong>Numer telefonu:</strong><input name="numer_telefonu" type="text" value="" /><br>
  94.  
  95. <strong>Numer Gadu-Gadu:</strong><input name="numer_gg" type="text" value="" /><br>
  96.  
  97. <input type="submit" value="Zarejestruj" />
  98.  
  99. </form>
  100.  
  101. </body>
  102.  
  103. </html>
  104.  
  105. <?php
  106.  
  107. }
  108.  
  109.  
  110.  
  111. ?>


Dodatkowo mam prośbę jakich poleceń użyć, aby zapisać poprawnie datę urodzenia w bazie MYSQL tak, abym w przyszłości dzięki odpowiedniemu skryptowi mógł obliczać wiek.

Z góry dziękuje za pomoc.
nospor
Nie za bardzo rozumiem w czym masz problem... skoro masz pola na imie, nazwisko i takie tam, to dodaj jeszcze pole na date urodzenia.
ebate
Ale chcę, aby użytkownik rejestrujący się na stronie nie musiał sam wpisywać daty, tylko mógł ją wybrać jak np. w przypadku płci.

Szukałem trochę, ale nie znalazłem nic konkretnego.
nospor
Mowiac data urodzenia masz na mysli tylko rok czy pełną date?
Jak tylko rok to stwórz pole SELECT i wypełnij je latami.
Jak pełną datę to masa jest kalendarzy w js.

wpisze w google: jquery datepicker
i po sprawie

pierwszy z brzegu
http://jqueryui.com/demos/datepicker/
ebate
Chodzi mi bardziej o takie coś.

Oto kod html:
  1. <select name="data_urodzenia[dzien]"><?php for ($i=1; $i<=31; $i++){echo "<option value='$i'>$i</option>";}?></select> <select name="data_urodzenia[miesiac]"><?php for ($i=1; $i<=12; $i++){echo "<option value='$i'>$i</option>";}?></select> <select name="data_urodzenia[rok]"><?php for ($i=2011; $i>=1900; $i=$i-1){echo "<option value='$i'>$i</option>";} ?></select>
  2.  
  3. <br>


A oto php:

  1. (...)
  2. $data_urodzenia = date($_POST['data_urodzenia[rok]'].'.'.$_POST["data_urodzenia[miesiac]"].'.'.$_POST["data_urodzenia[dzien]"]);
  3. (...)
  4. $zapytanie="INSERT INTO user (login,password,imie,drugie_imie,nazwisko,email,miasto,plec,data_urodzenia,n
    umer_telefonu,numer_gg) VALUES('$konto','$password','$imie','$drugie_imie','$nazwisko','$email','$miasto','$plec','$data_urodzenia','$numer_telefonu','$numer_gg')"
    ;
  5.  
  6. mysql_query($zapytanie) or die("Wystąpił błąd" );
  7.  
  8. (...)


A więc pytanie czy nie popełniłem żadnego błędu, i jaką zrobić do tego tabele, a raczej kolumne w bazie mysql ( tabele juz mam)?
nospor
Cytat
A więc pytanie czy nie popełniłem żadnego błędu,
A dziala? to nie popelniłeś błędu.

Nie łącz kropkami bo otrzymasz. YYYY.mm.dd
Łącz myślnikiem by otrzymać YYYY-mm-dd

A jakie pole? Normalne, typu DATE

ps:
print_r($_POST);
i zobacz sobie jak wyglądają twoje pola z datą. Czemu wy nigdy tak banalnych analiz nie robicie? Boli te print_r czy jak?
ebate
zastosowałem się do Twoich wskazówek i przy rejestracji wyskakuje mi:

Cytat
Notice: Undefined index: data_urodzenia[rok] in C:\xampp\htdocs\PIOTR\register.php on line 29

Notice: Undefined index: data_urodzenia[miesiac] in C:\xampp\htdocs\PIOTR\register.php on line 29

Notice: Undefined index: data_urodzenia[dzien] in C:\xampp\htdocs\PIOTR\register.php on line 29


W bazie mysql dodałem data_urodzenia DATE,
nospor
Cytuje kawałek poprzedniego posta:
Cytat
ps:
print_r($_POST);
i zobacz sobie jak wyglądają twoje pola z datą. Czemu wy nigdy tak banalnych analiz nie robicie? Boli te print_r czy jak?
ebate
No ok, zrobiłem jak napisałeś ale ja nie widze nic (może dlatego że jestem w tym "lekko zielony")

Cytat
Array
(
[konto] =>
[password] =>
[password2] =>
[imie] =>
[drugie_imie] =>
[nazwisko] =>
[miasto] =>
[plec] => Mężczyzna
[email] =>
[numer_telefonu] =>
[numer_gg] =>
[data_urodzenia] => Array
(
[dzien] => 1
[miesiac] => 1
[rok] => 2011
)

)

nospor
No i widzisz, że data urodzenia jest tablicą, w której są poszczegolne elementy

wiec nie:
$_POST['data_urodzenia[rok]']

a:
$_POST['data_urodzenia']['rok']

Przydałaby się podstawowa wiedza z obsługi tablic, która dostępna jest w manualu.
ebate
Wielkie podziękowania za pomoc i wyrozumiałość.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.