Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Switch i formularz w case
Forum PHP.pl > Forum > Przedszkole
loogin
Dziś jest dzień problemów smile.gif
Otóż mam formularz typu radio wyświetlający wyniki zapytania oraz umożliwiający wybór pola do dalszej edycji.
Oto fragment:
  1. echo "<form action=' ' name='radiowy' method='post'>";
  2. echo "<tr>";
  3. echo "<td><b> Nazwa </b> </td>";
  4. echo "<td>".$r['nazwa']."</td>";
  5. echo "<td> <input type='radio' value='1' name='wybor' /></td>";
  6. echo "</tr>";
  7. echo "<td><b> Numer </b> </td>";
  8. echo "<td>".$r['numer']."</td>";
  9. echo "<td> <input type='radio' value='2' name='wybor' /></td>";
  10. echo "</tr>";
  11. echo "<td>&nbsp;</td>";
  12. echo "<td><input type='submit' value='Zmień' /></td>";
  13. echo "</table>";
  14. echo "</form>";

Wybieram teraz np. pole 1, wyświetla się formularz umożliwiający dokonanie zmiany. Nie wiem dlaczego, ale od razu (wraz z formularzem 'nowe') wyświetla komunikat "Błąd", a po kliknięciu OK nic się nie dzieje.
  1. switch ($_POST['wybor']) {
  2. case 1:
  3. echo "<form name='nowe' method='post'>";
  4. echo "nowa wartość:";
  5. echo "<input type='text' name='dozmiany' />";
  6. echo "<input type='submit' value='OK' />";
  7. echo "</form>";
  8.  
  9. if (isset($_POST['dozmiany'])) {
  10. echo "Działam"
  11. } else echo "Bląd";
  12. break;
  13. }
tehaha
no bo od razu po formularzu sprawdzasz czy jest ustawiona zmienna $_POST['do_zmiany'], a że nie jest to pojawia się: błąd
loogin
No tak, jak mam inaczej, to też nic.
  1. $dozmiany=$_POST['dozmiany'];
  2. if ($dozmiany) {
  3. echo "Działam" }

Jak w takim razie to poprawić?
tehaha
nie bardzo wiem co chcesz zrobić ale może chodzi o coś takiego:
  1. switch ($_POST['wybor']) {
  2. case 1:
  3. echo "<form name='nowe' method='post'>";
  4. echo "nowa wartość:";
  5. echo "<input type='text' name='dozmiany' />";
  6. echo "<input type='submit' value='OK' />";
  7. echo "</form>";
  8. break;
  9. }
  10.  
  11. if (isset($_POST['dozmiany'])) {
  12. echo "Działam";
  13. } else
  14. {
  15. echo "Bląd";
  16. }
loogin
Teraz faktycznie "Działam", ale w takim razie nie wiem jak rozwiązać kwestię aktualizacji danych w bazie.
Początkowe założenie było takie, że każdy case zawiera osobny formularz na nową wartość i osobną instrukcję update (np. case nazwa - update nazwa, case - cos tam - update cos tam).
Czy teraz, kiedy znajduje się to za switchem, nadanie każdemu formularzowi w case innej nazwy i sprawdzane która zmienna (pole formularza) została wypełniona ma sens? Wydaje się to dość łopatologiczne.
tehaha
nie bardzo rozumiem, czemu do każdej zmiennej ma być oddzielny formularz, nie możesz za jednym zamachem zaktualizować wszystkich pól?
loogin
Niby mogę, ale myślałam, że lepiej jeśli np. trzeba zmienić ulicę, bo ktoś się przeprowadził, to wykonam update tylko tego jednego pola. Sugerujesz żeby usunąć cały formularz radio i switch, a w zamian dać zwykły formularz z input type='text' value='wartosc z bazy' i aktualizować całość? Brzmi prościej, ale czy wydajniejsze?
tehaha
szczerze mówiąc to chyba nie ma aż takiej dużej różnicy czy aktualizujesz 1 czy 8 kolumn, poza tym taka aktualizacja to operacja, którą wykonuje się raz na jakiś czas więc chyba nie trzeba tu implementować optymalizacji na poziomie milisekundy albo i jeszcze krótszego czasu, najlepiej zrób formularz do aktualizacji wszystkich pól jednocześnie tak będzie najprościej
loogin
Dziękuję za poradę i pomoc; zostanie na prostym formularzu napisanym raz-dwa i bez problemów.
Temat zakończony.
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.