Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Przetworzenie tablicy
gandziorz
post 21.08.2008, 14:26:49
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.12.2006

Ostrzeżenie: (0%)
-----


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ę.

Ten post edytował gandziorz 21.08.2008, 14:28:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
mike
post 21.08.2008, 14:31:42
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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).
Go to the top of the page
+Quote Post
franki01
post 21.08.2008, 14:31:44
Post #3





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
JoShiMa
post 21.08.2008, 14:36:51
Post #4





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Go to the top of the page
+Quote Post
franki01
post 21.08.2008, 16:01:43
Post #5





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
JoShiMa
post 22.08.2008, 07:14:15
Post #6





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


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?


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 06:27