Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML][CSS]Funkcja wyświetla tekst poza pętlą.
Forum PHP.pl > Forum > Przedszkole
publius
Witam.
Mam taki dziwny przypadek...

Mam prostą funkcję:

  1. <?php
  2. function check($nick) {
  3. $ufoList = array('nick1','nick2');
  4. if(in_array($nick, $ufoList)){echo 'class="klasa"';}
  5. }
  6. ?>


A tutaj pętlę:

  1. <?php
  2. for ($i = 1; $i <= 100; $i++):
  3.  
  4. if($bch[$bch_key] > $pch[$pch_key]):
  5. echo '<tr>
  6.    <td scope="row">'.$i.'</td>
  7.    <td>'.$bch_nicks[$bch_key].'</a></td>
  8.   <td'.check($bch_nicks[$bch_key]).'>'.$bch_eq[$bch_key].'</td>
  9.  </tr>';
  10. $bch_key++;
  11.  
  12. endif;
  13. endfor;
  14. ?>


O co chodzi:
Pętla wyświetla wiersze, a jeśli w wierszu wystąpi np. nick2 lub nick1 to ma wyświetlić:
  1. <td class="klasa">

Proste.

Sęk w tym, że pętla sobie wyświetla po kolei wiersze jak trzeba, a jak już trafia na nick, to wyświetla go nie tam gdzie ja oznaczyłem, tylko całkiem poza pętlą, gdzieś nad tabelą.
Nic z tego nie kumam, kombinowałem na kilka sposobów i ciągle to samo...

Jakieś wskazówki?
webdevil
  1. <?php
  2. function check($nick) {
  3. $ufoList = array('nick1','nick2');
  4. if(in_array($nick, $ufoList)){return 'class="klasa"';}
  5. return '';
  6. }
  7. ?>
ddiceman
Brakuje Ci spacji i w rezultacie dostajesz zlepek
Kod
<tdclass="klasa">

zamiast
Kod
<td class="klasa">

Wystarczy:
  1. <?php
  2. function check($nick) {
  3. $ufoList = array('nick1','nick2');
  4. if(in_array($nick, $ufoList)){echo ' class="klasa"';} //tu jest dodana spacja przed 'class'
  5. }
  6. ?>
publius
Dzięki za wskazówkę, ale nie chodzi o spację. Popełniłem tutaj literówkę i w skrypcie spacja jest.
Chodzi o coś innego. Po tym jak warunek jest spełniony, "class..." jest wyświetlane nie w znaczniku TD, ale całkowicie przed tabelą, przed znacznikiem <table>. WTF? smile.gif
ddiceman
Pokaz swoj kod a nie kod podobny - jak mamy sie domyslec, czemu tak jest?
webdevil
Napisałem Ci wcześniej dobrą wersje funkcji check przecież..

Chodzi o to, że łącząc stringi masz:

  1. <?php
  2. echo '...<td'.check($bch_nicks[$bch_key]).'>...';
  3. ?>


a funkcja check wypisuje na ekran zamiast zwracać tekst 'class...'
ona się wykona jako pierwsza (przed wypisaniem na ekran tabeli) i wyjdzie Ci 'class...' przed całą tabelą
użyj tej funkcji którą Ci podałem wcześniej z return zamiast echo i wszystko będzie dobrze.
erix
Proszę o uzupełnienie tematu zgodnie z zasadami publikowania w Przedszkolu.
publius
Cytat(ddiceman @ 11.02.2009, 03:20:11 ) *
Pokaz swoj kod a nie kod podobny - jak mamy sie domyslec, czemu tak jest?

Nie było takiej potrzeby. Wpisałem wszystko, co było ważne smile.gif Ale dzięki za czas.

Cytat(webdevil @ 11.02.2009, 03:27:52 ) *
Napisałem Ci wcześniej dobrą wersje funkcji check przecież..
[ciach]

Dzięki! Racja... mój błąd, faktycznie powinienem użyć return... sciana.gif Bardzo dziękuję smile.gif

Cytat(erix @ 11.02.2009, 20:12:33 ) *
Proszę o uzupełnienie tematu zgodnie z zasadami publikowania w Przedszkolu.

Poprawiłem, przepraszam - zapomniało mi się winksmiley.jpg Zawsze wstawiam...

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.