Autor Zpráva
technik
Profil
Tento kód by měl vypisovat soubory z adresáře upload. Bohužel mám s ním dvě chyby:
<?php 
$dir = opendir("upload");
echo "<table>";
echo "<tr><td>Jméno</td><td>Datum</td><td>Adresa</td><td>Akce</td></tr>";
  while($file = readdir($dir)) {
  	$datum_posledni_zmeny = StrFTime("%d/%m/%Y %H:%M", filemtime($file));
	echo "<tr><td><a href=\"$file\">$file</a></td><td>$datum_posledni_zmeny</td><td>/admin/upload/$file</td><td><a href='delete_image.php$name=$file'>[icon]</a></td></tr>";
  }
echo "</table>";
  closedir($dir);
?>


1. Chyba :

Vypisuje mi to error :
Warning: filemtime(): Stat failed for mrs.png (errno=2 - No such file or directory) in /3w/xf.cz/m/m-rs/admin/galery.php on line 10


2. Chyba

Vypisuje mi to i . a .. takže výpis vypadá nějak takto:
. datum_zmeny | adresa | akce
.. datum_zmeny | adresa | akce


a teprve pak mi to vypisuje ostatní obrázky.

Já bych se potřeboval toho . a .. zbavit. (Té chyby 1, samozřejmě taky :-))
Nenašla by se nějaká dobrá duše která by mi poradila jak? Díky T.
Taps
Profil
technik:
Podívej se na http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=101072 řešil se tam téměř stejný problém
technik
Profil
Koukám že je to špatnou cestou v filemtime(); mělo by tam být $dir/$file, ale to nejde. Tak jsem zkusil definovat proměnou.
Jak mám definovat proměnou cesta?

$cesta = $dir"/"$file; nejde, hází to errory
technik
Profil
Když testuji zda není $file .. nebo . bych potřeboval, aby pokud $file je . nebo .. přešlo while k dalšímu kroku. Jde to nějak udělat?
AM_
Profil
technik:
$cesta = $dir"/"$file; nejde, hází to errory
ještě aby ne, chybí ti tam tečky pro spojení stringů.

Když testuji zda není $file .. nebo . bych potřeboval, aby pokud $file je . nebo .. přešlo while k dalšímu kroku. Jde to nějak udělat?
k dalšímu kroku se přechází příkazem
continue;
technik
Profil
<?php 
$dir = opendir("upload");
echo "<table>";
echo "<tr><td>Jméno</td><td>Datum</td><td>Adresa</td><td>Akce</td></tr>";
  while($file = readdir($dir)) {
  	$cesta = $dir."/".$file;
  	$datum_posledni_zmeny = StrFTime("%d/%m/%Y %H:%M", filemtime($cesta));
	if ($file = "."or$file = ".."){
		continue;
	}	
	echo "<tr><td><a href='$cesta'>$file</a></td><td>$datum_posledni_zmeny</td><td>/admin/$cesta</td><td><a href='delete_image.php$name=$file'>[icon]</a></td></tr>";
  }
echo "</table>";
  closedir($dir);
?>


mi vypisuje error:


Warning: filemtime(): Stat failed for Resource id #6/. (errno=2 - No such file or directory) in /3w/xf.cz/m/m-rs/admin/galery.php on line 11

Warning: filemtime(): Unable to access Resource id #6/mrs.png in /3w/xf.cz/m/m-rs/admin/galery.php on line 11

Warning: filemtime(): Unable to access Resource id #6/logo.png in /3w/xf.cz/m/m-rs/admin/galery.php on line 11

Warning: filemtime(): Unable to access Resource id #6/Snímek_obrazovky.png in /3w/xf.cz/m/m-rs/admin/galery.php on line 11
AM_
Profil
$dir není string, ale resource (handle toho adresáře).
dan55
Profil
zkus
<?php 
$adresar = "./upload";
$dir = opendir($adresar);
echo "<table>";
echo "<tr><td>Jméno</td><td>Datum</td><td>Adresa</td><td>Akce</td></tr>";
  while($file = readdir($dir)) {
      $cesta = $adresar."/".$file;
      $datum_posledni_zmeny = StrFTime("%d/%m/%Y %H:%M", filemtime($cesta));
    if ($file == "." or $file == ".."){
        continue;
    }    
    echo "<tr><td><a href='$cesta'>$file</a></td><td>$datum_posledni_zmeny</td><td>/admin/$cesta</td><td><a href='delete_image.php$name=$file'>[icon]</a></td></tr>";
  }
echo "</table>";
  closedir($dir);
?>

Pamatuj si, že = je přiřazení, == je to co porovnává (line 8)
edit: upřesnění
AM_
Profil
dan55:
Pamatuj si, že = se VŽDY provede
měl jsi na mysli, že = je přiřazení, a == je porovnání?
formulace "se vždy provede" je dost zajímavý popis toho, že = přiřazuje hodnoty, kdežto == porovnává.
dan55
Profil
AM:
Myslem jsem v podmínce
Ano měl jsem to na mysli jak říkáš. Dík za opravu
AM_
Profil
dan55:
no stejně jsi neměl pravdu :)
if ($a = 0) {
  restart_universe(); //nikdy se nestane
}
dan55
Profil
AM:
no stejně jsi neměl pravdu :)
:-D njn

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: