Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przetworzenie tablicy
Forum PHP.pl > Forum > Przedszkole
gandziorz
Witam,
W moim formularzu są opcje do wyboru 1-10.

  1. <label><input type="checkbox" name="keyword[]" value="0" />0</label><br />
  2. <label><input type="checkbox" name="keyword[]" value="1" />1</label><br />
  3. <label><input type="checkbox" name="keyword[]" value="2" />2</label><br />
  4. <label><input type="checkbox" name="keyword[]" value="3" />3</label><br />
  5. <label><input type="checkbox" name="keyword[]" value="4" />4</label><br />
  6. <label><input type="checkbox" name="keyword[]" value="5" />5</label><br />
  7. <label><input type="checkbox" name="keyword[]" value="6" />6</label><br />
  8. <label><input type="checkbox" name="keyword[]" value="7" />7</label><br />
  9. <label><input type="checkbox" name="keyword[]" value="8" />8</label><br />
  10. <label><input type="checkbox" name="keyword[]" value="9" />9</label><br />
  11. <label><input type="checkbox" name="keyword[]" value="10" />10</label><br />


Jak przetworzyć daną tablicę aby:
Wyświetlała monit ze można tylko do 3 opcji wybrać ("wybierz maksymalnie 3 opcje").
W przypadku braku zaznaczeń jakiejkolwiek opcji wyświetlał monit "wybierz opcję".
Jak wszystko jest spełnione to żeby wartosci były oddzielone przecinkiem np. ktoś wybrał 1,5 oraz 8 to ładnie dostanę zmienną $koncowyefekt która będzie zawierać "1,5,8".

Bardzo proszę o pomoc.
Z pewnością w przyszłości się odwdzięczę.
mike
Zapraszam do Przedszkola. (Przenoszę z PHP).
Zapoznaj się z funkcjami count() (sprawdzisz ile jest zaznaczonych opcji), isset() lub empty() (sprawdzisz czy coś jest zaznaczone) i wreszcie implode() (połaczysz opcje przecinkiem).
franki01
W przetworzeniu formularza umieść taki kod:

  1. <?php
  2. if(gettype($_POST['keyword']) != 'array' || count($_POST['keyword']) == 0) echo 'Nie wybrałeś żadnej opcji';
  3. else if(count($_POST['keyword']) > 3) echo 'Możesz wybrać max 3 opcje';
  4. else
  5. {
  6. $koncowyefekt = implode(',', $_POST['keyword']);
  7. }
  8. ?>


Z tym sobie powinieneś poradzić.
JoShiMa
Chyba chodzi Ci o coś takiego:

  1. <?php
  2. $ilosc = count($_POST['keyword']);
  3. if($ilosc > 3){
  4.  echo 'możesz wybrać maksymalnie trzy pozycje';
  5. }elseif($ilosc == 0){
  6.  echo 'nie wybrałeś opcji';
  7. }else{
  8. $string = implode(',',array_values($_POST['keyword']));
  9. }
  10. ?>
franki01
Cytat(JoShiMa @ 21.08.2008, 15:36:51 ) *
Chyba chodzi Ci o coś takiego:

  1. <?php
  2. $ilosc = count($_POST['keyword']);
  3. if($ilosc > 3){
  4.  echo 'możesz wybrać maksymalnie trzy pozycje';
  5. }elseif($ilosc == 0){
  6.  echo 'nie wybrałeś opcji';
  7. }else{
  8. $string = implode(',',array_values($_POST['keyword']));
  9. }
  10. ?>

Napisałeś praktycznie to samo co ja... W dodatku przy niewybraniu żadnej opcji linia 2. zwróci błąd, bo $_POST['keyword'] nie będzie typu array. To array_values też jest zbędne w tym wypadku.
JoShiMa
Cytat(franki01 @ 21.08.2008, 17:01:43 ) *
Napisałeś praktycznie to samo co ja...

Napisałaś...
A poza tym jak pisałam to nie widziałam Twojej odpowiedzi.


Cytat(franki01 @ 21.08.2008, 17:01:43 ) *
To array_values też jest zbędne w tym wypadku.

No nie wiem, Nie powstaną puste pola między przecinkami w stringu?
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.