Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: File Exist
Forum PHP.pl > Forum > PHP
Eagle
Witam.
Mam problem z funkcją file_exist która nie widzi plików które istnieją.

  1. <?php
  2. $i=0;
  3.  
  4. while($nazwa[$i])
  5. {
  6. $file_name = '../lang/' . $nazwa[$i] . '.abc';
  7.  
  8. if(file_exists($file_name))
  9. {
  10. echo $nazwa[$i];
  11. }
  12.  
  13. $i++;
  14. }
  15. ?>


Może ktoś wie co jest źle ?
fernet
Blad tkwi w sposobie w jakim przegladasz tablice
  1. <?php
  2. while(list($k,$v) = each($tablica)) {
  3. echo $tablica[$k];
  4. }
  5. ?>

ew.

  1. <?php
  2. while(list($k,$v) = each($tablica)) {
  3. echo $v;
  4. }
  5. ?>

$k zwraca Wartosc Indeksu
$v zwraca Zawartosc Elementu

Jesli podasz w list tylko jedna zmienna przyjmnie ona Wartosc Indeksu jesli jednak zalezy Ci na wyswietleniu tylko Zawartosci Elementu musisz poprzedzic zmienna przecinkiem petla wtedy bedze zwracac tylko Zawartosc Elementu.
Eagle
Nadal nic... (testowałem oba sposoby)
Wydaje mi się że kłopot jest z file_exist.
starach
A może tkwi w ścieżce do pliku ?
  1. <?php
  2. $i=0;
  3.  
  4. while($nazwa[$i])
  5. {
  6. $file_name = '../lang/' . $nazwa[$i] . '.abc';
  7.  
  8. if(file_exists($file_name))
  9. {
  10. echo $nazwa[$i];
  11. } else {
  12. echo dirname(__FILE__).$nazwa[$i].'<br>';
  13. }
  14.  
  15. $i++;
  16. }
  17. ?>

Jako że odwołujesz się do katalogu nadrzędnego '../' musisz użyć substr() na dirname(__FILE__) żeby wyświetlił ci dobrą ścieżkę.
Eagle
Wyjaśnię troszkę bardziej.

Plik index.php załącza plik "/include/a.php" (z którym mam właśnie problem)
Plik a.php sprawdza czy w folderze " /lang/ " jest dany plik, następnie zwraca jego nazwę (nie ścieżkę).
Plik index.php załącza dany plik z folderu " /lang/ "


gdzies / index.php
gdzies / include / a.php
gdzies / lang / jakis_plik.abc
Zeman
Cytat(Eagle @ 19.04.2007, 21:26:05 ) *
Wyjaśnię troszkę bardziej.

Plik index.php załącza plik "/include/a.php" (z którym mam właśnie problem)
Plik a.php sprawdza czy w folderze " /lang/ " jest dany plik, następnie zwraca jego nazwę (nie ścieżkę).
Plik index.php załącza dany plik z folderu " /lang/ "
gdzies / index.php
gdzies / include / a.php
gdzies / lang / jakis_plik.abc


plik a.php jest includowany przez index.php a wiec w a.php obowiazuje sciezka skryptu uruchamianego, a wiec "gdzies/" a nie "gdzies/include/".

zatem nie nalezy dawac "../".
Eagle
Dzięki... pomogło.
fernet
z include przegladasz z pliku do ktorego includowales usun ../ i powinno smigac no chyba ze zle sobie wyobrazilem uklad stron
Sedziwoj
include'owane pliki i ścieżki w nich użyte są dziwne, już raz testowałem, że sprawdza najpierw katalog gdzie jest plik include'owny a potem ten który include'ował...
ale doradzam proste testowanie, bo że działa to nie znaczy że dobrze, a potem mogą nas wyniki zaskakiwać.

mam:
/test/inc.php
  1. <?php
  2. include("../cos.txt");
  3. ?>

/cos.txt
  1. <?php
  2. include("cos2.txt");
  3. ?>


oraz:
/test/cos2.txt
z treścią "cos1"
/cos2.txt
z treścią "cos2"

pojawia mi się :
Warning: bcompiler: Bad bytecode file format at 00000003 in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\cos.txt on line 2
cos1
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.