Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] wyświetlanie innego stylu co 2 wiersz
!*!
post
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  1. <?php
  2. while($row = mysql_fetch_array($result))
  3. {
  4. ++$i;
  5. $classs = ($i%2==1) ? "gj1" : "gj2";
  6. echo ''.$classs.'';
  7. echo ''.$classs.'';
  8. if ($row['email'] !== brak) {echo '<div class="'.$classs.'">Email: </div>';}
  9. if ($row['email5'] !== brak) {echo '<div class="'.$classs.'">Email5: </div>';}
  10. }
  11. ?>


Emm może mi ktoś wyjaśnić czemu zmienna $classs jest odczytywana tylko jako "gj1" ? gj1 i gj2 jest w pliku css, gdy wpisze je ręcznie wszytko działa.

Ten post edytował !*! 12.07.2008, 15:45:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
Maxik
post
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Chyba raczej $i++ zamiast ++$i
Go to the top of the page
+Quote Post
!*!
post
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


To akurat nie ma znaczenia, z tego co wyczytałem zalecane jest właśnie zrobienie ++$i. Tak czy inaczej, oba motywy nie działają...
Go to the top of the page
+Quote Post
l0ud
post
Post #4





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


To w końcu chcesz, aby divy z email i email5 miały inne klasy, czy te klasy mają się różnić dla poszczególnych par divów?
Go to the top of the page
+Quote Post
!*!
post
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Chciałbym aby divy z email i email5 miały inne klasy, jest to potrzebne to zmiennego pokolorowania wyświetlanych wyników.
Go to the top of the page
+Quote Post
kaem
post
Post #6





Grupa: Zarejestrowani
Postów: 248
Pomógł: 38
Dołączył: 29.06.2008

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


Ale na początek może daj cały kod albo wytłiumacz na jakiej zasadzie to ma działać. Bo tak patrząc na ten kawałek kodu nie wiadomo o co kaman. np w obu if'ach wykonujesz przypisanie dla divów tej samej klasy, bo u Ciebie w każdej iteracji pętli while masz tylko jedną zmienną definiująca klase czyli własnie $classs. A może ty chcesz, żeby co drugi wyświtlany rekord te divy miały inny kolor? ;>

Edit: Acha i ustaw przed pętlą while jakąś wartość zmiennej $i, np $i=-1;

Ten post edytował kaem 12.07.2008, 16:30:50
Go to the top of the page
+Quote Post
!*!
post
Post #7





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Nie zabardzo wiem po co Ci dały kod,

  1. <?php
  2. while($row = mysql_fetch_array($result))
  3. {
  4. ?>


odczytuje z bazy odpowiednie rekordy

  1. <?php
  2. ++$i;
  3. $classs = ($i%2==1) ? "gj1" : "gj2";
  4. ?>


przydziela zmiennej classs odpowiednią klasę z css, w tym wypadku gj1 lub gj2, i tak ma być co drugi div [czy cokolwiek innego] gdzie będzie dana klasa wyśiwtlana.

  1. <?php
  2. if ($row['email'] !== brak) {echo '<div class="'.$classs.'">Email: </div>';}
  3. if ($row['email5'] !== brak) {echo '<div class="'.$classs.'">Email5: </div>';}
  4. }
  5. ?>


wyświetla dane pobrane z bazy i jest ok, jedyne z czym mam problem to przedzielenie $classs do divów, tak aby zmieniał się co drugi...

czyli:

Kod
gj1
gj2
gj1
gj2
Go to the top of the page
+Quote Post
Maxik
post
Post #8





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


!== To operator sprawdzający też typ, daj !=
Go to the top of the page
+Quote Post
!*!
post
Post #9





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


ok, tylko co to ma do rzeczy?
Go to the top of the page
+Quote Post
kallosz
post
Post #10





Grupa: Zarejestrowani
Postów: 272
Pomógł: 19
Dołączył: 29.07.2006

Ostrzeżenie: (10%)
X----


  1. <?php
  2. if ($row['email'] !== brak) {echo '<div class="'.$classs.'">Email: </div>';}
  3. $i++
  4. if ($row['email5'] !== brak) {echo '<div class="'.$classs.'">Email5: </div>';}
  5. ?>
powinny być na przemian (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował kallosz 12.07.2008, 17:18:43
Go to the top of the page
+Quote Post
l0ud
post
Post #11





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Twój kod działa tak:

- pobierasz rekordy z bazy w pętli
- uzyskujesz zmienną $classs (tak swoją drogą dziwna nazwa (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) z wartością gj1 albo gj2
- zakładamy że oba rekordy nie są równe 'brak' (błąd w kodzie: brak musi być pomiędzy '' albo "") - wyświetlasz divy: z Email i Email5 mające tą samą klasę - bo przecież drukują się przy jednym wywołaniu pętli(!)
- przy kolejnym rekordzie z bazy również wyświetlasz te divy, z tym że z klasą gj2

Czy aby na pewno o to chodziło?
Go to the top of the page
+Quote Post
!*!
post
Post #12





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


kallosz - nic nie pomogło

l0ud :

- pobieram rekordy
- wyświetlam je w petli

Kod
if ($row['email'] !== brak)
jeśli email nie jest równy "brak" jest wyświetlane to co w echo... a w echo ma być przydzielona odpowiednia klasa do diva który wyświetla dane z pętli... Nie rozumiem Waszego nie rozumienia (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
l0ud
post
Post #13





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Czego nie rozumiem: w jednej pętli zakładasz, że może wyświetlić się albo nic (brak email albo email5), albo email, albo email5, albo te 2 emaile razem wzięte. No i w jaki sposób chcesz do tego dobrać klasy?
Go to the top of the page
+Quote Post
scanner
post
Post #14





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Cytat(!*! @ 12.07.2008, 18:41:08 ) *
Kod
if ($row['email'] !== brak)
jeśli email nie jest równy "brak" jest wyświetlane to co w echo... a w echo ma być przydzielona odpowiednia klasa do diva który wyświetla dane z pętli... Nie rozumiem Waszego nie rozumienia (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)


Zacznijmy od tego, że powiedz, czy masz ustawioną stałą o nazwie brak?
Jak nie, to albo ją ustaw, albo wyraz brak wsadź w cudzysłów.

Druga sprawa - jeżeli inkrementujesz/dekrementujesz jakąś zmienną, to najpierw ją zadeklaruj.

Trzecia: machnąłem kod testowy:
  1. <?php
  2. $aRow[] = array( 'email' => 'brak', 'email5' => 'foo@bar' );
  3. $aRow[] = array( 'email' => 'brak', 'email5' => 'foo@bar' );
  4. $aRow[] = array( 'email' => 'brak', 'email5' => 'foo@bar' );
  5. $aRow[] = array( 'email' => 'nie brak', 'email5' => 'brak' );
  6. $aRow[] = array( 'email' => 'brak', 'email5' => 'foo@bar' );
  7. $aRow[] = array( 'email' => 'nie brak', 'email5' => 'brak' );
  8. $aRow[] = array( 'email' => 'brak', 'email5' => 'foo@bar' );
  9.  
  10.  
  11.  
  12. $bClass = true;
  13. foreach( $aRow as $row ){
  14. $sClass = ( $bClass ) ? 'gj1' : 'gj2';
  15. $bClass = !$bClass;
  16. if( $row['email'] !== 'brak' ){
  17. echo '<div class="'.$sClass.'">Email: </div>';
  18. }
  19. if( $row['email5'] !== 'brak' ){
  20. echo '<div class="'.$sClass.'">Email5: </div>';
  21. }
  22. }
  23. ?>


wynik:
  1. <div class="gj1">Email5: </div><div class="gj2">Email5: </div><div class="gj1">Email5: </div><div class="gj2">Email: </div><div class="gj1">Email5: </div><div class="gj2">Email: </div><div class="gj1">Email5: </div>
Go to the top of the page
+Quote Post
!*!
post
Post #15





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  1. <?php
  2. while($row = mysql_fetch_array($result))
  3. {
  4. ++$i;
  5. $classs = ($i%2==1) ? "gj1" : "gj2";
  6.  
  7. if ($row['email'] !== 'brak') {echo '<div class="'.$classs.'">Email: '.$row['email'].' </div>';}
  8. if ($row['telefon'] !== 'brak') {echo '<div class="'.$classs.'">Telefon: '.$row['telefon'].' </div>';}
  9. }
  10. ?>


To skoro tak odczytuje w pętli normalnie dane z bazy, na zasadzie:

jeśli email zwraca brak to się nie wyświetli to co w echo, normalne... i przechodzi do następnego i sprawdza czy telefon to nie "brak" jeśli coś innego to zostaje wyświetlone... [tak wiem, o pozamienianiu 'brak' na '0' ale to nie o tym temat] Jeśli zrobiłbym tak:

  1. <?php
  2. while($row = mysql_fetch_array($result))
  3. {
  4. ++$i;
  5. $classs = ($i%2==1) ? "gj1" : "gj2";
  6.  
  7. echo '<div class="'.$classs.'">Email: '.$row['email'].' </div>'
  8. echo '<div class="'.$classs.'">Telefon: '.$row['telefon'].' </div>'
  9. }
  10. ?>


to działa wszytko dobrze i divy są kolorowane na przemian, odpowiednio przydzierlany class... ale co mi po tym jak nie chcę wyświetlać każdego rekordu jaki jest?
Go to the top of the page
+Quote Post
l0ud
post
Post #16





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Możesz zrobić to tak:

  1. <?php
  2. while($row = mysql_fetch_array($result))
  3. {
  4. if ($row['email'] !== 'brak') {
  5. ++$i;
  6. $classs = ($i%2==1) ? "gj1" : "gj2";
  7. echo '<div class="'.$classs.'">Email: '.$row['email'].' </div>';
  8. }
  9. if ($row['telefon'] !== 'brak') {
  10. ++$i;
  11. $classs = ($i%2==1) ? "gj1" : "gj2";
  12. echo '<div class="'.$classs.'">Telefon: '.$row['telefon'].' </div>';
  13. }
  14. }
  15. ?>


Ten post edytował l0ud 12.07.2008, 18:55:14
Go to the top of the page
+Quote Post
!*!
post
Post #17





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


l0ud - dzięki, działa, tylko... nadal nie rozumiem czemu $i i $class muszą być w każdym if... żeby potem przydzielić się do div... muszę pomyśleć nad optymalizacją tego bo mam wrażenie że nie robię tego dobrze...
Go to the top of the page
+Quote Post
l0ud
post
Post #18





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Pomyśl logicznie: za każdym razem przed wyświetleniem diva potrzebujesz 'unikalnej' klasy. Samo umieszczenie kodu jej generującego w pętli nie wystarczy - może być przecież wyświetlonych w niej kilka pól. Dlatego umieściłem 'regenerowanie' $class wtedy, gdy jest ona potrzebna - przez wyświetleniem diva.
Go to the top of the page
+Quote Post
dyniaq
post
Post #19





Grupa: Zarejestrowani
Postów: 34
Pomógł: 4
Dołączył: 31.07.2006
Skąd: Oława

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


Jeżeli kolorek ma się zmieniać na przemian, to może wystarczy tylko sprawdzić, czy zmienna, której używasz do iteracji wszystkich wyników, jest podzielna przez 2 (parzysta), czy nie. I jeżeli mod($i,2) = 0 to wtedy $class = 'gj1'. Jeżeli nie to gj2.
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: 23.08.2025 - 14:11