Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP][HTML]Formularz - HTML + PHP
Forum PHP.pl > Forum > Przedszkole
Mody23
Witam!

Mam pewien kod. Chodzi o to, że to jest taki jakby sklep. No i jak użytkownik ma jakiegoś warna (ostrzeżenie), to może sobie wykupić usunięcie X warnów. No ale ten kod mi nie działa, tzn. wszystko jest OK, ale po naciśnięciu "dalej" w formularzu, nic się nie zmienia w bazie. Nie updatuje mi ani warnów, ani portfela (bo jeśli coś kupimy, to powinno pobrać/odjąć środki z portfela).

kod php:

  1. $userid = $userdata['user_id'];
  2.  
  3. $sql = "SELECT userid, value
  4. FROM " . WARNINGS_TABLE . "
  5. WHERE userid = '$userid'";
  6. $result = $db->sql_query($sql);
  7. while( $row = $db->sql_fetchrow($result) )
  8. {
  9. $value_warnings = $row['value'];
  10. $user_id = $row['userid'];
  11. }
  12.  
  13. $money = $userdata['user_money'];
  14. $ilosc = $_POST['ilosc'];
  15. $dalej = append_sid("sklep.$phpEx?=wyslij");
  16. $cena_warna = $board_config['cena_warna'];
  17. $nowailosc = '$money - ($cena_warna * $ilosc)';
  18.  
  19. if ( $dalej )
  20. {
  21.  
  22. if ( $money >= ($cena_warna*$ilosc) && $ilosc <= $value_warnings ) {
  23. $sql = "UPDATE " . WARNINGS_TABLE . "
  24. SET value = '$value_warnings - $ilosc'
  25. WHERE userid = '$user_id'";
  26. $sql1 = "UPDATE " . USERS_TABLE . "
  27. SET user_money = '$nowailosc'
  28. WHERE userid = '$user_id'";
  29. } else {
  30. message_die(GENERAL_MESSAGE, $lang['sklep_error']);
  31. }
  32.  
  33. }
  34.  
  35. $template->assign_vars(array(
  36. 'S_ACTION' => $dalej)
  37. );


i HTML:

  1. <form action="{S_ACTION}" method="post">
  2. <table cellspacing="1" cellpadding="3" border="0" width="100%" class="forumline">
  3. <tr>
  4. <th align="center" colspan="2" class="thTop">{L_TITLE_SHOP}</th>
  5. </tr>
  6. <tr>
  7.  
  8. <td class="row1" width="33%">{L_USER_WARN_TO_DELETE}</td>
  9. <td width="67%" class="row2"><input type="text" maxlength="1" style="width:66%" name="ilosc"></td>
  10. </tr>
  11. <tr>
  12. <td><input type="submit" value="Dalej" name="dalej"></td>
  13. </tr>
  14. </form>


Co jest nie tak?
kpt_lucek
Cytat(Mody23 @ 22.10.2011, 00:10:12 ) *
[...]
  1. <form action="{S_ACTION}" method="post"> <!-- tutaj nie ma objaśnienia czym jest {S_ACTION}, wnioskuję że jest to prototype, aczkolwiek nie pokazałeś jak owy kod wygląda, może w nim są błędy -->
  2. <table cellspacing="1" cellpadding="3" border="0" width="100%" class="forumline">
  3. <tr>
  4. <th align="center" colspan="2" class="thTop">{L_TITLE_SHOP}</th>
  5. </tr>
  6. <tr>
  7.  
  8. <td class="row1" width="33%">{L_USER_WARN_TO_DELETE}</td>
  9. <td width="67%" class="row2"><input type="text" maxlength="1" style="width:66%" name="ilosc"></td>
  10. </tr>
  11. <tr>
  12. <td><input type="submit" value="Dalej" name="dalej"></td>
  13. </tr>
  14. </table>
  15. </form>

Przeczytaj komentarz w lini #1
Mody23
Ale spójrz w kod php. Jest zmienna $dalej.
Potem templatuje do widoku tę zmienną:

  1. $template->assign_vars(array(
  2. 'S_ACTION' => $dalej)


I to powinno działać. Chyba, że coś jest nie tak ze zmienną $dalej, ale według mnie, złe jest zapytanie, tylko nie wiem jak inaczej to zrobić.

Dodam jeszcze, że cały formularzyk ładnie przechodzi w adres url: sklep.php?=wyslij, ale nie ma efektrów w bazie...

EDIT:

Zauważyłem jeszcze teraz, że jak dodałem do tego warunku:

  1. if ( $money >= ($cena_warna*$ilosc) && $ilosc <= $value_warnings ) {


takie coś:

  1. !empty($_POST['ilosc'])


To od razu zwraca mi błąd, że ta zmienna jest pusta. A ja chcę żeby ten błąd mi zwracał dopiero jak w adresie URL mam sklep.php?=wyslij, a nie od razu po wejsciu na sklep.php. Czemu to nie uwzględnia tego, że na samym początku mam coś takiego:

  1. if ( $dalej )


W ogóle nie patrzy na to, jaki adres url jest, tylko od razu sypie błędami.
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.