Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] count() z warunkiem
Forum PHP.pl > Forum > Przedszkole
Albert
Witam,

Mam formularz z kilkoma polami typu radio, których wartości wynoszą "T" albo "N". Przekazuje je metodą POST, a wartości odczytuje poprzez taką pętlę:


  1. <?php
  2. for($i=0; $i<count($_POST["odp"]); $i++) {
  3.  
  4. echo $_POST["odp"][$i]."<br />";
  5.  
  6. }
  7. ?>



Wszystko do tej pory działa, tylko nie wiem jakiej funkcji użyć, aby policzyć ilość elementów tej tablicy, ale po podaniu konkretnego warunku, czyli np. liczenie elementów z wartością "T". Funkcja count() zlicza wszystkie elementy tablicy, więc to odpada. Jakieś sugestie? Z góry dziękuję za pomoc.

edit: wiele tematów nie zawiera w tytule odpowiedniego znacznika tematycznego, a mimo to nie jest zamykanych.
Darti
  1. <?php
  2. for($i=0; $i<count($_POST["odp"]); $i++) {
  3.  
  4. if($_POST["odp"][$i] == 'TAK'){
  5. $tak++;
  6. } else {
  7. $nie++;
  8. }
  9.  
  10. echo $_POST["odp"][$i]."<br />";
  11.  
  12. }
  13. ?>
Albert
Próbowałem w ten sposób jednak nic się nie dzieje.
Darti
OMG ...

  1. <?php
  2. for($i=0; $i<count($_POST["odp"]); $i++) {
  3.  
  4. if($_POST["odp"][$i] == 'T'){
  5. $tak++;
  6. } else {
  7. $nie++;
  8. }
  9. echo $_POST["odp"][$i]."<br />";
  10. }
  11.  
  12. echo 'ilosc TAK: '. $tak;
  13. echo '<br>';
  14. echo 'ilosc NIE: '. $nie;
  15. ?>
Albert
Rzeczywiście...OMG...Napisałem, że już tak próbowałem. Pierwszy warunek jest nieprawdziwy, więc wykonuje się co to jest w else, więc za każdym razem dodaje do "nie"...
shield
daj

  1. <?php
  2. echo "<pre>";
  3. print_r($_POST);
  4. echo "</pre>";
  5. ?>


i wklej tutaj wynik, mysle ze bedzie latwiej pomoc
Albert
Mam trzy pytania i w każdym zaznaczyłem poprawną odpowiedź. Oto efekt:


Kod
Array
(
    [1] => Array
        (
            [0] => T Array
        (
            [0] => T Array
        (
            [0] => T

Array
(
    [1] => Array
        (
            [0] => T Array
        (
            [0] => T Array
        (
            [0] => T

Array
(
    [1] => Array
        (
            [0] => T Array
        (
            [0] => T Array
        (
            [0] => T
shield
oks, pokaz jeszcze czesc formularza, w nim upatrywalbym bledu
Albert
Zapomniałem wcześniej dodać, że zmieniłem trochę kod.

Tu jest pole radio formularza. Tablica $all[nr] to nr odpowiedzi w bazie danych, a $all[dobra] to poprawność odpowiedzi.
Kod
<input type=radio name=$all[nr][] value=$all[dobra]


W związku z tym pętla wygląda tak:

  1. <?php
  2. $int = 1;
  3.  
  4. for($i=0; $i<count($_POST[$int]); $i++) {
  5.  
  6. while ($int <= 3){
  7.  
  8. echo $_POST[$int][$i]. "<br />";
  9.  
  10. $int++;
  11.  
  12. }
  13. }
  14. ?>
shield
przeslij juz wygenerowany kod w htmlu.
Albert
Przy zaznaczeniu trzech poprawnych odpowiedzi pętla generuje taki kod:

Kod
T
T
T


Natomiast przy zastosowaniu tego:

  1. <?php
  2. echo "<pre>";
  3. print_r($_POST);
  4. echo "</pre>";
  5. ?>


Wyświetla to co już wcześniej napisałem. Już nie wiem co tu jest nie tak...

edit: Poradziłem sobie, można zamknąć.
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.