IPB

( Zaloguj | Zarejestruj )

 
Reply to this topicStart new topic
> Dwa warunki w PHP, i dziwny efekt ich działania
Lukem
post 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..."
Go to the top of the page
 
+Quote Post
kejsi
post 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
Go to the top of the page
 
+Quote Post
b4it
post 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ć &&.


--------------------
b4it's log | iPhone Blog

4Avatars v0.2
Nie jestem darmowym, prywatnym pomocnikiem!
Go to the top of the page
 
+Quote Post
Lukem
post 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..."
Go to the top of the page
 
+Quote Post
b4it
post 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).


--------------------
b4it's log | iPhone Blog

4Avatars v0.2
Nie jestem darmowym, prywatnym pomocnikiem!
Go to the top of the page
 
+Quote Post
marcinpl87
post 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/
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:

 



: 21 05 12 - 11:11