Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]wyświetlenie wyniku działania funkcji klasy
Forum PHP.pl > Forum > Przedszkole
user767

1. Jak wypisać foreach tablicę

  1. $rows[] = array(
  2. 'id' => $row['id'],
  3. 'nazwa' => $row['nazwa'],
  4. 'tresc' => $row['tresc'],
  5. 'id_zlecenia' => $row['id_zlecenia'],
  6. 'data_dod' => $row['data_dod'],
  7. 'kiedy' => $row['kiedy'],
  8. 'licznik' => $row['licznik']);
  9.  


2. Druga sprawa przy w klasie dla formularzy używać CSS dla każdego elementu generowanego klasą, czy lepiej dla całej rodziny, przykładowo lepiej okreslić inputy w input, czy nazywać input.numer1 ?

Dzięki
Adi32
Bez sensu, przecież tablica ma właśnie taki format... Albo ja czegoś nie rozumiem.

Edit: jeżeli chodzi Ci tylko o wyświetlenie to zrób tak:

  1. echo '<pre>';
  2. print_r($tablica);
  3. echo '</pre>';
kefirek
Cytat(user767 @ 1.07.2011, 19:47:15 ) *
1. Jak wypisać foreach tablicę

  1. $rows[] = array(
  2. 'id' => $row['id'],
  3. 'nazwa' => $row['nazwa'],
  4. 'tresc' => $row['tresc'],
  5. 'id_zlecenia' => $row['id_zlecenia'],
  6. 'data_dod' => $row['data_dod'],
  7. 'kiedy' => $row['kiedy'],
  8. 'licznik' => $row['licznik']);
  9.  


  1. $rows[] = array(
  2. 'id' => $row['id'],
  3. 'nazwa' => $row['nazwa'],
  4. 'tresc' => $row['tresc'],
  5. 'id_zlecenia' => $row['id_zlecenia'],
  6. 'data_dod' => $row['data_dod'],
  7. 'kiedy' => $row['kiedy'],
  8. 'licznik' => $row['licznik']);
  9.  
  10. foreach($rows AS $value){
  11. echo $value['id'].' '.$value['nazwa'].'</br>';
  12. }
user767
Po wykonaniu zapytania przez klasę do mojej zmiennej $tabliczka, która ma wiadomą postać dostały się zmienne. Teraz chce je wypisać jedno pod drugim z przełamaniem linii. Mam tylko do dyspozycji tą tablicę $tabliczka.

  1.  
  2. foreach($tabliczka AS $value){
  3. echo $value['id'].' -- '.$value['nazwa'].'</br>';
  4. }


nie chodzi a

  1. //print_r($tabliczka);


wyświetla wartości.
Adi32
  1. foreach ($tabliczka as $element)
  2. {
  3. echo $element.'<br />';
  4. }


O to chodzi? Czy znowu źle zrozumiałem...

Ewentualnie pokaż jeszcze tą tablicę, tam chyba był więcej niż jeden wymiar?

  1. foreach ($tabliczka as $element)
  2. {
  3. foreach ($element as $val)
  4. {
  5. echo $val.'<br />';
  6. }
  7. }
user767
foreach w foreach
Adi32
masz rekurencyjną bo nie wiem ile tych wymiarów. Nie sprawdzałem

  1. function foreachh($foreach)
  2. {
  3. global $foreach;
  4. foreach ($foreach as $val)
  5. {
  6. if (is_array($val)){
  7. foreachh($val);
  8. } else {
  9. $return .= $val . '<br />';
  10. }
  11. }
  12. return $return;
  13. }
  14.  
  15. echo foreachh($tabliczka)
user767
Adi
  1. Warning: Invalid argument supplied for foreach() in C:\Program Files\VertrigoServ\www\workflow\test\3.php on line 150
  2.  
  3. Notice: Undefined variable: return in C:\Program Files\VertrigoServ\www\workflow\test\3.php on line 158


czyli foreach ($foreach as $val) i return.

Cały problem rozwiązał Adi powyżej, gdzie potrzebna była jeszcze jedna pętla foreach.
Adi32


  1. function foreachh($foreach)
  2. {
  3. global $return;
  4. foreach ($foreach as $val)
  5. {
  6. if (is_array($val)){
  7. foreachh($val);
  8. } else {
  9. $return .= $val . '<br />';
  10. }
  11. }
  12. return $return;
  13. }
  14.  
  15. echo foreachh($tabliczka)


Drobna pomyłka

Ta funkcja otworzy Ci nieskończoną ilość wymiarów czyli tyle foreachów w foreachach ile wymiarów tablicy;
user767
2. Druga sprawa przy w klasie dla formularzy używać CSS dla każdego elementu generowanego klasą, czy lepiej dla całej rodziny, przykładowo lepiej okreslić inputy w input, czy nazywać input.numer1 ?
Adi32
Cytat(user767 @ 1.07.2011, 21:07:49 ) *
2. Druga sprawa przy w klasie dla formularzy używać CSS dla każdego elementu generowanego klasą, czy lepiej dla całej rodziny, przykładowo lepiej okreslić inputy w input, czy nazywać input.numer1 ?


Szczerze mówiąc to nie rozumiem o co chodzi. Mógłbyś jaśniej?
user767
czy pisząc klasę dla formularzy pisać input{}, czy input.nazwa{}, jak jest łatwiej ?
i czy idzie powyższy przykład trochę sformatować html-em ? jak to napisać żeby mieć to sformatowane a nie jeden pod drugim?
by_ikar
Najlepiej uniwersalnie dla wszystkich, a jak będziesz potrzebować aby jeden czy kilka inputów było inne, możesz dodać jeszcze jedną klasę. Np:

Kod
<input class="klasa1 klasa2 klasa3">


i tak dalej. Jeżeli masz zamiar coś stosować w więcej niż jednym elemencie, zawsze używaj klasy selektorów, dla jednego elementu używaj identyfikatora.

Zależy jeszcze do czego chcesz te dane wyświetlić, bo jeżeli wyświetlić jako element strony, no to foreach i zagnieżdżaj, jeżeli po to żeby sprawdzić co ci wyjdzie, do testowania, to najlepiej var_dump lub print_r osadzone w <pre>.
user767
foreach jest jak zagnieździć nie wiem:)
normalnie w strukturze było to while i row z elementem, a tu nie wiem

  1. for($i=1; !empty($tabliczka[$i-1]); $i++){
  2. echo "Klucz ";
  3. echo $i-1;
  4. echo " ma wartosc: ".$tabliczka[$i-1]."</br>";
  5. }
  6.  


zwraca
Klucz 0 ma wartosc: Array
Klucz 1 ma wartosc: Array
Klucz 2 ma wartosc: Array
Klucz 3 ma wartosc: Array

jak dobrać się tu do el tablicy, żeby je zagnieździć ? Nie pytam o gotowca ale sposób smile.gif
by_ikar
Zagnieżdzene, czyli pętla w pętli. Jeżeli masz tablice wielowymiarową, to kiedy chcesz wyświetlić dane z jakiegoś klucza, powiedzmy $arr['jakis_klucz'] to wówczas dostaniesz tablice, żeby jeszcze głębiej się dokopać musisz podać klucz z kolejnej tablicy czyli $arr['jakis_klucz']['jakis_klucz_2_tablicy'] wtedy dostaniesz wynik z drugiej tablicy. A w pętli robisz to tak jak koledzy wyżej pokazali, pętla w pętli i wyświetlasz. Dokładnie masz w tym poście tutaj to przedstawione: http://forum.php.pl/index.php?showtopic=17...st&p=878188
user767
  1. echo $tabliczka[3]['nazwa'];
tylko takie coś mi zadziałało

oraz

  1. for($i=0;$i < $ile;$i++){
  2. print $tabliczka[$i]['nazwa'].' - '.$tabliczka[$i]['opis'];
  3. }


zmienna $ile to mysql_num_rows
by_ikar
Musisz zrozumieć zasadę działania pętli foreach, bo widzę średnio ci to wychodzi i próbujesz coś kobinować z jedną pętlą. Żeby wyświetlić tablice wielowymiarową (tablica w tablicy) musisz zrobić to tak jak ty wyżej to zrobiłeś, albo umieścić pętle w pętli. Nie ważne w sumie jaką pętlę, może być to for, może być foreach lub while.

Kod
$tablica = array(1, 2, 3, 4, 5, 6);

foreach($tablica as $klucz => $wartosc)
{
  echo $klucz.' - '.$wartosc.'<br>';
}


zmienna $klucz przechowuje klucz aktualnego elementu tablicy, a zmienna $wartość przetrzymuje jego wartość. Jeżeli przypiszesz do klucza nie jakąś zwykłą wartość, tylko tablice, wówczas w zmiennej $wartość przechowujesz całą tablice a jak masz już całą tablice, to powyższą pętlę możesz powtórzyć jeszcze raz, czyli umieścić pętlę w pętli:

Kod
$tablica = array(
  1 => array(
    'klucz1' => 'wartosc1'
  ),
  2 => array(
    'klucz2' => 'wartosc2'
  ),
  3 => array(
    'klucz3' => 'wartosc3'
  ),
  4 => array(
    'klucz4' => 'wartosc4'
  ),
  5 => array(
    'klucz5' => 'wartosc5'
  ),
  6 => array(
    'klucz6' => 'wartosc6'
  ));

foreach($tablica as $klucz => $wartosc)
{
  echo $klucz.': <br> ';
  //w tym momencie jeżeli wyświetlisz zmienną $wartosc, to otrzymasz wartość tej zmiennej, czyli tablice i wyświetli ci się nie cała tablica, a słowo Array.
  //skoro wiesz że to tablica to wrzucasz zmienną $wartosc w jeszcze jedną tablicę
  
  foreach($wartosc as $key => $val)
  {
    echo $key.' - '.$val.'<br>';
  }
}


Otrzymać powinieneś coś takiego:

Kod
1:
klucz1 - wartosc1
2:
klucz2 - wartosc2
3:
klucz3 - wartosc3
4:
klucz4 - wartosc4
5:
klucz5 - wartosc5
6:
klucz6 - wartosc6


1-6 są kluczami pierwszej tablicy klucz1-klucz6 są kluczami 2 tablicy. Nie wiem czemu tego nie rozumiesz ale jest to jedna z prostszych rzeczy w chyba większości językach programowania wink.gif
user767
nie zauważyłem tablicy w tablicy w wypisie smile.gif
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.