Problem z formularzem daty urodzenia

0

Witam mam problem ze zrobieniem daty urodzenia, męczę się z tym już 2 tygodnie i nadal nie wiem jak to zrobić.
Mógłby ktoś dla mnie to zrobić z html jak i php, mysql sam się zajmę. Bardzo bym prosił :)

0

Napisz konkretnie co chcesz osiągnąć (to, co dałeś jest bardzo ogólne, zdecydowanie za mało, żeby coś napisać sensownego). Poza tym - tak, jak napisał @Patryk27 - pokaż co masz zrobione, w jaki sposób chcesz to zrobić oraz w którym konkretnie miejscu utknąłeś.

0
        $wiek_d = $_POST['wiek_d'];
        $wiek_m = $_POST['wiek_m'];
        wiek_r = $_POST['wiek_r'];
        $_SESSION['fr_wiek_d'] = $wiek_d;
        $_SESSION['fr_wiek_m'] = $wiek_m;
        $_SESSION['fr_wiek_r'] = $wiek_r;

<label for="data_urodzenia">Data urodzenia: <br/></label>
             <select value = '<? $_SESSION['fr_wiek_d']?>' name="data_urodzenia">
                <option>1</option>
                <option>2</option>
                <option>3</option>
                <option>4</option>
                <option>5</option>
                <option>6</option>
                <option>7</option>
                <option>8</option>
                <option>9</option>
                <option>10</option>
                <option>11</option>
                <option>12</option>
                <option>13</option>
                <option>14</option>
                <option>15</option>
                <option>16</option>
                <option>17</option>
                <option>18</option>
                <option>19</option>
                <option>20</option>
                <option>21</option>
                <option>22</option>
                <option>23</option>
                <option>24</option>
                <option>25</option>
                <option>26</option>
                <option>27</option>
                <option>28</option>
                <option>29</option>
                <option>30</option>
                <option>31</option>
             </select>

             <select value = '<? $_SESSION['fr_wiek_m']?>' name="data_urodzenia">
                <option>1</option>
                <option>2</option>
                <option>3</option>
                <option>4</option>
                <option>5</option>
                <option>6</option>
                <option>7</option>
                <option>8</option>
                <option>9</option>
                <option>10</option>
                <option>11</option>
                <option>12</option>
             </select>

             <select value = '<? $_SESSION['fr_wiek_r']?>' name="data_urodzenia">
                <option>2010</option>
                <option>2009</option>
                <option>2008</option>
                <option>2007</option>
                <option>2006</option>
                <option>2005</option>
                <option>2004</option>
                <option>2003</option>
                <option>2002</option>
                <option>2001</option>
                <option>2000</option>
                <option>1999</option>
                <option>1998</option>
                <option>1997</option>
                <option>1996</option>
                <option>1995</option>
                <option>1994</option>
                <option>1993</option>
                <option>1992</option>
                <option>1991</option>
             </select>
echo "<br/>Wiek: ".$_SESSION['wiek_d'];

Teraz gdy chcę to wywołać w innym pliku. To wyskakuje błąd:

"Undefined index: wiek_d"

0

Żeby to było widoczne w innym/innych pliku/plikach to musisz dopisać w nim/nich session_start();. Ponadto musisz mieć chyba jakiś

<form method="post" action="other_file.php">
...
</form>

, aby móc odebrać dane wcześniej wysłane.

0

To oczywiste, mam to dopisane.

0
    <form method="post" action="register.php">
<?php
    
	echo "<p>Witaj ".$_SESSION['user'].'! [<a href="logout.php"> Wyloguj się </a>]</p>';
    echo "Twoje dane: <br/><br/>";
    echo "Imię: ".$_SESSION['imie'];
    echo "<br/>Nazwisko: ".$_SESSION['nazwisko'];
    echo "<br/>Email: ".$_SESSION['email'];
    echo "<br/>Plec: ".$_SESSION['plec'];
    echo "<br/>Wiek: ".$_SESSION['wiek_d'];

?>	
    </form>

Nic to nie zmienia nadal jest ten sam błąd. Dodam też, że pozostałe zmienne działają bez zarzutu.

0

Przy błędzie "Undefined index: wiek_d" powinieneś mieć dopisane w której linijce masz ten błąd. Pokaż na który fragment kodu konkretnie wskazuje błąd.
A jeśli kod masz zrobiony w takiej kolejności jak go wkleiłeś to skąd w tej linijce

$wiek_d = $_POST['wiek_d'];

masz mieć 'wiek_d' podczas ładowania strony jeśli jeszcze nic nie przesłałeś. Sprawdzasz w ogóle czy masz to zainicjowane?

isset($_POST['wiek_d'])

przed dostępem do zmiennej?

0

Błąd jest przy:

echo "<br/>Wiek: ".$_SESSION['wiek_d'];

Tak kod mam w takiej kolejności jak wrzuciłem.

0

No to pokaż w którym miejscu masz przypisana tą zmienną, $_SESSION['wiek_d']:

        $_SESSION['fr_wiek_d'] = $wiek_d;
        $_SESSION['fr_wiek_m'] = $wiek_m;
        $_SESSION['fr_wiek_r'] = $wiek_r;

bo ja nie widzę i PHP też nie...

0
        $wiek_d = $_POST['wiek_d'];
        $wiek_m = $_POST['wiek_m'];
        $wiek_r = $_POST['wiek_r'];

#Potem jest to

        $_SESSION['fr_wiek_d'] = $wiek_d;
        $_SESSION['fr_wiek_m'] = $wiek_m;
        $_SESSION['fr_wiek_r'] = $wiek_r;

0

Ale tutaj dalej nigdzie nie ma $_SESSION['wiek_d']! Jak chcesz dostać się do dni to sprawdź $_SESSION['fr_wiek_d'] bo tam zapisałeś tą informację.

0

Tzn tak, błędu nie ma, ale jest nullem i nic nie wyświetla.

0

Trzeba chyba zacząć od tego że są tutaj inne błędy....

  1. W select nie ma takiego parametru jak value. value jest w option
  2. Masz 3xselect z takim samym name... Jak pobierasz wartość to do którego selecta się odnosisz? name ma być unikalny i donosić się do konkretnego 'obiektu' (selecta).
  3. Gdzie w twoim kodzie jest id> lub name wiek_d? Bo nie bardzo wiem skąd chcesz pobierać te wartości.
  4. Dodam też, że pozostałe zmienne działają bez zarzutu.

Mógłbyś to rozwinąć co konkretnie tutaj działa i jak? Które zmienne działają i co wyświetlają>

0
  <br/> Login: <br/> <input type="text" value="<?php
            if(isset($_SESSION['fr_nick']))
            {
                echo $_SESSION['fr_nick'];
                unset($_SESSION['fr_nick']);
            }
            ?>" name="nick" /> <br/>

                    <?php
		
			if (isset($_SESSION['e_nick']))
			{
				echo '<div class="error">'.$_SESSION['e_nick'].'</div>';
				unset($_SESSION['e_nick']);
			}
		
		?>

Przykładowo login.

0

Loginu akurat nie ma w kodzie który podesłałeś odnośnie dany urodzenia... Pytam co działa w kodzie z datą urodzenia.
Skoro login działa i wiesz jak to zrobić to zrób to samo z datami.

0

No właśnie jak tak robię to nie działa..

                <select name="wiek_miesiac">
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>1</option>
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>2</option>
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>3</option>
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>4</option>
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>5</option>
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>6</option>
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>7</option>
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>8</option>
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>9</option>
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>10</option>
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>11</option>
                <option value='<? $_SESSION[' fr_wiek_m ']?>'>12</option>
             </select>

Nie pokazuje tego nadal.

1

Wydaje mi się (albo i nie wydaje) że za bardzo nie wiesz co robisz...
Poczytaj trochę o select i php - sesje.
Tutaj masz rozwiązanie Twojego problemu https://stackoverflow.com/questions/17139501/using-post-to-get-select-option-value-from-html ale póki nie zrozumiesz zasady 'działania' select i sesji to raczej nic to nie da.
https://www.w3schools.com/tags/tag_select.asp
https://www.w3schools.com/tags/att_option_value.asp
https://www.w3schools.com/php/php_sessions.asp

PS. Takie formularze robi się raczej w pętli, wtedy jest prościej i szybciej. 3 x 2 linijki z pętlą vs 32 + 13 + XX linijek dla każdej opcji
https://www.w3schools.com/php/php_looping_for.asp

1

BTW. Po co wyważać otwarte drzwi i pisać dziesiątki linijek kodu, które mogą zwrócić wynik w postaci 31 lutego (!!), jak można to zrobić jedną linią:

<input type="date" name="dataUr">

Zapis do bazy jako DATETIME, a następnie PHPem rozkład na części pierwsze by wyciągnąć potrzebne składowe. Nie prościej?

https://jsfiddle.net/zo3em615/

0

Ewentualnie skorzystaj z jakiegoś gotowego rozwiązania w tym stylu:
https://jqueryui.com/datepicker/

0

W html5 masz input type="date" i kalendarz z przeglądarki, który możesz łatwo obrobić w PHP. Po co Ci 100 selectów...

1 użytkowników online, w tym zalogowanych: 0, gości: 1