( Zaloguj | Zarejestruj )
![]() ![]() |
18.12.2008 - 19:36
Post
#1
|
|
![]() aktywność: Grupa: +Bloger Postów: 22 Nr: 406 |
To pytanie bardziej do programistów PHP niż WordPressowców, ale staram się wyczerpać wszelkie możliwości...
Mam na stronie następujący fragment kodu: KOD <?php $zmienna = "/wp-content/uploads/authors/".the_author_login().".jpg"; if(strlen(the_author_description())>0 and file_exists($zmienna)){ ?> <div class="entry"> <div class="authordata"><h3> <img style="float:right" src="/wp-content/uploads/authors/<?php the_author_login(); ?>.jpg" alt="Zdjęcie autora" />Autor: <?php the_author(); ?></h3> <p><small><?php the_author_description(); ?></small></p> </div> </div><?php } ?> Znajduje się on na WP (w szablonie pojedynczego wpisu), na którym grupa autorów publikuje swoje teksty i odpowiada za wyświetlanie ramek ze zdjęciem i informacjami na temat autora tekstu. Zanim ramka zostanie wyświetlona, następuje sprawdzenie, czy plik ze zdjęciem (którego nazwą jest wynik wordpressowej funkcji the_author_login()) istnieje na serwerze i czy opis biograficzny (the_author_description()) został wypełniony przez autora. Po spełnieniu obu tych warunków, ramka zostaje wyświetlona, w przeciwnym wypadku nie powinno się nic pojawić. Jednak rezultat działania tego fragmentu jest dla mnie kompletnie niezrozumiały - gdy oba warunki zostają spełnione, wówczas zostaje wyświetlony login autora (the_author_login()) i opis; brakuje tagów HTML, które widać w powyższym fragmencie. W przypadku braku zdjęcia i/lub opisu zostaje wyświetlony sam login autora (ponownie bez śladu HTML). Pytanie: gdzie tkwi błąd, że cały HTML wewnątrz funkcji jest ignorowany przez skrypt, a warunek istnienia pliku sprawia wrażenie, jakby nie był w ogóle sprawdzany? -------------------- "It's nice to be important, but it's more important to be nice..."
|
|
|
|
18.12.2008 - 22:50
Post
#2
|
|
|
aktywność: ![]() ![]() ![]() ![]() ![]() Grupa: +Bloger Postów: 892 Nr: 3 286 |
nie znam się za dobrze na PHP, ale wydaje mi się że gdzieś po "if" powinno być "echo" wyświetlające ten cały html
|
|
|
|
19.12.2008 - 19:19
Post
#3
|
|
![]() aktywność: ![]() ![]() ![]() ![]() Grupa: Redakcja Postów: 332 Nr: 60 |
Nie dam głowy ale spróbuj zamiast and wpisać &&.
-------------------- |
|
|
|
19.12.2008 - 20:57
Post
#4
|
|
![]() aktywność: Grupa: +Bloger Postów: 22 Nr: 406 |
Bez skutku. Próbowałem &&, echo, a nawet print, efekt wciąż ten sam.
-------------------- "It's nice to be important, but it's more important to be nice..."
|
|
|
|
21.12.2008 - 11:58
Post
#5
|
|
![]() aktywność: ![]() ![]() ![]() ![]() Grupa: Redakcja Postów: 332 Nr: 60 |
Sprawdź w takim razie jakie wartości dają Twoje funkcje the_author_login(), strlen(the_author_description()), file_exists($zmienna). Poza tym przy file_exists() powinieneś zaznaczyć czy true czy false (czyli file_exists($zmienna) == true).
-------------------- |
|
|
|
05.1.2009 - 16:00
Post
#6
|
|
|
aktywność: ![]() ![]() ![]() ![]() ![]() Grupa: Redakcja Postów: 544 Nr: 2 655 |
na moje ten warunek jest trochę dziwny... spróbuj tak:
KOD if ( (strlen(the_author_description())) > 0 && (file_exists($zmienna)) ) { teraz powinno być tak że jeśli jeden i drugi warunek są jednocześnie spełnione (logiczne "and") to wykona się kod w klamerkach
-------------------- masz problem z "Warning: Cannot modify header information - headers already sent by" ?? W 99.9% przypadków chodzi o BOM. Więcej --> http://www.wordpress.org.pl/index.php?s=&a...ost&p=14096 albo http://www.wordpress.org.pl/search/
|
|
|
|
![]() ![]() |
| : 21 05 12 - 11:11 |