Dziwne zachowanie POST, a GET w PHP

0

Witam. Mój problem polega na tym, iż mimo, że wysyłam dane formularza metodą POST to w jakiś sposób są one wysyłane jednak przez GET.
Po wypełnieniu i wysłaniu formularza adres strony WWW przybiera następujący format: dodaj_monety.php?nick_gracza=BrK&liczba_monet=5000
Część kodu znajdująca się za warunkiem sprawdzającym zawartość zmiennych POST się nie wykonuje, co świadczy o tym, że są one puste, mimo iż być nie powinny.

Co może być tego przyczyną?
Cały kod poniżej.

<?php
include_once("config_monety.php");

//polaczenie z baza danych i wczytanie
if(!$db_lnk=mysql_connect($serwer_db, $login_db, $haslo_db))
{
    echo ('Wystąpił błąd połączenia z bazą danych. Spróbuj ponownie za jakiś czas lub skontakuj się z administratorem');
}
    
if (!mysql_select_db($nazwa_db,$db_lnk))
{
    echo ('Wystąpił problem z wyborem bazy danych. Skontaktuj się z administratorem');    
    mysql_close();
    exit;
}


//pobranie nicku zrodlowego
    echo '<form>';
    echo '<form action="dodaj_monety.php" method="post">';
    echo '<fieldset>';
    echo '<legend>Nick gracza<br></legend>';
    
    // wprowadzenie zapytania tworzacego liste rozwijana
    $zapytanie = mysql_query ("SELECT nick FROM monety ORDER BY nick ASC");
    echo '<label for="nick_gracza">Wybierz nick gracza<br></label>';
    echo '<select name="nick_gracza">';
    echo '<option value="">Wybierz nick</option>';
    
    while($option = mysql_fetch_assoc($zapytanie)) 
    {
        echo '<option value="'.$option['nick'].'">'.$option['nick'].'</option>';
    }
    echo '</select>';
    echo '<br>';
    echo '<br>';
    
    //pobranie nicku docelowego
    echo '</fieldset>';
    echo '<fieldset>';
    
    echo '<legend>Liczba monet do dodania<br></legend>';
    echo '<label for="liczba_monet">Liczba monet do dodania</label>';
    echo '<input id="liczba_monet" name="liczba_monet"/><br>';
    echo '<br>';
    echo '<input type="submit" value="Zatwierdź" />';
    echo '</fieldset>';
    echo '</form>';


//ustawienie monet graczowi (ilosc z formularza) + sprawdzenie warunku wypelnienia formulara
if(isSet($_POST['liczba_monet'])&&isSet($_POST['nick_gracza']))
{
    $liczba_monet=$_POST['liczba_monet'];
    $nick_gracza=$_POST['nick_gracza'];
    $pobierz_stare=mysql_query("SELECT coins FROM monety WHERE nick='$nick_gracza'");
    
    $row=mysql_fetch_row($pobierz_stare);
    $stare_monety=$row[0];
    $do_ustawienia=$stare_monety+$liczba_monet;
    
    $ustaw_monety=mysql_query("UPDATE monety SET coins='$do_ustawienia' WHERE nick='$nick_gracza'")or die(mysql_error());

    if($ustaw_monety)
    {
        echo "Pomyślnie ustawiono monety graczowi '$nick_gracza'";
    }
    else
    {
        echo "Wystąpił błąd przy ustawianiu monet graczowi '$nick_gracza'";
    }
}
?> 
 
1

może dlatego, że zagnieżdżasz znacznik <form>

    echo '<form>';
    echo '<form action="dodaj_monety.php" method="post">';
0

Ok działa. Przeoczyłem to.
Dziękuję za pomoc.

0

Dziś miałem podobny problem - bo zastanawiało mnie czemu netbeans podświetla mi na czerwono poprawny znacznik <form....> - okazało się że był zagnieżdzony. Dlatego polecam chociażby korzystanie z biblioteki smarty - dzięki czemu łatwiej wyłapiesz takie rzeczy, unikniesz pisania po kilka tysiecy razy echo :), netbeans (o ile z niego korzystasz) podpowie Ci o wiele wiecęj, nie pogubisz się w cudzysłowach i apostrofach.... Ogólnie to dużo korzyści, a mało wad :)

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