Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] - Jeden warunek, ale dwie instrukcje
Forum PHP.pl > Forum > Przedszkole
dadi
Witam smile.gif

Rozpocznę od małego wprowadzenia, aby łatwiej było się Wam wczuć. Od jakiegoś czasu zabieram się za programowanie stron WWW. Strony zazwyczaj opierałem o Wordpressa, z którego kopiowałem jedynie system newsów i panele smile.gif Zazwyczaj newsy robiłem pionowo, więc dlaczego teraz nie zrobić strony o poziomym systemie newsów? (Chodzi o to: https://fbcdn-sphotos-f-a.akamaihd.net/hpho...992973850_o.jpg ). W czystym HTMLu nie był to problem. Stworzyłem diva, w którym umieściłem 3 divy z wyrównaniem do lewej i wszystko grało jak należy tak jak sobie wyobrażałem. Ale trzeba to jeszcze na PHP przerzucić smile.gif

  1. <div class="news"> / Tabela główna, w której mają znajdować się dwa newsy
  2. <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> /najprawdopodobniej tutaj jest zawarta ilość newsów na jednej stronie, a także pętla zajmująca się kopiowaniem newsów w tym przypadku do trzech.
  3. <div class="onenews"> /div do newsa. Powtarza go trzykrotnie i gdyby był zamykany wszystko ładnie by grało
  4. <a href='<?php the_permalink(); ?>'><?php the_title(); ?></a> /tytuł
  5.  
  6. <?php if ( is_single() OR is_page() ) : ?> /warunek, który powinien być spełniony
  7. <?php the_content();?> </div> /instrukcja, która powinna być spełniona i jest ona wykonywana poprawnie
  8.  
  9. /RESZTA KODU
  10. <?php else : ?>
  11. <?php the_excerpt(); ?>
  12. <?php endif; ?>
  13. <?php endwhile; else: ?>
  14. <p>Brak wpisów spełniających kryteria</p>
  15. <?php endif; ?>
  16. </div>
  17.  

Tekst pogrubiony zawiera kod, który chciałem przerobić. Próbowałem różnymi sposobami, jako iż nie znam w ogóle PHP wklepywałem byle co(np. echo). Nie udawało się niestety i zawitałem tutaj. Czy jest możliwość, aby ten warunek jakaś dobroduszna osoba przerobiła ja warunek, który by wykonał instrukcję i do tego wykonał drugą zamykającą tabelę(</div>). Chodzi o to, żeby kolor niebieski jakoś włożyć do tej instrukcji.

Jak jest: http://cs-zst.keed.pl/
Zamierzony efekt: http://cs-zst.keed.pl/wp-content/themes/cszst/index2.html

Stylu nie oceniajcie(tzn. obramowania:D).

Pozdrawiam
Damonsson
Z syntax errora, do gotowej strony? No to się nadaje do giełdy wink.gif
dadi
Teraz już działa jak należy wink.gif Znowu bawiłem się w tym kodzie. Postanowiłem wywalić warunek i sama instrukcja została, ale i tak nie działa ;/
Damonsson
Nic z tego nie rozumiem. Jeśli zrobiłeś poprawnie w HTML, to PHP tu nie ma nic wspólnego.
Jeśli wyświetla się treść, czyli rozumiem to "the_content();", to czemu nie ma się wyświetlać </div> za tym?
com
Autorowi chodzi o to że efekt ma taki:
Kod
<div class="news">                    
                                                        
                    <div class="onenews">                        
                        <a href='http://cs-zst.keed.pl/?p=12'>xxxxxxxxxxx</a>
                                                        
                            <p>Lorem Ipsum jest tekstem stosowanym jako przykładowy wypełniacz w przemyśle poligraficznym. Został po raz pierwszy użyty w XV w. przez nieznanego drukarza do wypełnienia tekstem próbnej książki. Pięć wieków później zaczął być używany przemyśle elektronicznym, pozostając praktycznie niezmienionym. Spopularyzował się w latach 60. XX w. wraz z publikacją arkuszy Letrasetu, zawierających fragmenty Lorem Ipsum, a ostatnio [&hellip;]</p>
                        
                                                        
                                                                
                    <div class="onenews">                        
                        <a href='http://cs-zst.keed.pl/?p=10'>xxxxxxxxxx</a>
                                                        
                            <p>Lorem Ipsum jest tekstem stosowanym jako przykładowy wypełniacz w przemyśle poligraficznym. Został po raz pierwszy użyty w XV w. przez nieznanego drukarza do wypełnienia tekstem próbnej książki. Pięć wieków później zaczął być używany przemyśle elektronicznym, pozostając praktycznie niezmienionym. Spopularyzował się w latach 60. XX w. wraz z publikacją arkuszy Letrasetu, zawierających fragmenty Lorem Ipsum, a ostatnio [&hellip;]</p>
                        
                                                        
                                                                
                    <div class="onenews">                        
                        <a href='http://cs-zst.keed.pl/?p=8'>xxxxx</a>
                                                        
                            <p>Lorem Ipsum jest tekstem stosowanym jako przykładowy wypełniacz w przemyśle poligraficznym. Został po raz pierwszy użyty w XV w. przez nieznanego drukarza do wypełnienia tekstem próbnej książki. Pięć wieków później zaczął być używany przemyśle elektronicznym, pozostając praktycznie niezmienionym. Spopularyzował się w latach 60. XX w. wraz z publikacją arkuszy Letrasetu, zawierających fragmenty Lorem Ipsum, a ostatnio [&hellip;]</p>
                        
                                                        
                                
                </div>


wiec problem leży w samej funkcji nie w tym kodzie co podał wink.gif
dadi
Nie wiem. Kod wygląda jak poniżej i nie wyświetla mi </div>. Jak dam go za if to samo. Jedynie jak dam za tytuł działa. Wydaję mi się, że chodzi o to, że po wykonaniu instrukcji (the_content) czyli treści przechodzi po prostu do wykonania kolejnej pętli wink.gif. Albo po prostu instrukcja if wykonuje tylko jedną operację.

  1. <?php if ( is_single() OR is_page() ) : ?>
  2. <?php the_content();?> </div>


EDIT:
Właśnie tak. Mimo, że dam </div> za tą funkcję po każdej treści nie zostanie uwzględnione smile.gif
Damonsson
Jak zrobisz tak, to pokazuje?

  1. <?php if ( is_single() OR is_page() ) : ?>
  2. </div>
  3. <?php the_content();?>
com
Jedyne co mi przychodzi na myśl to:
  1. <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> /najprawdopodobniej tutaj jest zawarta ilość newsów na jednej stronie, a także pętla zajmująca się kopiowaniem newsów w tym przypadku do trzech.
  2.  
  3. <div class="onenews"> /div do newsa. Powtarza go trzykrotnie i gdyby był zamykany wszystko ładnie by grało
  4.  
  5. <a href='<?php the_permalink(); ?>'><?php the_title(); ?></a> /tytuł
  6.  
  7. <?php if ( is_single() OR is_page() ) : ?> /warunek, który powinien być spełniony
  8.  
  9. <?php the_content();?>
  10. </div> /instrukcja, która powinna być spełniona i jest ona wykonywana poprawnie
  11.  
  12. <?php else : ?>
  13.  
  14. <?php the_excerpt(); ?>
  15.  
  16. </div>
  17. <?php endif; ?>
  18.  
  19. <?php endwhile; else: ?>
dadi
Dziękuje bardzo Tobie za pomoc! smile.gif
  1. <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  2. <div class="onenews">
  3. <a href='<?php the_permalink(); ?>'><?php the_title(); ?></a>
  4. <?php if ( is_single() OR is_page() ) : ?>
  5. <?php the_content();?>
  6. <?php else : ?>
  7. <?php the_excerpt(); ?>
  8. <?php endif; ?> </div>
  9. <?php endwhile; else: ?>
  10. <p>Brak wpisów spełniających kryteria</p>
  11. <?php endif; ?>

Wstawiłem to za wszystko co się tyczy IFa, ale wstawiłem przed końcem pętli i działa. Jeszcze raz dzięki! tongue.gif

Co do twojego ostatniego postu to nie ma sensu, bo zakończy się tabela przed treścią smile.gif
com
up wiem pomyliłem linie, miało być o jedna dalej tongue.gif
Damonsson
Ma sens, bo jeśli </div> się pojawi, to dojdziesz do wniosku, że błąd powoduje funkcja the_content();

com
wgl wychodzi na to że to nie ona zwraca te rekordy biggrin.gif
Damonsson
Jeśli to wordpress, to ona robi tylko echo ( http://core.trac.wordpress.org/browser/tag...mplate.php#L164 ), więc autor coś kręci wink.gif
dadi
Nie wiem o co chodzi, ale cieszę się, że działa:D
Damonsson
a już tak z czystej ciekawości, zrób CTRL + F w projekcie i wklej tutaj funkcję the_content().
dadi
  1. function the_content( $more_link_text = null, $strip_teaser = false) {
  2. $content = get_the_content( $more_link_text, $strip_teaser );
  3. $content = apply_filters( 'the_content', $content );
  4. $content = str_replace( ']]>', ']]&gt;', $content );
  5. echo $content;
  6. }

Chyba o to chodzi. Mi się po prostu wydaję, że funkcja if, jeżeli funkcja jest prawdziwa może przeprowadzić tylko i wyłącznie jedną instrukcję, czyli w tym przypadku the_content, a jako iż funkcja if nie została jeszcze skończona to nie można wprowadzać tam kolejnych instrukcji. I dlatego postanowiłem to wrzucić za endif smile.gif

PS: W szkole nauczyciel tłumaczył, kiedy programowaliśmy pliki wsadowe, że do standardowej wersji if można tylko jedną instrukcję przypisać smile.gif
com
tak bo prawdopodobnie wywołuje funkcje the_excerpt() wink.gif

http://ideone.com/iMhT7H
Przykład... Ciekawostki tu opowiadasz, a w plikach wsadowych if wrzucasz w blok np tak
Kod
if %%f NEQ %1 (
echo aa
dir .
)


a php to nie pliki wsadowe smile.gif

http://php.net/manual/en/control-structures.elseif.php wink.gif
Damonsson
No teraz to ja rozumiem, więc skłamałeś pisząc

Cytat
Co do twojego ostatniego postu to nie ma sensu, bo zakończy się tabela przed treścią


nic się nie zakończy, bo if nie jest spełnione.


Albo i nie, nie wiem bo już sam się zakręciłem biggrin.gif Kto wymyślił wordpressa...na stos z nim.
com
Damonsson jeśli autor pozwoli to zrobimy test i spr który tak naprawdę wywołuje... ale wydaje mi się że jest tak jak napisałem tongue.gif Tylko autor nie wiedział że wywołuje nie te funkcje biggrin.gif
Damonsson
No właśnie chciałem to sprawdzić na samym początku, stąd prosiłem, żeby dodał </div> przed the_content(). Ale nie chciał i już sam się pogubiłem w tym wszystkim, więc, ważne, że działa biggrin.gif
com
ano, ale z tego można wywnioskować że cześć tych funkcji jest bez sensu.. biggrin.gif
dadi
Jak wrzuciłem przed the_content() to kończyło tabelę przed treścią.

Po 1: Sam się pogubiłem w tym co pisałem w tym temacie:D
Po 2: Myślałem, że pokrewieństwo jest w tym jakieś. W szkole jak pisaliśmy if to pod tym dawaliśmy instrukcję i gra gitara
Po 3: Nie znam się na PHP i dlatego tu jestem:P
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.