Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP, obrazky ze slozky

Ahoj, přítel mi nedávno napsal kód na galerii.

<?php
$slozka=opendir('.');
while($objekt=readdir($slozka))
{
 if($objekt=="."||$objekt==".."||$objekt=="index.php")continue;
 $soubor[]=$objekt;
}
if(!isset($_GET["strana"]))
 {$_GET["strana"]=0;} 
echo "<img src=\"".$soubor[$_GET["strana"]]."\" border=\"0\"><br>";
if(($_GET["strana"])!=0)
 {echo "<a href=\"index.php?strana=".($_GET["strana"]-1)."\">zpet</a><br>";}
if(count($soubor)>($_GET["strana"]+1)) 
 {echo "<a href=\"index.php?strana=".($_GET["strana"]+1)."\">dalsi</a><br>";}
?>

Je z něj vidět, že soubory se načítají z adresáře jako je php soubor.

Avšak, jak se snažím, nemůžu příjít na to, jak to udělat, aby se načítaly ze složky SOUBORY...

Jsem asi blbej

(začínám s php.)

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Jak zde už napsal los: Tak máš nesprávne nastavený atribút src elementu img. Doplň pred názov súbor…
ERASER 30.07.2012 00:40
ERASER
A zde mi už musí být jasné, kde je chyba => Cesta uvedená v src neobsahuje danou složku. podívej se…
tomas.kulhanek 30.07.2012 08:02
tomas.kulhanek
Podíval jsem se na tu tvoji modifikaci a bohužel mi to nějak nefungovalo. Tak jsem to ještě jednou z…
ERASER 30.07.2012 11:08
ERASER
Děkuji Vám oboum za rady, už to jakš, takš, chápu :)
PHPpaŘ 30.07.2012 15:46
PHPpaŘ
Notice: Undefined variable: soubor in C:\Program Files (x86)\EasyPHP-12.0\www\index.php on line 126… nový
PHPpař 30.07.2012 17:22
PHPpař
ok, chyba je v $soubor = glob('soubory/*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}',GLOB_BRACE); Je to t… nový
tomas.kulhanek 30.07.2012 17:27
tomas.kulhanek
Aha, děkuji, každopádně jsem pochopil vše co jsem chtěl. Děkuji moc, :))) poslední
PHPpař 30.07.2012 17:29
PHPpař

Jak zde už napsal los:

Tak máš nesprávne nastavený atribút src elementu img. Doplň pred názov súboru to meno složky a pôjde to.

Takže to napíšu znova pro lepší pochopení s analýzou jak dané chybě dospět, i když je vidět na první pohled.
Když ten kód trochu ořežu, aby po (prvním) načtení stránky fungoval, tak z něj zbude (plus doplním komentáře):

<?php
$adresar=opendir('.');  //nacitam adresar
while($objekt=readdir($adresar)) // ctu polozky v adresari v cyklu
{
 if($objekt=="."||$objekt==".."||$objekt=="index.php")continue;//preskakuji objekty "index.php", "adresar vyse" a "tento adresar" 
 $soubor[]=$objekt; //nacitam soubor do pole
}
if(!isset($_GET["strana"]))//zjistuji jestli je vytvoena promena "strana"
 {$_GET["strana"]=0;}//pokud neni vytvorim promenou s hodnotou nula
echo "<img src=\"".$soubor[$_GET["strana"]]."\" border=\"0\"><br>";//vypise pouze HTML kod
//zbytek odmazan
?>

Po vygenerovaní stránky se koukni na zdrojový HTML kód, co to vygenerovalo a zkontroluj ho, kde jsou chyby.
(Pro ulehčení práce přiložím vygenerovaný zdrojový kód stránky:)

<img src="family019.jpg" border="0"><br>

Opět si ho oříznu na to nejpodstatnější:

<img src="family019.jpg">

A zde mi už musí být jasné, kde je chyba => Cesta uvedená v src neobsahuje danou složku.
Takže pouze jenom do cesty doplním danou složku, změny ve zdrojovém kódu jsou tučně:

<?php
$slozka="SOUBORY";
$adresar=opendir($slozka);
while($objekt=readdir($adresar))
{
if($objekt=="."||$objekt==".."||$objekt=="index.ph p")continue;
$soubor[]=$objekt;
}
if(!isset($_GET["strana"]))
{$_GET["strana"]=0;}
echo "<img src=\"".$slozka."/".$soubor[$_GET["strana"]]."\" border=\"0\"><br>";
if(($_GET["strana"])!=0)
{echo "<a href=\"index.php?strana=".($_GET["strana"]-1)."\"> zpet</a><br>";}
if(count($soubor)>($_GET["strana"]+1))
{echo "<a href=\"index.php?strana=".($_GET["strana"]+1)."\"> dalsi</a><br>";}
?>

(Bohužel mě to nešlo vypsat jako php syntaxi se ztučněnými výrazy.)
Doufám, že jsi pochopil, kde je problém v kódu.

A zde mi už musí být jasné, kde je chyba => Cesta uvedená v src neobsahuje danou složku.

podívej se na glob() - navrací pole s adresami na soubory, které splňují kritérium v parametru. V tomto případě by to vypadalo takto

více info
stackoverflow
cowburn.info

<?php 
$soubor = glob('soubory/*.{[jJ][pP][gG],[pP][nN][gG],[gG][iI][fF],[jJ][pP][eE][gG]}',GLOB_BRACE); // nyní to vybere jen soubory s extenzí jpg,png,gif,jpeg (je to tak blbě rozepsané, protože takto to není case sensitive)

if(!isset($_GET["strana"]))
 {$_GET["strana"]=0;} 
echo "<img src=\"".$soubor[$_GET["strana"]]."\" border=\"0\"><br>";
if(($_GET["strana"])!=0)
 {echo "<a href=\"index.php?strana=".($_GET["strana"]-1)."\"> zpet</a><br>";}
if(count($soubor)>($_GET["strana"]+1)) 
 {echo "<a href=\"index.php?strana=".($_GET["strana"]+1)."\"> dalsi</a><br>";}
?>

Podíval jsem se na tu tvoji modifikaci a bohužel mi to nějak nefungovalo. Tak jsem to ještě jednou zmodifikoval:

<?php 
$soubor = glob('soubory/*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}',GLOB_BRACE);

if(!isset($_GET["strana"]))
 {$_GET["strana"]=0;} 
echo "<img src=\"".$soubor[$_GET["strana"]]."\" border=\"0\"><br>";
if(($_GET["strana"])!=0)
 {echo "<a href=\"index.php?strana=".($_GET["strana"]-1)."\"> zpet</a><br>";}
if(count($soubor)>($_GET["strana"]+1)) 
 {echo "<a href=\"index.php?strana=".($_GET["strana"]+1)."\"> dalsi</a><br>";}
?>

Zpět do poradny Odpovědět na původní otázku Nahoru