Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zapisać wiele pól o podobnej nazwie z formularza do bazy
Forum PHP.pl > Forum > PHP
daris
Mam taki formularz:

  1. <table><form action=costam method=post>
  2. <tr><td>jakas nazwa</td><td><input name=pos0 value='0'></td></tr>
  3. <tr><td>jakasnazwa2</td><td><input name=pos1 value='4'></td></tr>
  4. <tr><td>jakasnazwa2</td><td><input name=pos2 value='1'></td></tr>
  5. <tr><td colspan=2><input type=submit></td></tr>
  6. </form></table>

i teraz jak zapisać z niego dane do bazy? Konktretnie chodzi o tego inputa z pozycją (o nazwie pos + id). Przeleciałbym pętlą for tak:

  1. <?php
  2. for($i = 0; $_POST["pos" . $i] != ""; $i++) {
  3. jakies_zapytanie;
  4. $i++;
  5. }
  6. ?>
ale przecież id to mogą być kolejno 1, 2, 4  - i co wtedy? Wartość o id = 4 już nie zostanie zapisana.

Więc jak to można inaczej rozwiązać?

PS. Jak ja nie nawidze WYSIWYG'ów itp. Ten akurat jest taki wredny że zamiast jednej nowej linii dodaje dwie tongue.gif
edit: nie ma to jak quick edit biggrin.gif (szybka edycja) - to jest normalny edytor biggrin.gif
phpion
Pętla foreach będzie Ci pomocna.
Hazel
Co to za konstrukcja while? W życiu nie widziałem czegoś takiego.
foreach może?
daris
Cytat
Co to za konstrukcja while? W życiu nie widziałem czegoś takiego.

O k... Jak myślisz z czym mi się to pomyliło? biggrin.gif (bo ja już wiem tongue.gif ) Tak to jest jak się siedzi prawie cały dzień nad php ;P

Jak sobie wyprintowałem tablicę $_POST to teraz już wiem co zrobić biggrin.gif
Hazel
Pewnie pomyliło Ci się ze switch.

Rozwiązanie problemu masz wyżej.
daris
Nie zauważyłeś z czym mi się pomyliło? biggrin.gif Już zmieniłem na to co wtedy chciałem napisać czyli FOR tongue.gif

Teraz utknąłem dalej. Nie wiem jak w foreach pobrać index(?) (chodzi o to pogrubione)
Cytat
Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
)


A tak przy okazji - czy da się to wszystko zapisać do bazy za pomocą jednego zapytania?
Hazel
Toż to ironia była z tym switchem, przeciez na pierwszy rzut oka widać, że for miało być...
  1. <?php
  2. foreach ($_POST as $indeks => $wartosc)
  3. {
  4. //...
  5. }
  6. ?>

o to chodzi?
daris
Już wszystko działa tylko pozostaje jeden problem:

Cytat
czy da się to wszystko zapisać do bazy za pomocą jednego zapytania?


Bo teraz każde pole to następne zapytanie ;P
Hazel
A czy znasz z góry ilość tych pól?
Nawet jeśli nie to jasne, że się da, musisz generować zapytanie następną pętlą. Daj strukturę bazy albo coś.
daris
Chodzi mi tylko o ogólną składnię

Takie coś to ja mogę w parę sekund napisać ;P
  1. <?php
  2. foreach($_POST as $id => $pos) {
  3. $q .= "SET pos = '$pos' WHERE id = $id ";
  4. }
  5. db_query("UPDATE panels $q");
  6. ?>

Tylko jak to dokładniej idzie?

edit:
Cytat
A czy znasz z góry ilość tych pól?

Przecież wszystkie są w $_POST'cie ;P

Aktualnie robię to tak:
  1. <?php
  2. foreach($_POST as $id => $pos) {
  3. db_query("UPDATE {p}panels SET pos = '$pos' WHERE id = $id");
  4. }
  5. ?>
Hazel
  1. INSERT INTO tabela (`pole`, `pole1`) VALUES (`dane`, `dane1`), (`dane`, `dane1`), (`dane`, `dane1`), (`dane`, `dane1`), (`dane`, `dane1`)
raczej... Bo jeśli chodzi o UPDATE to nie znam sposobu, który modyfikowałby w różny sposób kilka rekordów jednocześnie. Zatem musisz chyba dodawać rekordy zamiast je update'ować.
daris
Najwyżej zostanie tak jak mam teraz. W sumie w panelu administracyjnym jak za jednym aktualizowaniem pozycji (odpowiedni przycisk, tylko te zapytania lecą do bazy) wykona się około 5 zapytań to nic się nie stanie biggrin.gif
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.