Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Stan checkboxów do stringa
Forum PHP.pl > Forum > Przedszkole
neverever
Mam sobie taką liste checkboxów:
Cytat:
  1. <form name="test" method="POST" action=""> 
  2. <input type="checkbox" name="tablica[0]" value="1"> Other 
  3. <input type="checkbox" name="tablica[1]" value="1"> Other 
  4. <input type="checkbox" name="tablica[2]" value="1"> Other 
  5. <input type="checkbox" name="tablica[3]" value="1"> Other 
  6. <input type="checkbox" name="tablica[4]" value="1"> Other 
  7. <input type="checkbox" name="tablica[5]" value="1"> Other 
  8. <input type="checkbox" name="tablica[6]" value="1"> Other 
  9. <input type="checkbox" name="tablica[7]" value="1"> Other 
  10. <input type="checkbox" name="tablica[8]" value="1"> Other 
  11. <input type="checkbox" name="tablica[9]" value="1"> Other 
  12. <input type="submit" name="submit" value="Wyslij"> 
  13. </form> 
  14.  
  15. <? 
  16. if($_POST['submit']) { 
  17. //co tutaj? ja miałem takie sprawdzenie wartości ifem w pętli itd. 
  18. echo tab2str($_POST['submit']); 
  19. } 
  20.  
  21. function tab2str($tab){ 
  22. $tmp=''; 
  23. for($i=0;$i<=count($tab)-1;$i++){ 
  24. $tab[$i]!='1' ? $tmp.='0' : $tmp.='1'; 
  25. } 
  26. return $tmp; 
  27. } 
  28.  
  29. //ten sposób jednak nie zwraca mi całej tablicy ...ale gdy w warunku wykonania pęt
    li dam konkretnie $i<=9 idzie ładnie 
  30.  
  31. ?>


Za pomocą metody post otrzymuję tablice, gdzie "1" oznacza że pole zostało zaznaczone.

Teraz mam pytanie: jak najlepiej zwrócić wynik w postaci stringa w postaci zero-jedynkowej np: 0100011011

Mi do głowy przychodzi tylko takie wykorzystanie pętli ale pewni wymiatacze twierdzą że moje rozwiązanie jest nieco lamerskie i o wiele prościej/bardziej profesionalnie będzie użyć funkcji implode/explode czy coś tam jeszcze ...kombinuję więc z tymi i innymi funkcjami od dni kilku i nici

Będe więc bardzo wdzięczny za pomoc w rozwiązaniu tego problemu
strife
Witam,

Sprawdź najpierw co zwraca cała tablica,
  1. <?php
  2. $array = $_POST['tablica'];
  3. echo '<pre>';
  4. print_r( $array );
  5. ?>

Jak widzisz klucze, które zostały puste nie istnieją. Można efekt, który chcesz uzyskać osiągnać poprzez:
  1. <?php
  2. $array = $_POST['tablica'];
  3. $string = implode( "", $array );
  4. echo $string;
  5. ?>

Jednakże, nie będziesz miał wartości zerowych, jednak je też możesz w łatwy sposób osiągnać, jednak musisz znać długość, całej tablicy. U Ciebie w tym skrypcie próbujesz to policzyć, ale ta wartość będzie wynosiła tyle ile danych checkbox'ów będzie zaznaczone, więc nic Ci po takiej informacji.

Przykład
  1. <form name="test" method="POST" action=""> 
  2. <input type="checkbox" name="tablica[0]" value="1"> Other 
  3. <input type="checkbox" name="tablica[1]" value="1"> Other 
  4. <input type="checkbox" name="tablica[2]" value="1"> Other 
  5. <input type="checkbox" name="tablica[3]" value="1"> Other 
  6. <input type="checkbox" name="tablica[4]" value="1"> Other 
  7. <input type="checkbox" name="tablica[5]" value="1"> Other 
  8. <input type="checkbox" name="tablica[6]" value="1"> Other 
  9. <input type="checkbox" name="tablica[7]" value="1"> Other 
  10. <input type="checkbox" name="tablica[8]" value="1"> Other 
  11. <input type="checkbox" name="tablica[9]" value="1"> Other 
  12. <input type="submit" name="submit" value="Wyslij"> 
  13. </form> 
  14.  
  15. <?php
  16. $array = $_POST['tablica'];
  17. $string = NULL;
  18. for( $i = 0; $i <= 9; $i++ ) {
  19. if( ! isset ( $array[ $i ] ) )
  20. $string .= 0;
  21. else
  22. $string .= $array[ $i ];
  23.  
  24. }
  25. echo $string;
  26. ?>


Pozdrawiam!
neverever
O to mi właśnie chodziło! thumbsupsmileyanim.gif
Dzięki serdeczne za pomoc...
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.