Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] count() z warunkiem
Albert
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.05.2006

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


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.

Ten post edytował Albert 1.12.2007, 19:20:44
Go to the top of the page
+Quote Post
Darti
post
Post #2





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


  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. ?>
Go to the top of the page
+Quote Post
Albert
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.05.2006

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


Próbowałem w ten sposób jednak nic się nie dzieje.
Go to the top of the page
+Quote Post
Darti
post
Post #4





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


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. ?>
Go to the top of the page
+Quote Post
Albert
post
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.05.2006

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


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"...
Go to the top of the page
+Quote Post
shield
post
Post #6





Grupa: Zarejestrowani
Postów: 15
Pomógł: 2
Dołączył: 29.06.2005

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


daj

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


i wklej tutaj wynik, mysle ze bedzie latwiej pomoc
Go to the top of the page
+Quote Post
Albert
post
Post #7





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.05.2006

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


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
Go to the top of the page
+Quote Post
shield
post
Post #8





Grupa: Zarejestrowani
Postów: 15
Pomógł: 2
Dołączył: 29.06.2005

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


oks, pokaz jeszcze czesc formularza, w nim upatrywalbym bledu
Go to the top of the page
+Quote Post
Albert
post
Post #9





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.05.2006

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


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. ?>
Go to the top of the page
+Quote Post
shield
post
Post #10





Grupa: Zarejestrowani
Postów: 15
Pomógł: 2
Dołączył: 29.06.2005

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


przeslij juz wygenerowany kod w htmlu.
Go to the top of the page
+Quote Post
Albert
post
Post #11





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.05.2006

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


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ąć.

Ten post edytował Albert 4.12.2007, 16:19:28
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 26.12.2025 - 03:02