Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Puste miejsca jako brak
Chelo
post
Post #1





Grupa: Zarejestrowani
Postów: 178
Pomógł: 8
Dołączył: 19.03.2007

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


Witam wszystkich.

  1. $i1 = 0;
  2. while($row = $db->sql_fetchrow($restult)) {
  3. $i1++;
  4. $template->assign_block_vars('tvip', array(
  5. "L_NICK" => $row['nickn'],
  6. "L_POST" => $row['postsn'],
  7. "L_HREF" => $row['iduser'],
  8. "L_NUM" => $i1
  9. ));
  10. }
  11.  
  12. for($y=$i1; $y<=9; $y++) {
  13. $i1++;
  14. $template->assign_block_vars('tvip', array(
  15. "L_NICK" => "brak",
  16. "L_POST" => "brak",
  17. "L_HREF" => "brak",
  18. "L_NUM" => $i1
  19. ));
  20. }


Kod wyciąga z bazy danych userów, z największą ilością postów, jest ich max 10, jeżeli w bazie są tylko 4 rekordy, to w pozostałych 6 będzie pisało brak. Teraz jak mogę usunąć funkcję for i wpleść ten kod w while, aby kodu nie dublować?

Próbowałem z innym kodem, ale nie za bardzo mi wychodzi:

  1. $i2 = 0;
  2. while($row1 = $db->sql_fetchrow($result1)) {
  3. $i2++;
  4. $liczba2 = $row1['liczba2'];
  5. echo $liczba2;
  6. $liczba3 = $liczba2 + 10;
  7. if($i2<=$liczba3) {
  8.  
  9. $template->assign_block_vars('t1vip', array(
  10. "L_NICK1" => $row1['nickk'],
  11. "L_POST1" => $row1['total1'],
  12. "L_HREF1" => $row1['iduser1'],
  13. "L_NUM1" => $i2
  14. ));
  15. }
  16. if($i2==$liczba2) {
  17.  
  18. $template->assign_block_vars('t1vip', array(
  19. "L_NICK1" => "brak",
  20. "L_POST1" => "brak",
  21. "L_HREF1" => "brak",
  22. "L_NUM1" => $i2
  23. ));
  24. }
  25. }


proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
qrzysztof
post
Post #2





Grupa: Zarejestrowani
Postów: 220
Pomógł: 19
Dołączył: 25.04.2009

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


  1. $i1 = 0;
  2. while($row = $db->sql_fetchrow($restult) || $il<10) {
  3. $i1++;


Pokombinowałbym coś w tym kierunku. Wtedy pętla będzie się wykonywała zawsze 10 razy

A potem już tylko:

"L_NICK" = ($row['nickn']) ? $row['nickn']:'brak';

lub jakoś podobnie.



--------------------
Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
Go to the top of the page
+Quote Post
Chelo
post
Post #3





Grupa: Zarejestrowani
Postów: 178
Pomógł: 8
Dołączył: 19.03.2007

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


Jeżeli daje taki warunek:

  1. while($row1 = $db->sql_fetchrow($result1) || $i2<=10)


to nic nie wyświetla.
Go to the top of the page
+Quote Post
qrzysztof
post
Post #4





Grupa: Zarejestrowani
Postów: 220
Pomógł: 19
Dołączył: 25.04.2009

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


Gdzie nic nie wyświetla?

Masz w tej pętli, tak jak pisałem, sprawdzać czy $row['costam'] ma wartość. Jeśli ma przypisywać ją do swojej zmiennej "COSTAM" a jeśli nie to przypisywać do tejże zmiennej 'brak'.

  1. "L_NICK" = ($row['nickn']) ? $row['nickn']:'brak';


Można tak, można inaczej. Ważne, że wiadomo o co chodzi. Kod będziesz już musiał sam sobie napisać.


--------------------
Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
Go to the top of the page
+Quote Post
Chelo
post
Post #5





Grupa: Zarejestrowani
Postów: 178
Pomógł: 8
Dołączył: 19.03.2007

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


Mam wszystko gotowe, chodzi o to, że gdy dopisuje || $i2<=10 czyli jest:
  1. while($row1 = $db->sql_fetchrow($result1) || $i2<=10)


To dane które mają się wyświetlić to znikają, po prostu ich nie ma, a gdy usunę || $i2<=10 to się pojawiają, tak więc co może być nie tak?
Go to the top of the page
+Quote Post
qrzysztof
post
Post #6





Grupa: Zarejestrowani
Postów: 220
Pomógł: 19
Dołączył: 25.04.2009

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


Jak masz gotowe to wrzuć, bo przecież nikt nie będzie zgadywał co się stało.

Ten post edytował qrzysztof 23.02.2010, 16:38:33


--------------------
Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
Go to the top of the page
+Quote Post
Chelo
post
Post #7





Grupa: Zarejestrowani
Postów: 178
Pomógł: 8
Dołączył: 19.03.2007

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


Raczej nie twoja literówka, ponieważ dostosowałem to pod moje zmienne tak więc:

  1. $i2 = 0;
  2. while($row1 = $db->sql_fetchrow($result1) || $i2<=10) {
  3. $i2++;
  4. $liczba2 = $row1['liczba1'];
  5.  
  6. $template->assign_block_vars('t1vip', array(
  7. "L_NICK1" => $row1['nickk'],
  8. "L_POST1" => $row1['total1'],
  9. "L_HREF1" => $row1['iduser1'],
  10. "L_NUM1" => $i2
  11. ));
  12.  
  13.  
  14. }



gdy usunę || $i2<=10, dane będą widoczne. Dodam, dane znikną


co jest nie tak?

Go to the top of the page
+Quote Post
qrzysztof
post
Post #8





Grupa: Zarejestrowani
Postów: 220
Pomógł: 19
Dołączył: 25.04.2009

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


Nie zmodyfikowałeś tej pętli tak, żeby sprawdzana była wartość $row.

Plus, dla bezpieczeństwa może ująć warunki w nawiasy:

  1. while(($row1 = $db->sql_fetchrow($result1)) || ($i2<=10))


Ten post edytował qrzysztof 23.02.2010, 16:44:32


--------------------
Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 10:22