Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz - pola wielokrotnego wyboru
Forum PHP.pl > Forum > Przedszkole
djmassive
Mam taki kod:

  1. <?php
  2. echo "<form method='POST' action='mod_booking.php?mode=send_mails&cat=$cat&woj=$woj&offercheck=$offer_check'>";
  3.  echo "<center><font face='tahoma' size='2px' color='#000000'>";
  4.  echo "<fieldset style='width:520'><legend><b>Wybierz województwo do którego będą wysłane maile</b></legend></font>";
  5.  echo "<table border='0' style='border-collapse: collapse; color: #000000; font-family: Tahoma; font-size: 8pt' cellpadding='0' cellspacing='0' width='520'><tr>";
  6.  echo "<td width='130'><input type='checkbox' name='woj' value='dolnośląskie'>Dolnośląskie</td>";
  7.  echo "<td width='130'><input type='checkbox' name='woj' value='kujawskopomorskie'>Kujawsko Pomorskie</td>";
  8.  echo "<td width='130'><input type='checkbox' name='woj' value='lubelskie'>Lubelskie</td>";
  9.  echo "<td width='130'><input type='checkbox' name='woj' value='Lubuskie'>Lubuskie</td></tr><tr>";
  10.  echo "<td width='130'><input type='checkbox' name='woj' value='łódzkie'>Łódzkie</td>";
  11.  echo "<td width='130'><input type='checkbox' name='woj' value='małopolskie'>Małopolskie</td>";
  12.  echo "<td width='130'><input type='checkbox' name='woj' value='mazowieckie'>Mazowieckie</td>";
  13.  echo "<td width='130'><input type='checkbox' name='woj' value='opolskie'>Opolskie</td></tr><tr>";
  14.  echo "<td width='130'><input type='checkbox' name='woj' value='podkarpackie'>Podkarpackie</td>";
  15.  echo "<td width='130'><input type='checkbox' name='woj' value='podlaskie'>Podlaskie</td>";
  16.  echo "<td width='130'><input type='checkbox' name='woj' value='pomorskie'>Pomorskie</td>";
  17.  echo "<td width='130'><input type='checkbox' name='woj' value='śląskie'>Śląskie</td></tr><tr>";
  18.  echo "<td width='130'><input type='checkbox' name='woj' value='świętokrzyskie'>Świętokrzyskie</td>";
  19.  echo "<td width='130'><input type='checkbox' name='woj' value='warmińskomazurskie'>Warmińsko-Mazurskie</td>";
  20.  echo "<td width='130'><input type='checkbox' name='woj' value='wielkopolskie'>Wielkopolskie</td>";
  21.  echo "<td width='130'><input type='checkbox' name='woj' value='zachodniopomorskie'>Zachodnio Pomorskie</td></tr>";
  22.  echo "</table></fieldset></center>";
  23. ?>


gdy zaznaczam więcej niż jedno województwo, zapisuje mi to ostatnio wybrane, i nie bierze pod uwagę pozostałych sad.gif Jak to zrobić questionmark.gif
nospor
Nadaj dla chceckboxow name z [], czyli name='woj[]'
w poscie otrzymasz pod indexem "woj" tablice zaznaczonych checkboxow
djmassive
Dzięki serdeczne za rade exclamation.gif Myślałem aby tak zrobić, ale wpisywałem woj['nazwa'] i mi coś nie śmigało exclamation.gif Thx raz jeszcze
norris
witam

mam prawie identyczny problem co djmassive z ta roznica ze moj skrypt php odnosi sie do formularza w osobnym pliku html, a wiec nie uzywam funkcji echo. z poczatku mi rowniez wysylalo tylko ostatni zaznaczony checkbox wiec zrobilem tak jak poradzil nospor. poprawilem wiec nazwy pol z pliku php i html i po zapisaniu i przetestowaniu okazalo sie ze tym razem w mailu nie otrzymuje zadnej wartosci dla tych pol (ani value anie tez indexu tablicy checkbox :/ )

fragmenty moich kodow obecnie wygladaja mniej wiecej tak:

html:

  1. <label><input name="skojazenia[]" type="checkbox" value="chodzenie_po_lesie" />chodzenie po lesie;</label>
  2. <label><input name="skojazenia[]" type="checkbox" value="gra_na_gitarze" />gra na gitarze;</label>
  3. <label><input name="skojazenia[]" type="checkbox" value="biwaki_obozy" />biwaki, obozy;</label>
  4. <label><input name="skojazenia[]" type="checkbox" value="samodoskonalenie" />samodoskonalenie;</label>
  5. <label><input name="skojazenia[]" type="checkbox" value="pomoc_innym" />pomoc innym;</label>
  6. <label><input name="skojazenia[]" type="checkbox" value="brak_uprzejmosci" />brak uprzejmosci;</label>
  7. <label><input name="skojazenia[]" type="checkbox" value="alkohol" />picie alkoholu;</label>
  8. <label><input name="skojazenia[]" type="checkbox" value="papierosy" />palenie papierosow;</label>
  9. <label><input name="skojazenia[]" type="checkbox" value="wychowanie" />dzialania wychowawcze;</label>
  10. <label><input name="skojazenia[]" type="checkbox" value="odpowiedzialnosc" />odpowiedzialnosc;</label>
  11. <label><input name="skojazenia[]" type="checkbox" value="pewnosc_dzialan" />pewnosc dzialania;</label>
  12. <label><input name="skojazenia[]" type="checkbox" value="rycerskosc" />postawa rycerska;</label>
  13. <label><input name="skojazenia[]" type="checkbox" value="zbiorki" />zbiorki;</label>
  14. <label><input name="skojazenia[]" type="checkbox" value="paramiitaryzm" />dzialania paramilitarne;</label>
  15. <label><input name="skojazenia[]" type="checkbox" value="ratownictwo" />ratownictwo;</label>
  16. <label><input name="skojazenia[]" type="checkbox" value="brak_tolerancji" />brak tolerancji;</label>
  17. <label><input name="skojazenia[]" type="checkbox" value="zaradnosc_zyciowa" /> zaradnosc zyciowa;</label>
  18. <label><input name="skojazenia[]" type="checkbox" value="wolontariat" /> wolontariat;</label>


php:
  1. <?php
  2.  
  3. $wiadomosc = "Kolejne odpowiedzi na ankietern"
  4. ."Znajomosc ZHP: ".$_POST['znajomosc_zhp']."rn"
  5. ."rnZ harcerstwem kojarzy mi sie: ".$_POST['skojazenia[]']."rn"
  6. ."rnlub tez ".$_POST['inne_skojazenia']."rn"
  7. ."rnHarcerstwo to dla mnie ".$_POST['harcerstwo_to']."rn"
  8. ."rn".$_POST['alk']."% znanych mi harcerzy pije alkoholrn"
  9. ."rn".$_POST['pap']."% znanych mi harcerzy pali papierosyrn"
  10. ."rnNowy komentarz: ".$_POST['komentarz']."rn"
  11. ."rnAnkietowany to ".$_POST['plec']."rn"
  12. ."rnZ harcerstwem wiaze go: ".$_POST['zwiazek']."rn"
  13. ."rnJest w wieku: ".$_POST['wiek']."rn"
  14. ."Kolejna poprawnie wyslana ankieta :)";
  15.  
  16. ?>


prosilbym o wskazanie bledu lub ewentualna podpowiedz jak to rozwiazac. chcialem zaznaczyc ze jestem kompletnie poczatkujacy wiec zalezy mi na naprawde lopatologicznym tlumaczeniu tongue.gif bo skrypt php przerabialem z gotowca cool.gif
djmassive
Ja osobiście Ci polecam zamieszczać kody HTML w pliku php, najlepiej poprzez funkcję echo. Osobiście nie dokońca jestem przekonany, do używania np. formularzy w osobnych plikach HTML zrób tak

plik ankieta.php:
  1. <?php
  2. echo "<form action='ankieta.php' method='post'>
  3.  <input..... // kolejne pola input aż do końca potrzebnych checkboxów
  4.  
  5. <input type='submit' value='wyslij' name='submit'>
  6.  </form>";
  7.  
  8. if ($submit=='wyslij')
  9. {
  10. $wiadomosc = "Kolejne odpowiedzi na ankietern"
  11. ."Znajomosc ZHP: ".$_POST['znajomosc_zhp']."rn"
  12. ."rnZ harcerstwem kojarzy mi sie: ".$_POST['skojazenia[]']."rn"
  13. ."rnlub tez ".$_POST['inne_skojazenia']."rn"
  14. ."rnHarcerstwo to dla mnie ".$_POST['harcerstwo_to']."rn"
  15. ."rn".$_POST['alk']."% znanych mi harcerzy pije alkoholrn"
  16. ."rn".$_POST['pap']."% znanych mi harcerzy pali papierosyrn"
  17. ."rnNowy komentarz: ".$_POST['komentarz']."rn"
  18. ."rnAnkietowany to ".$_POST['plec']."rn"
  19. ."rnZ harcerstwem wiaze go: ".$_POST['zwiazek']."rn"
  20. ."rnJest w wieku: ".$_POST['wiek']."rn"
  21. ."Kolejna poprawnie wyslana ankieta :)";
  22.  mail.... i tak dalej, 
  23. }
  24. ?>


Powinno śmigać exclamation.gif
nie wiem czy jeszcze zauważyłeś, że można ominąć używanie np., $_POST['wiek'] używając poprostu tego jako zmiennej $wiek, ja narazie używam właśnie takich zmiennych.
mike
Cytat(djmassive @ 2005-10-27 19:51:50)
(...) nie wiem czy jeszcze zauważyłeś, że można ominąć używanie np., $_POST['wiek'] używając poprostu tego jako zmiennej $wiek, ja narazie używam właśnie takich zmiennych.

I robisz baaaardzo źle.

Owszem można, ale tego typu skrypty mają duże wady i są podatne na włamania.
Kod jest przestarzały - tak już się ni pisze. To jest stary trend i niebezpieczny.

Poczytaj o zagadnieniu/dyrektywie register_globals.
nospor
@norris nie czytasz dokladnie postow a potem masz bledy. wyraznie pisalem, iz potem z posta nalezy pobierac bez []
ty pobierasz: $_POST['skojazenia[]']
a masz obierac: $_POST['skojazenia']. Pozatym to ci zwroci tablice, anie pojedyncza wartosc

pozdro
norris
no ok moze i nie przeczytalem wczesniej dokladnie ale teraz zrobilem tak jak napisales i w malu zwrotnym dostalem:
Cytat
...Zharcerstwem kojarzy mi sie: Array....

i dalej nic a z tego co zrozumialem to mialem dostac tablice indexow pol ktore zaznaczyl uzytkownik a ja dostaje w wyniku tylko info o tym ze jest to tablica i nic wiecej. :/
mike
Ty nie dostajesz informacji że to jest tablica, ty dostajesz tablicę, a to jest duża różnica.
Zrób:
  1. <?php
  2.  
  3. echo '<pre>' . print_r( $_POST['skojazenia'], true ) . '</pre>';
  4.  
  5. ?>
norris
a no faktycznie dostawalem tablice tyle ze pusta :] a sposob wyswietlania podany przez mike_mech dziala swietnie tyle ze ja jak juz pisalem wczesniej nie uzywam funkcji echo bo dzialam na dwoch odrebnych plikach ale sobie z tym poradzilem smile.gif juz wszystko jest ok dzieki za pomoc
Gość_Darek
moze ktos mi pomoze w zwiazku z tym tematem

jak wyswietlic zaznaczone pola aby nie wyglądało to tak
"Array ( [0] => ratownictwo [1] => jazda )"

tylko

"ratownictwo, jazda"

bede bardzo wdzieczny

Pozdrawiam
ghostrider
join" title="Zobacz w manualu php" target="_manual
Gość_darek
prosilbym bardziej łopatologicznie siedze nad tym od rana i bez efektow
ghostrider
  1. <?php
  2. $string = join(",", $_POST['skojarzenia']);
  3.  
  4. print $string;
  5. ?>
Gość_Darek
dziekuje Panu Ghostrider
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.