Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: fopen
Forum PHP.pl > Forum > Przedszkole
katomasz
Chcę otworzyć plik, którego nazwa kryje się pod zmienną czyli
  1. <?php
  2. $zmienna=&#092;"plik.dat;
  3. $plik=fopen($zmienna, &#092;"r\");
  4.  
  5. ?>

pojawia się komunikat
fopen(plik.dat ): failed to open stream: Invalid argument in M:\STRONA-GOS\Strona\aktual.php on line 35
Natomiast gdy podam bezpośrednio nazwę pliku w funkcji to działa.
Potrzebuję jednak tego pierwszego sposobu. Co zrobić?
nospor
co zrobić? należy pisać poprawnie:
  1. <?php
  2. $zmienna=&#092;"plik.dat\";
  3. $plik=fopen($zmienna, &#092;"r\");
  4. ?>
Widać różnicę?
kszychu
Zapomniałes o cudzyslowiu zamykajacym przy nazwie pliku.
katomasz
Przepraszam, ale nie zauważyłem, że w tym przypadku nie wstawiłem cudzysłowu. Normalnie tam jest i dalej wyświetla ten komunikat.
nospor
a pokaż dokladnie kod (copy-paste) który dziala i który nie dziala (tylko dokladnie)
katomasz
  1. <?php
  2.  
  3. $plik=file(&#092;"nazwy.dat\");
  4.  $licznik=count($plik);
  5.  print $licznik;
  6.  for ($i=0; $i<$licznik; $i++)
  7.  {
  8. $wiersz=explode(&#092;"t\", $plik[$i]);
  9. $pliki=$wiersz[0];
  10. print $pliki;
  11. $file=fopen($pliki, 'r');
  12. if (!$file)
  13.  {
  14. echo'<B><CENTER>Nie ma</CENTER></B>';
  15.  }
  16. echo '<TABLE ALIGN=Center WIDTH=600 CELLPADDING=8 FRAME=BOX><TR><TD>';
  17. while(!feof($file))
  18. {
  19. $czytaj=fgets($file ,999);
  20. echo $czytaj;
  21. }
  22. echo '</TD></TR></TABLE>';
  23.  }
  24.  fclose($file);
  25.  
  26. ?>

Dane o nazwach plików przechowywane są w pliku 'nazwy.dat'. Z tego pliku wyciągane są po kolei nazwy i mają być wyświetlane ich zawartości w tabeli. Wyświetla się właściwa nazwa pliku, ale nie chce się otworzyć, bo zgłasza błąd. Natomiast gdy ręcznie wpiszę
Cytat
fopen("nazwapliku.dat", "r")
to działa.
nospor
A spróbuj zmienną pliki robić tak:
  1. <?php
  2.  
  3. $pliki=trim($wiersz[0]);
  4.  
  5. ?>
matid
Spróbuj to:
  1. <?php
  2. $pliki=trim( $wiersz[0] );
  3. ?>

zamiast tego co masz teraz.

Edit: 32 sekundy spóźnienia (sic!)
katomasz
Dzięki. To działa.
nospor
Dobra rada na przyszlość: dawaj kod, anie coś wyrwanego z kontekstu. Dopiero wtedy widać gdzie jest błąd.

@matid ma się ten refleks biggrin.gif
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.