Autor Zpráva
Janča38
Profil *
chtěla bych poprosit o radu s nasledujici věcí... Chtěla bych vytvořit jednoduchou fotogalerii s možností výběru fotky přes <select> a zároveň s tlačítky pro tlačítka "Další fotka" a "Předchozí fotka". Povedlo se mi udělat ten formulář, kterým vyvolám fotku. Ale jsem bezradná, co se týče těch navigačních tlačítek pro výběr další a předchozí fotky, aby si skript pamatoval zobrazenou fotku, ať už byla zvolena přes <select> nebo dále pak přes tlačítko další-předchozí. Zde je kod. Děkuji moc za rady...

<?php
$galerie = array(-1=>
"Jihlava",
"Brno",
"Český ráj",
"Praha",
"Olomouc",
"Šumava",
"Ostrov");
?>
<link href="styl.css" rel="stylesheet" type="text/css">
<body>
<div id="hlavni">
<div id="menu"> Přejít na stránku:
<form method="POST" action="<?echo $_SERVER["PHP_SELF"]?>">
<?
$nahled=$_POST["fotka"];
echo "<SELECT name=\"fotka\">\n";
for ($i=-1;$i<=count($galerie)-2;$i++) if ($nahled == $i) {
echo "\t<OPTION VALUE=\"$i\" selected=\"selected\">".$galerie[$i]."</OPTION>\n";}
else {echo "\t<OPTION VALUE=\"$i\">".$galerie[$i]."</OPTION>\n"; }
echo "</SELECT>\n"; ?>

<br><br>
<input name="odeslat" value="Odeslat" type="submit">
</form>
<br><br><br>
</div>
<?php
if ((empty ($_POST["odeslat"]))) {
$obrazek="fotky/1.jpg";
}
else $obrazek="fotky/".$_POST["fotka"].".jpg";
echo ("
<div id=\"obsah\"><img src=\"$obrazek.\" alt=\"Titulka\" title=\"galerie\">");
?>
</div>
AM_
Profil
Takže za prvé,
else $obrazek="fotky/".$_POST["fotka"].".jpg";
tady si koleduješ o XSRF útok; měla bys ošetřit, aby se takto daly zobrazit pouze fotky z daného adresáře. třeba:
$fotka = preg_replace('/[\\?\\/\\\\]/', '', $_POST['fotka']);
$obrazek = "fotky/$fotka.jpg";

$obrazek="fotky/1.jpg";
Vždycky se bude první fotka jmenovat takto? Pokud máš prostě fotky očíslované, není problém navigační tlačítka udělat jako odkazy na:
($fotka+1).jpg
($fotka-1).jpg
jinak můžeš využívat funkce glob(), která vrací všechny soubory podle určitého vzorce, tedy třeba glob("fotky/*.jpg").

Dále by mě zajímalo, proč pole galerií indexuješ od mínus jedné - možná to funguje, ale je to takové dost divné a nevidím důvod to dělat, člověk by se měl v programování držet nějakých konvencí
Janča38
Profil *
nevím, jak mám udělat odkaz na další a předchozí fotku. jestli pomocí <a href> nebo pomocí dalšího formuláře.
jak pomocí a href dosáhnu toho, aby se nahrála stránka s fotkou+1 ?Protože do a href dám <a href="index.php">, ale jak tady předám tu proměnnou ? S tímhle si fakt nevím rady.
Fotky budou číslovány 1-xxx. A s tou -1 ani nevím, asi jsem to viděla někde na netu :-)
Kajman_
Profil *
Výsledný odkaz by mohl vypadat např.
<a href="index.php?fotka=5">


Číslo pak nebude v $_POST ale v $_GET['fotka'].

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: