Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] przekierowanie w zależności od formularza
xandersky
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.11.2011

Ostrzeżenie: (0%)
-----


Witam..

Nie mogę sobie poradzić z jedną rzeczą..

Potrzebuję zrobić coś takiego:

Formularz ma trzy rubryki :

- nazwa
- cena
- koszt

W zależności od tego czy koszt jest "0" czy jest inny potrzebuje:

- jeżeli jest 0 to dodać rekord do bazy danych
- jeżeli coś w formularzu kosztów wpiszę chcę by przekierowało mnie i przekazało dane do strony gdzie będę jeszcze mógł uzupełnić opis kosztów i dopiero to wszystko wysłać do bazy..

Co do kodu..

1) Sam formularz

  1. <tr>
  2. <td class="row1">
  3. <br />
  4. Dodaj nowy zakup:
  5. <br /><br />
  6. <form action="add.php" method="post">
  7. Telefon:&nbsp;
  8. <input type="text" name="telefon" />&nbsp;&nbsp;
  9. Kwota zakupu:&nbsp;
  10. <input type="text" name="kwota" />&nbsp;&nbsp;
  11. Koszty:&nbsp;
  12. <input type="text" name="koszt" />&nbsp;&nbsp;
  13. <input type="submit" value="&nbsp;Zapisz&nbsp;" />
  14. </form>
  15. </td>
  16. </tr>


2) Plik add.php

  1. $user= $_SESSION['uzytkownik'];
  2. $data=date("d-m-Y");
  3. $data1=date("m");
  4. $telefon = $_POST['telefon'];
  5. $kwota = $_POST['kwota'];
  6. $icon_warn = "<br /><img src=\"/telefony/images/warning-icon.png\">";
  7. $koszt = $_POST['koszt'];
  8.  
  9. if($koszt == 0)
  10. {
  11. if($telefon and $kwota)
  12. {
  13. // dodajemy rekord do bazy
  14. $ins = @mysql_query("INSERT INTO telefony_kupione SET telefon='$telefon', kwota='$kwota', data='$data', data1='$data1'");
  15.  
  16. if($ins)
  17. {
  18. $wyn="<br /><table width=\"100%\" cellpadding=\"3\" cellspacing=\"0\" border=\"0\" class=\"forumline\"><tr><td class=\"row1\" colspan=\"2\" height=\"28\">&nbsp;".$icon_warn."&nbsp;&nbsp;<b>Rekord został dodany poprawnie. Kliknij <a href=\"main.php\">Tutaj</a> aby powrócić</b></td></tr><tr><td class=\"catHead\" colspan=\"4\" height=\"28\"><span class=\"cattitle\"><b>&nbsp;</b></span></td></tr></table><br /><br />";
  19. }
  20. else
  21. {
  22. $wyn="<br /><table width=\"100%\" cellpadding=\"3\" cellspacing=\"0\" border=\"0\" class=\"forumline\"><tr><td class=\"row1\" colspan=\"2\" height=\"28\">Błąd nie udało się dodać nowego rekordu</td></tr><tr><td class=\"catHead\" colspan=\"4\" height=\"28\"><span class=\"cattitle\"><b>&nbsp;</b></span></td></tr></table><br /><br />";
  23. }
  24.  
  25. }
  26. }
  27. else
  28. {
  29. header("costs.php?step=add&amp;telefon=$telefon&amp;kwota=$kwota&amp;koszt=$koszt");
  30. }


Tu w przypadku else próbowałem przekierować dane GET'em do strony costs.php gdzie mógłbym dodać opis kosztów..

Niestety całe powyższe rozwiązanie nie działa..

W przypadku gdy koszt jest wpisany 0 to rekord dodaje się do bazy bez problemu natomiast gdy wpiszę cokolwiek innego poza zerem nic się nie dzieje..

Ma ktoś pomysł jak to rozwiązać? ewentualnie gdzie popełniłem błąd??

Pozdrawiam serdecznie
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Użycie klasy niczego tutaj nie zmieni, bo nie w tym problem. Zresztą wartości pól klasy i tak trzeba by było gdzieś (np. sesja) przechować. Problem w tym, że funkcja header() jest użyta nieprawidłowo. Powinno być:
  1. header('Location: helpdesc.php?step=add&telefon='.urlencode($telefon).'&kwota='.urlencode($kwota).'&koszt='.urlencode($koszt));

Gwoli wyjaśnienia, problemem jest brak Location: , natomiast funkcji urlencode() użyłem, aby można było przesyłać również znaki specjalne (jak np. spacja).

Jednak do rozwiązania problemu użyłbym sesji, jak wcześniej wspomniałem. Zresztą nie ma w tym nic trudnego:
  1. // w pliku add.php
  2. $_SESSION['add']['telefon'] = $telefon;
  3. $_SESSION['add']['kwota'] = $kwota;
  4. $_SESSION['add']['koszt'] = $koszt;
  5.  
  6. // a w pliku costs.php
  7. if(isset($_SESSION['add'])) {
  8. $step = 'add';
  9. $telefon = $_SESSION['add']['telefon'];
  10. $kwota = $_SESSION['add']['kwota'];
  11. $koszt = $_SESSION['add']['koszt'];
  12. // jeśli te wartości nie będą nam potrzebne, to wypada je usunąć
  13. unset($_SESSION['add']);
  14. }

W powyższym kodzie zgrupowałem wszystkie informacje w tablicy o indeksie 'add', jednak Ty możesz użyć innego indeksu, albo zapisać wszystko bezpośrednio w $_SESSION.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 04:34