Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] tabela w pętli foreach
Forum PHP.pl > Forum > Przedszkole
Krismen
Witam, mam taki skrypt:

  1.  
  2. $tablica['owoce']=array('jabłka','gruszki','śliwki','banany');
  3. $tablica['warzywa']=array('seler','marchewka','pietruszka');
  4.  
  5. echo "<table>"; //tabela główna
  6.  
  7. foreach ($tablica as $kategorie => $wartosci)
  8. {
  9. echo "<tr><td><a href='?kategorie=$kategorie'> $kategorie </a><br></td></tr>";
  10.  
  11. foreach (array_values($wartosci) as $artykuly)
  12. {
  13.  
  14. if ($_GET['kategorie']==$kategorie)
  15. {
  16. echo "<table>"; // wstaw jedną tabelę
  17. echo "<tr><td> $artykuly </td></tr>"; //każdy artykuł w osobnej komórce tabeli
  18. echo "</table>"; //zakończ tabele
  19. }
  20. }
  21. }
  22.  
  23. echo "</table>";
  24.  


I teraz chcę żeby tabela która jest wewnątrz drugiej pętli foreach otwarła się tylko RAZ, później wyświetlenie wszystkich artykułów w osobnym wierszu (to jest ok) i zamknięcie tabeli też jeden RAZ. Podejrzewam, żę trzeba to zrobić warunkiem tylko nie wiem jakim... Ktoś pomoże ?
tehaha
najlepiej otwarcie i zamknięcie tabeli wyrzuć poza pętlą, ponadto nie musisz używać array_values($wartosci) może być samo $wartosci
zordon
  1. $tablica['owoce']=array('jabłka','gruszki','śliwki','banany');
  2. $tablica['warzywa']=array('seler','marchewka','pietruszka');
  3.  
  4. echo "<table>"; //tabela główna
  5.  
  6. foreach ($tablica as $kategorie => $wartosci)
  7. {
  8. echo "<tr><td><a href='?kategorie=$kategorie'> $kategorie </a><br></td></tr>";
  9.  
  10. echo "<table>"; // wstaw jedną tabelę
  11. foreach (array_values($wartosci) as $artykuly)
  12. {
  13.  
  14. if ($_GET['kategorie']==$kategorie)
  15. {
  16.  
  17. echo "<tr><td> $artykuly </td></tr>"; //każdy artykuł w osobnej komórce tabeli
  18.  
  19. }
  20.  
  21. }
  22. echo "</table>"; //zakończ tabele
  23. }
  24.  
  25. echo "</table>";
Krismen
Właśnie chodzi o to, że musi być w pętli bo poz pętlą już mam otwartą tabelę główną a chcę mieć dwie. Nie da się jakoś tego zrobić ? Jeśli chcemy żeby w pętli foreach coś zdarzyło się tylko raz to nie da się ?
tehaha
no da się, możesz alternatywnie użyć dodatkowej zmiennej $i, której nadasz wartość np $i=1; przed pętlą i wewnątrz pętli będą warunki dla $i == 1 , dasz otwarcie tabeli, a potem dla $i = count($wartość) zamknięcie, i przed końcem każdej pętli inkrementacja $i++; tylko rzecz w tym, że efekt będzie dokładnie ten sam co z wyciągnięciem otwarcia i zamknięcia przed pętle
Krismen
Akurat dałem taki przykład, ale głównie chodziło o wykonywanie warunków wewnątrz pętli foreach, no bo załóżmy że chcemy żeby pierwszy i ostatni index z tablicy był wyświetlony na czerwono albo coś ma się wydarzyć co 3 index. Będę próbował tak jak mi to opisałeś, dzięki.
Wicepsik
Cytat(Krismen @ 12.07.2010, 11:40:42 ) *
Akurat dałem taki przykład, ale głównie chodziło o wykonywanie warunków wewnątrz pętli foreach, no bo załóżmy że chcemy żeby pierwszy i ostatni index z tablicy był wyświetlony na czerwono albo coś ma się wydarzyć co 3 index. Będę próbował tak jak mi to opisałeś, dzięki.


  1. $tablica = array('cos1','cos2','cos3','cos4','cos5','cos6','cos7','cos8','cos9','cos10','cos11','cos12');
  2.  
  3. foreach(array_values($tablica) as $key=>$value){
  4. if( $key == 0 ){
  5. echo '<span style="color:orange;">Pierwszy element tablicy: '.$value.'</span><br/>';
  6. }
  7. else if( $key % 3 == 0 ){ //
  8. echo '<span style="color:red;">'.$value.'</span><br/>';
  9. }
  10. else if( $key == count($tablica)-1 ){
  11. echo '<span style="color:green;">Ostatni element tablicy: '.$value.'</span><br/>';
  12. }
  13. else
  14. echo $value.'<br/>';
  15. }
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.