Autor | Zpráva | ||
---|---|---|---|
Herbert Profil * |
#1 · Zasláno: 12. 7. 2012, 12:21:30
Zdravím,
mam několik souborů ve složce generovaných pomocí PHP a na nich mam daný onclick event na otevření nového okna a zobrazení obsahu těchto textových souborů (pomocí PHP include). Jenže nevím, jak do include napsat cestu k souboru (cestu do složky vím). Jde nějakým způsobem získat název toho souboru na který je přidán onclick event? Díky |
||
Str4wberry Profil |
#2 · Zasláno: 12. 7. 2012, 12:25:40
Zajisti to tak, že po kliknutí na soubor se otevře adresa ve stylu „
zobrazeni-souboru.php?soubor=slozka/soubor.txt “. Soubor „zobrazeni-souboru.php “ potom jen zajistí přečtení souboru z umístění slozka/soubor.txt (samozřejmě po ověření platnosti adresy).
|
||
Herbert Profil * |
#3 · Zasláno: 12. 7. 2012, 12:34:24
Asi jste mě nepochopil...
Mě jde o to, jak dostat do proměný to "soubor.txt", jestliže event onclick mam nastavený v PHP na řetězci, který generuje několik souborů, podle toho v jaké jsem složce. Například soubor.txt, soubor1.lit, soubor2.def, soubor3.ext. |
||
Str4wberry Profil |
#4 · Zasláno: 12. 7. 2012, 12:55:09
Ano, pořádně jsem to nepochopil stále.
Můžeš ukázat živou ukázku? Nebo pospat, co je cílem udělat, co řešíš za problém? |
||
Herbert Profil * |
#5 · Zasláno: 12. 7. 2012, 13:03:13
Živou ukázku bohužel ne, dělám to na interním serveru...
<?php $dir=$_GET["path"]; if (!isset($dir)){$dir=$root;} $last_char=substr($dir, -1); if(isset($dir)){ if ($last_char != '/') {$dir=$dir.'/';}} $pole=array(); /* deklarujeme prázdné pole pro načítání souborů a složek */ if ($handle = opendir($dir)) { while (false !== ($entry = readdir($handle))) /* procházení adresáře */ { if ($entry != "." && $entry != "..") /* odstranění . a .. */ if (is_dir($dir.$entry)==true and is_readable($dir.$entry)) /* je to složka a dá se přečíst ? */ { array_push($pole,"d,".$entry.",".@date ('d.m.Y H:i:s', filemtime($dir.$entry)).",<DIR>"); /* přidej d na začátek, pak název a datum */ } elseif (is_file($dir.$entry)==true) /* je to soubor ? */ { $filesize=filesize($dir.$entry); if ($filesize < 1024) $b=$filesize.'B'; elseif ($filesize < 1048576) $b=round ($filesize / 1024, 2).'KB'; elseif ($filesize < 1073741824) $b=round ($filesize / 1048576, 2).'MB'; elseif ($filesize < 1099511627776) $b=round ($filesize / 1073741824, 3).'GB'; else $b=round ($filesize / 1099511627776, 3).'TB'; /* převod B na KB/MB/GB/TB */ if (substr($dir.$entry,-4,1)=="." and stripos($extensions,substr($dir.$entry,-3,3))) /* zobrazuj jen přípony, které jsou v $extensions (definované v externím souboru) */ array_push($pole,"f,".$entry.",".@date ('d.m.Y H:i:s', filemtime($dir.$entry)).",".$b); /*přidej f na začátek, pak název, datum a velikost*/ } } closedir($handle); /* až projdem vše (while již končí, uzavři čtení adresáře */ /* pole nyní obsahuje několik řetězců, každý odpovídá jedné složce či souboru*/ } sort($pole); /* setřídí pole dle abecedy - protože řetzce pro složky začínají "d", jsou jako první */ echo "<table class='tabulka'>"; echo "<caption class='title cesta'><div class='titleover'>Nacházíte se ve složce $dir</div></caption> <tr class='title'> <th class='name'>Název</th> <th class='size'>Velikost</th> <th class='lastchange'>Poslední změna</th> </tr>"; /* nadpis a záhlaví tabulky */ $up = preg_replace( '/[^\/]+\/*$/','',$dir ); if ($dir!==$root) { echo "<tr> <td> <img src='css/back_icon.png'><a href='?menu_id=".$menu_id."&submenu_id=".$submenu_id."&path=$up' class='vys'>[ . . ]</a> </td> <td> </td><td> </td> </tr>"; } foreach ($pole as $radek) /* procházíme znovu pole od začátku pro každý $řádek z $pole */ { $polozka=explode(",",$radek); /* každý řádek rozdělí na položky podle oddělovače (čárky) */ /* položka[0] je první částí - obsahuje buď "d" nebo "f" */ /* polozka[1] je druhou částí, obsahuje název souboru či složky */ /* položka[2] obsahuje datum a čas modifikace souboru */ /* položka[3] obsahuje velikost souboru nebo údaj o tom, že je to adresář */ echo "<tr><td class='bunka'>"; /* začíná řádek tabulky */ if ($polozka[0]=="d") /* pokud je to složka, musí to být červený odkaz */ { echo "<div class='dirover'><img src='css/folder_icon.png'>"; echo "<a class='directory' href='?menu_id=".$menu_id."&submenu_id=".$submenu_id."&path=".$dir.$polozka[1]."/'>"; echo $polozka[1]; echo "</a></div>"; } else /* pokud není složka, je to soubor, pak modrý text */ { echo "<div class='fileover'><img src='css/file_icon.png'><a class='file' onclick='odkaz()'>"; echo $polozka[1]; echo "</a></div>"; } echo "</td><td class='bunka'>".$polozka[3]."</td>"; echo "<td class='bunka'>".$polozka[2]."</td></tr>"; /* v dalším sloupci je datum a čas */ } echo "</table>"; ?> a právě, když dám do includu jen $polozka[1], tak mi to tam nahraje všechny soubory v tý složce... |
||
Keeehi Profil |
#6 · Zasláno: 12. 7. 2012, 13:26:30
A javascriptovou funkci odkaz si máme vycucat z prstu?
isset($dir) bude vždy true, protože $dir je na 2. řádku definované.
Proč to spojuješ na řádcích 15 a 26 do řetězce, aby jsi to následně na řádku 52 rozdělil do pole? Vždyť to můžeš ukládat rovnou do pole. Nikde tu include není. |
||
Časová prodleva: 12 let
|
0