Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Data urodzenia w formularzu
Forum PHP.pl > Forum > Przedszkole
4lex
Witam, czy ktoś uczynny mógłby sprawdzić co z tym kodem jest nie tak? Za cholerę nie chcę działać, pewnie przez linię 66. Wiecie jak to poprawić?

  1. <?php
  2. require_once('inc/system.php');
  3.  
  4. $h1 = "Rejestracja";
  5.  
  6. if(!empty($_POST)){
  7. if(!isset($_POST['accept'])) $msg = "<p class='error'>Musisz zaakceptować regulamin.</p>";
  8. elseif(empty($_POST['login'])) $msg = "<p class='error'>Musisz podać login.</p>";
  9. elseif(empty($_POST['email'])) $msg = "<p class='error'>Musisz podać email.</p>";
  10. elseif(empty($_POST['password'])) $msg = "<p class='error'>Musisz podać hasło.</p>";
  11. elseif(empty($_POST['passwordr'])) $msg = "<p class='error'>Musisz podać powtórne hasło.</p>";
  12. elseif($_POST['passwordr'] != $_POST['password']) $msg = "<p class='error'>Podane hasła różnią się.</p>";
  13. else {
  14. $login = tekst(strtolower($_POST['login']));
  15. $loginMD5 = md5($login);
  16. $pass = md5($_POST['password']);
  17. $email = tekst($_POST['email']);
  18. $wiek = tekst($_POST['wiek']);
  19. $plec = tekst($_POST['plec']);
  20. $miasto = tekst($_POST['miasto']);
  21. $ip = $_SERVER['REMOTE_ADDR'];
  22. $data_urodzenia = date($_POST['data_urodzenia']['rok'].'-'.$_POST['data_urodzenia']['miesiac'].'-'.$_POST['data_urodzenia']['dzien']);
  23.  
  24.  
  25. if((strlen($login) < 4) || (strlen($login) > 25)) $msg = "<p class='error'>Podałeś login o nieprawidłowej długości, wpisz od 4 do 25 znaków</p>";
  26. elseif(strlen($_POST['password']) < 6) $msg = "<p class='error'>Hasło musi zawierać minimum 6 znaków</p>";
  27. elseif(strlen($_POST['wiek']) > 2) $msg = "<p class='error'>Podano niepoprawny wiek.</p>";
  28. else {
  29. $test = mysql_num_rows(mysql_query("select * from users where loginMD5 ='".$loginMD5."' limit 1"));
  30. if($test != 0) $msg = "<p class='error'>Podany login jest zajęty</p>";
  31. else {
  32. mysql_query("insert into users(login, loginMD5, haslo, email, online, wiek, plec, miasto, ip) value ('".$login."','".$loginMD5."','".$pass."','".$email."',".time().",'".$wiek."','".$plec."','".$miasto."','".$ip."')");
  33. $ids = mysql_insert_id();
  34. if(empty($ids)) $msg = "<p class='error'>Wystąpił nieoczekiwany błąd skryptu, spróbuj ponownie za chwilę.</p>";
  35. else $msg = "<p class='info'>Założono nowe konto.</p>";
  36. }
  37. }
  38.  
  39. }
  40. }
  41.  
  42. $gra ="<form action='#' method='post'>
  43. <table style='margin:0 auto' >
  44. <tr>
  45. <td>Login:</td>
  46. <td><input type='text' name='login'/></td>
  47. </tr>
  48. <tr>
  49. <td>Adres email:</td>
  50. <td><input type='text' name='email'/></td>
  51. </tr>
  52. <tr>
  53. <td>Hasło:</td>
  54. <td><input type='password' name='password'/></td>
  55. </tr>
  56. <tr>
  57. <td>Powtórz hasło:</td>
  58. <td><input type='password' name='passwordr'/></td>
  59. </tr>
  60. <tr>
  61. <td>Wiek:</td>
  62. <td><input type='text' name='wiek'/></td>
  63. </tr>
  64. <tr>
  65. <td>Data urodzenia:</td>
  66. <td><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 name='data_urodzenia[rok]'>"<?php for ($i=2010; $i>=1900; $i=$i-1){echo "<option value='"$i"'>"$i"</option>";} ?>"</select></td>
  67. </tr>
  68. <tr>
  69. <td>Płeć:</td>
  70. <td><select name='plec'><option value='Mężczyzna'>Mężczyzna</option><option value='Kobieta'>Kobieta</option></select></td>
  71. </tr>
  72. <tr>
  73. <td>Miasto:</td>
  74. <td><input type='text' name='miasto'/></td>
  75. </tr>
  76. <tr>
  77. <td><input type='checkbox' name='accept'/> Akceptuję <a href='regulamin.php'>regulamin</a></td>
  78. <td align='center'><input type='submit' value='załóż konto'/></td>
  79. </tr>
  80. </table>
  81. </form>
  82. ";
  83.  
  84. require_once('inc/szablon.php');
  85. ?>


Proszę o pomoc sciana.gif
sowiq
Nie:
  1. echo "<option value='"$i"'>"$i"</option>";


Tylko:
  1. echo '<option value="' . $i . '">' . $i . '</option>';


Zainstaluj sobie jakiś edytor z kolorowaniem składni, chociażby Notepad 2.
4lex
Linijka 66 wygląda teraz tak:
  1. <td><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 name='data_urodzenia[rok]'>"<?php for ($i=2010; $i>=1900; $i=$i-1){echo '<option value="' . $i . '">' . $i . '</option>';} ?>"</select></td>


A błąd wygląda tak:
Parse error: syntax error, unexpected '?' in /home/xxxxxx/public_html/rejestracja.php on line 66
sowiq
Cytat(4lex @ 27.08.2013, 16:13:48 ) *
Parse error: syntax error, unexpected '?' in /home/xxxxxx/public_html/rejestracja.php on line 66

Kolego, forum to nie parser. Masz błąd składniowy w linii 66 w okolicach znaku '?'. Kombinuj.
4lex
Zauważyłem, że to błąd składniowy, nie prosiłbym o rozwiązanie, gdybym sam potrafił to zrobić. Przez ostatnie 45 minut przerobiłem tę linijkę na wszystkie możliwe sposoby i zależnie od tego gdzie dałem cudzysłów otrzymywałem albo błąd przed "?" albo ">". Proszę o pomoc!
q3trm
Twój problem polega na wielokrotnym otwieraniu znaków kanonicznych <?php. Nie możesz w już otwartym bloku PHP ponownie go otwierać

  1. <?php
  2. <?php ///Takie coś jest nieprawidłowe i powoduje błąd.
  3. ?>
  4. ?>


U Ciebie blok zaczyna się <?php i do samego końca skryptu z niego nie wychodzisz próbując otwierać nowe:

  1. <?php
  2.  
  3. $gra =
  4. <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>";}?>";
  5. ?>

Rozwiązaniem jest zastąpienie ponownego otwierania bloku PHP funkcją:

  1. <?php
  2. function date_form_helper($min = 0, $max = 0) {
  3. $date = '';
  4.  
  5. for($i = $min; $i < $max; $i++) {
  6. $date .= '<option value=".$i.">'.$i.'</option>';
  7. }
  8.  
  9. return $date;
  10. }
  11.  
  12. $gry = '
  13. <select name="data_urodzenia[dzien]">'.date_form_helper(1,31).'</select>
  14. <select name="data_urodzenia[miesiac]">'.date_form_helper(1900,2014).'</select>';
  15. ?>


W funkcji podajesz od którego momentu ma zacząć ($min) generować liczbę i na jakim skończyć ($max).
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.