Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] checkbox w pętli while odczyt z POSTA?
Forum PHP.pl > Forum > PHP
Wykrywacz
Mam taki problem powiedzmy sobie zapytanie:
  1. <?php
  2. $select = mysql_query("select * from pracownicy");
  3. echo '<td>IMIE</td><td>NAZWISKO</td><td>ZWOLNIJ</td>';
  4. ?>

dane wyciągam przez while
  1. <?php
  2. while ($dane = mysql_fetch_array($select)) {
  3. echo ''<td>$dane['IMIE']</td><td>$dane['NAZWISKO']</td><td><orm id="form1" name="form1" enctype="multipart/form-data" method="post" action="ludzie.php">
  4. <input type="checkbox" name="zw" value="'.$dane['id'].'"></td>';
  5. }
  6. echo '</tr>';
  7. ?>


gdzie $dane['id'] to unikatowy id pracownika.

Teraz moje pytanie jak zrobić, żeby z zaznaczonych wielu checkbox'ów,
można było wykonać masowe przekazanie wartości.
Wiadomo że w tym zapytaniu $_POST['zw'] przyjmie tylko jedną wartość.


Zdaję sobie sprawę że rozbija się to chyba o unikatować name, ale niemam pojęcia jak potem wywołać te dane, nawet jeżeli pod name dał bym np: <input type="checkbox" name="'.$dane['id'].'" value="'.$dane['id'].'">
skowron-line
dobrze kombinujesz nazwa to ma byc tablica a potem odczytujesz jej wartosci
Wykrywacz
Ok tylko jak ją odczytać? jak bym wiedział to by nie było problemu smile.gif.

Bo przecież jeden POST przyjmuje tylko jedną wartość.
Jeżeli ja mu wsadzam nama z tablicy to wywołując potem POST'a niewiem jak on się nazywa.
Tu cały problem jest dla mnie :]
Darti
zrób tak:
  1. <?php
  2. <input type="checkbox" name="zw['.$dane['id'].']" value="'.$dane['id'].'"></td>';
  3. ?>

a potem odczytasz tablicę, która nazywa się zw. w pliku ludzie.php, np tak:
  1. <?php
  2. print_r($_POST['zw']);
  3. ?>
Wykrywacz
To mam jeszcze jedną wątpliwość

powiedzmy zaznaczam sobie 3 checkboxy
  1. <?php
  2. <input type="checkbox" name="podpis['.$sup['id_paczki'].']" value="'.$sup['id_paczki'].'"></td>';
  3. ?>


Pierwszego id wynosi 103 drugiego 2314 a trzeciego 3400.

Jak wyciągnąć te dane z bo mam
  1. <?php
  2. if (isset($_POST['podpis'])){
  3. $podpis = $_POST['podpis'];
  4. $ilosc= count($podpis);
  5. echo $ilosc.' --ilość<br>';
  6. for ($i=0;$i<$ilosc;$i++){
  7. ?>

zliczam sobie ilość danych wrzucam to do for
i grzecznie wykonuje mi jest ok

tyle że niewiem jak zbudować pętle tak aby $podpis miał wartości

$podpis[103] , $podpis[2314], $podpis[3400]
przekazywane w $_POST['podpis'];

No bo tu jest oczywiste żę $i będzie miał 0,1,2 w sumie 3 wartości.
L_Devil
Możesz zrobić jeszcze inaczej (choć podobnie):

  1. <?php
  2. /* wysyłanie */
  3. while($temp = sciagnij_dane_z_bazy() )
  4. {
  5. echo '<input type="checkbox" name="zmienna_' . $temp['id'] . '" value="costam" ' . ($temp['zaznaczone'] ? 'checked' : '') . '>';
  6. }
  7.  
  8. /* Pobieranie */
  9. foreach($_POST as $key => $value)
  10. {
  11. if(substr($key, 0, 8) == 'zmienna_')
  12. {
  13.  mysql_query('UPDATE dane SET wartosc = "' . $value . '" WHERE id = "' . substr($key, 8) );
  14. }
  15. }
  16. ?>
Wykrywacz
Nie wiem skąd się bierze ten mój radosny upór do kombinowania zamiast przeczytania.

w każdym razie rozwiązanie dla potomny
wystarczyło zrobić tak
  1. <?php
  2. $podpis = $_POST['podpis'];
  3.  
  4. foreach($podpis as $klucz){
  5.  
  6. .......("select * from rozwolnienie where id = $podpis[$klucz]")
  7. }
  8. ?>
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.