Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak sprawdzić, co wysłało informacje z formularza
GraphiCAD
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.08.2008

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


Witam!

Kombinowałem, kombinowałem i poległem...
Szukałem na forum, ale nie znalazłem. Skrypt ma mieć możliwość dodania pozycji do formularza zamówienia wewnątrz firmy, a dopiero po wypełnieniu (możliwe kilka pozycji) zapisanie o do bazy danych.
Wygenerowałem formularz, którego pola mają nazwy generowane przez skrypt. Ilość takich pól jest zmienna:
Kod
for ($licznik = 1; $licznik <= $ilosc_pol; $licznik++) {
     echo "<input type=\"text\" name=\"pos$licznik\" value=\"\"></input>"; // itd.
}


I wychodzi:

Kod
<form action="dodaj.php" method="POST">
<input type="text" value="" name="pos1"></input><input type="submit" name="del_pos1" name="Usuń"></input>
<input type="text" value="" name="pos2"></input><input type="submit" name="del_pos2" name="Usuń"></input>
<input type="text" value="" name="pos3"></input><input type="submit" name="del_pos3" name="Usuń"></input>
...
<input type="text" value="" name="posX"></input><input type="submit" name="del_posX" name="Usuń"></input><BR><inoput type="submit" name="send" value="Zapisz"></input><BR></form><BR>

Problem polega na tym, że  nie wiem, jak zrobić, żeby automatycznie wydobyć informację o tym, które pole typu "SUBMIT" wysłało dane z formularza.
Potrzebana była by jakaś pętla typu:
Kod
for ($licznik = 1; $licznik <= $ilosc_pol; $licznik++) {
if (isset($_POST['del_pos$licznik'])) { cośtam się dzieje... }
}

Ale to nie działa, a nie wiem dlaczego. Argument podany, jako nazwa elementu w tablicy $_POST jest według mnie ciągiem znaków i powinien podlegać takim manewrom, jak generowanie jego nazwy, a jakoś nie działa. A może to coś innego?

Ten post edytował GraphiCAD 4.08.2008, 10:35:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
JoShiMa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


A do czego są atrybuty name?
  1. <?php
  2. if(isset($_POST['del_pos1'])){
  3.  //usuń 1
  4. ...
  5. }elseif(isset($_POST['del_posX'])){
  6.  //usuń X
  7. }elseif(isset($_POST['send'])){
  8. //send
  9. ?>


Poza tym nie tak:
  1. <input type="text" value="" name="pos3"></input>

Tylko tak:
  1. <input type="text" value="" name="pos3"/>


Ja takie rzeczy załatwiam inaczej. Zamiast tych submitów robię checkboxy i zaznaczam pozycje do usunięcia. Pod checkboxami daję jeden submit name="usuń" i obsługuję wszystkie zaznaczone na raz. Prosto i bez miliona warunków. Co więcej, jeśli liczna tych elementów jest zmienna i formularz jest tworzony w pętli radzę korzystrać ze zmiennych tablicowych. Ostatecznie u mnie wyglądałoby to tak:

  1. <input type="text" value="" name="pos[1]"/><input type="checkbox" name="del_pos[1]" name="Usuń"/>
  2. <input type="text" value="" name="pos[2]"/><input type="checkbox" name="del_pos[2]" name="Usuń"/>
  3. <input type="text" value="" name="pos[3]"/><input type="checkbox" name="del_pos[3]" name="Usuń"/>
  4. ...
  5. <input type="submit" name="send" value="Zapisz"/><input type="submit" name="usun" name="Usuń"/>


Potem sprawdzenie:
  1. <?php
  2. if(isset($_POST['usun'])){
  3. //usuwam pozycje zaznaczine w checkboxach
  4. }elseif(isset($_POST['send'])){
  5. //robię coś innego
  6. }
  7. ?>


Zaznaczone checkboxy mam w tablicy $_POST['del_pos'], sprawdzam jakie są w niej klucze (będą tylko te które użytkownik odhaczył) i je obsługuję.
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: 5.10.2025 - 22:55