Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak sprawdzić w pętli czy plik istnieje, pętla for
Diesel
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 9.10.2013

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


Poza pętlą sprawa jest banalna, mam na to prostą funkcje:

  1. function UserPhoto() {
  2. $useravatar="images/avatars/".$_SESSION['id'].".jpg";
  3. if(file_exists($useravatar)){
  4. echo '<img class="'.'logged-avatar'.'" src="images/avatars/'.$_SESSION['id'].'.jpg"/>';
  5. }
  6. else{
  7. echo '<img class="'.'logged-avatar'.'" src="images/avatars/default.png"/>';
  8. }
  9. }


..a jak będąc w pętli for sprawdzić istnienie pliku .jpg?

Ten post edytował Diesel 6.12.2013, 01:22:24
Go to the top of the page
+Quote Post
mar1aczi
post
Post #2





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

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


Dokładnie tak samo, podając odpowiedni argument (poprawną ścieżkę do pliku) do funkcji file_exists.
Go to the top of the page
+Quote Post
Diesel
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 9.10.2013

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


Cytat(mar1aczi @ 6.12.2013, 06:33:58 ) *
Dokładnie tak samo, podając odpowiedni argument (poprawną ścieżkę do pliku) do funkcji file_exists.



Jak bym nie skonstruował funkcji wewnątrz pętli otrzymuje błędy.

Przykład:
  1. <?php
  2.  
  3. for($i=0; $i<10; $i++) {
  4.  
  5. echo ($i);
  6.  
  7. function UserPhoto() { echo ('/<br>'); }
  8.  
  9. }
  10.  
  11. ?>


Błąd:
Cytat
01
Fatal error: Cannot redeclare UserPhoto() (previously declared in test.php:7) in test.php on line 7


Ten post edytował Diesel 6.12.2013, 14:58:50
Go to the top of the page
+Quote Post
freemp3
post
Post #4





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


W pętli funkcje trzeba wywołać a nie tworzyć.
  1. // deklaracja funkcji na początku
  2. function UserPhoto() { echo ('/<br>'); }
  3.  
  4. for($i=0; $i<10; $i++) {
  5.  
  6. echo ($i);
  7.  
  8. UserPhoto(); // tutaj tylko wywołanie funkcji
  9. }


Ten post edytował freemp3 6.12.2013, 15:02:28
Go to the top of the page
+Quote Post
Diesel
post
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 9.10.2013

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


Nie mogę jednak sobie poradzić. Z jakiegoś powodu tablica(ze zmienią $i) $msg_sql_online[$i][author_id] występująca w pętli for nie ma zasięgu w funkcji AuthorPhoto() którą w pętli for wywołuje, aby przypisać kolejnym rekordom avatary danych userów (jesli te fizycznie istnieją na serwerze jeśli nie chce ustawić domyślny).

  1. if(isset($_SESSION['logged'])) {
  2.  
  3. function AuthorPhoto() {
  4. $authoravatar='images/avatars/'.$msg_sql_online[$i][author_id].'.jpg';
  5. if(file_exists($authoravatar)){
  6. echo ('zalogowany');
  7. }
  8. else{
  9. echo ('niezalogowany');
  10. }
  11. }
  12. for($i=0; $i<count($msg_sql_online); $i++) {
  13. echo '
  14. <div id="message">
  15. <IMG id="message-avatar" SRC="images/avatars/'.AuthorPhoto().'.jpg">
  16. </div>';
  17. }
  18. } else { instrukcje dla niezalogowanego usera }


Z góry dzięki za wskazówki (IMG:style_emoticons/default/nerdsmiley.png)

Ten post edytował Diesel 6.12.2013, 17:13:17
Go to the top of the page
+Quote Post
Turson
post
Post #6





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

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


  1. function AuthorPhoto($i) {
  2. $authoravatar='images/avatars/'.$msg_sql_online[$i]['author_id'].'.jpg';
  3.  
  4. //w pętli:
  5.  
  6. <IMG id="message-avatar" SRC="images/avatars/'.AuthorPhoto($i).'.jpg">
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 02:39