Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jeśli * to wyświetli |
Booster
post 19.12.2013, 09:44:10
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 24.06.2013
Skąd: Lublin

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


Witam, posiadam taki kod (jak niżej) potrzebuję dodać do niego jeszcze że jeśli będą kategorie z tej drugiej pętli to między nimi nie będzie przecinka tylko |

  1. <?php
  2. $categories = explode(', ',$categories);
  3. $i=1;
  4. echo '<div class="categories-div">';
  5. foreach($categories as $cat) {
  6. if(strpos($cat, 'KRAJ') >0 || strpos($cat , 'ŚWIAT') > 0 || strpos($cat , 'GOSPODARKA') > 0 || strpos($cat , 'SPOŁECZEŃSTWO') > 0 || strpos($cat , 'KULTURA') > 0 || strpos($cat , 'HISTORIA') > 0 || strpos($cat , 'FILOZOFIA') > 0 )
  7. {if($i>1)
  8. echo ' , ';
  9. echo $cat;
  10. $i++;
  11. }
  12. else
  13. {
  14.  
  15. }
  16. }
  17.  
  18. ?>
  19. ---->>> TUTAJ znaczek " | " <<<-------
  20. <?php
  21.  
  22. foreach ($categories as $cat) {
  23. if(strpos($cat , 'ANALIZA') > 0 || strpos($cat , 'ESEJ') > 0 || strpos($cat , 'ARTYKUŁ') > 0 || strpos($cat , 'FELIETON') > 0 || strpos($cat , 'POLEMIKA') > 0 || strpos($cat , 'RECENZJA') > 0 || strpos($cat , 'WYWIAD') > 0)
  24. {if($i>1)
  25. echo ' , ';
  26. echo $cat;
  27. $i++;
  28. }
  29. else {}
  30. }
  31. ?>
Go to the top of the page
+Quote Post
Turson
post 19.12.2013, 09:59:07
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. echo ' , ';

na
  1. echo ' | ';


questionmark.gif
Go to the top of the page
+Quote Post
--Booster--
post 30.12.2013, 08:53:15
Post #3





Goście







Niestety nie chodzi o to, ponieważ gdy to zamienię w drugiej pętli będą zamiast przecinków -> | , a ja potrzebuję tu i tu przecinków ale jeśli w drugiej pętli coś znajdzie to żeby wyświetlało przed nią ten znak | czyli

A, B, C | D, E, F
Go to the top of the page
+Quote Post
bostaf
post 30.12.2013, 10:03:06
Post #4





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

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


Po części sam już sobie odpowiedziałeś na to pytanie:
Cytat(Booster @ 19.12.2013, 09:44:10 ) *
jeśli będą kategorie z tej drugiej pętli

Problem jest taki, że chcemy zrobić coś (wyświetlić znak) pod warunkiem zajścia zdarzenia, które nastąpi w przyszłości (druga pętla foreach). Tego nie da się zrobić w locie, bo nie jesteśmy w stanie przewidzieć wyniku zdarzenia, które jeszcze nie nastąpiło. Skoro nie w locie, to trzeba najpierw sprawdzić oba warunki, wstępnie przygotować dane i dopiero wyświetlić wynik.
Wyrzuć z obu pętli instrukcje drukowania (echo) i zastąp je przypisaniem do innej zmiennej, np. $kategorie_1 i $kategorie_2. A konkretnie, zamiast
  1. echo ' , ';
  2. echo $cat;

daj
  1. $kategorie_1 .= ' , ';
  2. $kategorie_1 .= $cat;

W drugiej pętli analogicznie z $kategorie_2. No i wcześniej oczywiście zainicjuj te nowe zmienne jako puste łańcuchy ($kategorie_1 = $kategorie_2 = '').
Teraz, po wykonaniu obu pętli sprawdź, czy obie są niepuste, i jeśli tak to wyświetl je wstawiając pomiędzy znak "|":
  1. echo $kategorie_1;
  2. if ($kategorie_1 != '' AND $kategorie_2 != '') echo ' | ';
  3. // albo if ( ! empty($kategorie_1) AND ! empty($kategorie_2)) echo ' | ';
  4. echo $kategorie_2;


Jeszcze taka sugestia: zamiast tych długich instrukcji warunkowych sprawdzających obecność danych kategorii spróbuj wykorzystać funkcję in_array, definiując wcześniej dwie tablice z grupami kategorii. Wtedy całą listę warunków będziesz mógł zastąpić prostym:
  1. $pierwsza_grupa_kategorii = array('KRAJ', 'ŚWIAT', 'GOSPODARKA', 'SPOŁECZEŃSTWO', 'KULTURA', 'HISTORIA', 'FILOZOFIA');
  2. // ...
  3. foreach($categories as $cat) {
  4. if (in_array($cat, $pierwsza_grupa_kategorii) {
  5. // ...
  6. }
  7. }

... a grupami kategorii będziesz mógł elastycznie zarządzać z poziomu tych dodatkowych tablic, a nawet elegancko te tablice definiować z bazy danych.
Go to the top of the page
+Quote Post
mar1aczi
post 30.12.2013, 10:03:49
Post #5





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

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


W linię 16 wstaw:
  1. $tmp = $i;

i dalej w linię 25:
  1. if($i == $tmp) echo " | ";


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
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 Wersja Lo-Fi Aktualny czas: 13.06.2025 - 04:34