Autor Zpráva
patiseq
Profil *
<?
$pripona = pathinfo($file);
$adresar = 'foto';
$vypis = opendir($adresar);
while (false!==($file = readdir($vypis)))
{ 
if ($file != "." && $file != "..")
{ echo "<a href=".$adresar."/".$file." title="zde" class='thickbox' rel='ngg-images-3'><img src=".$adresar."/".$file." title="zde" height='59' width='92'></a>\n \n"; } 
}
closedir($vypis);
?>
toto je můj kód na zobrazení mé foto galerie prosím o pomoc aby tam kde je: zde byl název souboru bez koncovky
předem děkuji za pomoc

Moderátor Petr ZZZ: Titulek „jsem začátečník“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
Tori
Profil
Název souboru z kompletní cesty získáte např. funkcí basename. Pokud mají všechny soubory stejnou koncovku, zadejte ji jako druhý parametr. Pokud různé koncovky, musíte odseknout část řetězce za poslední tečkou (viz strrpos, substr).
Mimochodem v kódu máte syntaktickou chybu - okolo toho zde mají být apostrofy (anebo uvozovky escapujte).
patiseq
Profil *
to vím to jsem vymazal aby ste věděli kam stím
juriad
Profil
jméno souboru s koncovkou máš v $file, můžeš použít funkci pathinfo, nebo si pročti tamější komentáře
title='".pathinfo($file, PATHINFO_FILENAME)."'
patiseq
Profil *
děkuji za pomoc funguje mi to ještě mám co dohánět mockrát děkuji


a ještě jeden dotaz jak udělat aby mi to načítalo obrázky i s mezerou?? napr.: nazev obrazku.jpg
Tori
Profil
patiseq:
a) při výpise názvů souborů je ošetřit funkcí rawurlencode, nebo
b) už při ukládání se postarat, aby názvy souborů neobsahovaly znaky s diakritikou, mezery, interpunkci atd. (buď nahradit např.podtržítkem, nebo vyhodit úplně).
patiseq
Profil *
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<title>Deník</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<link rel='stylesheet' id='NextGEN-css'  href='http://www.killingfloorthegame.com/wp-content/plugins/nextgen-gallery/css/Black_Minimalism.css?ver=1.0.0' type='text/css' media='screen' />
<link rel='stylesheet' id='thickbox-css'  href='http://www.killingfloorthegame.com/wp-includes/js/thickbox/thickbox.css?ver=20090514' type='text/css' media='all' />
<link rel='stylesheet' id='sociable-front-css-css'  href='http://www.killingfloorthegame.com/wp-content/plugins/sociable/sociable.css?ver=3.0.4' type='text/css' media='all' />
<script type='text/javascript' src='http://www.killingfloorthegame.com/wp-includes/js/jquery/jquery.js?ver=1.4.2'></script>
<script type='text/javascript' src='http://www.killingfloorthegame.com/wp-includes/js/swfobject.js?ver=2.2'></script>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.killingfloorthegame.com/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.killingfloorthegame.com/wp-includes/wlwmanifest.xml" /> 
<link rel='index' title='Killing Floor Co-Op Survival Horror' href='http://www.killingfloorthegame.com/' />
</head>
<body>
<script>
function Show_Hide(elemid,btnid)
{
  var elem = document.getElementById(elemid); //Načtení elementu s obsahem navíc
  var bttn = document.getElementById(btnid); //Načtení elementu pro ovládání (Více / Méně)
  elem.style.display = (elem.style.display=="none") ? "block" : "none"; //Pokud je prvek skryt (display:none), nastaví se 'block', v opačném případě 'none'
  bttn.innerHTML = (elem.style.display=="none") ? "Zobrazit nahrání obrázku" : "Skrýt nahrání obrázku"; //Pokud je předchozí prvek skryt, text na ovládání (<a></a> se nastaví na 'Více...', jinak 'Méně...'
}
</script>
<center>
<div id="header">
  <h1>Zuzky a Patrika deníček</h1>
</div>
<div id="col2">
<center>
<?
$adresar = 'foto';
$vypis = opendir($adresar);
while (false!==($file = readdir($vypis)))
{ 
if ($file != "." && $file != "..")
{ echo "<a href=".$adresar."/".$file." title=".$file." class='thickbox' rel='ngg-images-3'><img src=".$adresar."/".$file." title="zde popis obrázku" height='59' width='92'></a>\n \n"; } 
}
closedir($vypis);
fclose($soubor);
?>
</center>
<hr size="1" noshade> 
<form action="javascript:void(0);">
<button onclick="Show_Hide('vice','ovladani');" id="ovladani">Zobrazit formulář</button>
</form>
<div id="vice" style="display:none;">
Vyberte souboru:
<table border="0">
<script type="text/javascript">
function odeslat(form)
{
var x=500; var y=260;
aa = window.open('', 'upload', 'menubar=0,width=' + x + ',height=' + y);
return true
}
</script>
<form action="upload.php" method="post" enctype="multipart/form-data" onSubmit="return odeslat(this);" target="upload">
<tr><td colspan="2" align="center"><font color="red">Uveď popis fotky bez diakritiky (háčků, čárek)</font></td></tr>
<tr><td>Popis obrázku: </td><td><input type="text" name="nazev"></td><td>Max. znaků: 25</td></tr>
<tr><td colspan="2" align="center"><input type="file" name="soubor" />  </td></tr>
<input type="hidden" name="upload" value="ok" /> 
<tr><td colspan="2" align="center"><button name="nahraj" value="nahraj">Nahraj</button></td></tr>
</form>   
</table>
</div>
<br><br>
</div>
<div id="col1">
  <div id="navcontainer">
      <h2>Navigace</h2>
    <ul>
<li><a href="uvod.php">Úvodní strana</a></li>
<li><a href="denik.php">Deník</a></li>
<li><a href="sms.php">Sms</a></li>
<li><a href="foto.php">Fotogalerie</a></li>
<li><a href="odhlaseni.php">Odhlásit</a></li>
    </ul>
      </div>
</div></center>
<div id="footer">
 <script type='text/javascript'> 
/* <![CDATA[ */
var thickboxL10n = {
    next: "Dal&scaron;&iacute; &gt;",
    prev: "&lt; Předchoz&iacute;",
    image: "Obr&aacute;zek",
    of: "z",
    close: "Zavř&iacute;t",
    noiframes: "This feature requires inline frames. You have iframes disabled or your browser does not support them."
};
try{convertEntities(thickboxL10n);}catch(e){};
/* ]]> */
</script>
<script type='text/javascript' src='http://www.killingfloorthegame.com/wp-includes/js/thickbox/thickbox.js?ver=3.1-20100407'></script>
 
<script type="text/javascript">tb_pathToImage = "http://www.killingfloorthegame.com/wp-includes/js/thickbox/loadingAnimation.gif";tb_closeImage = "http://www.killingfloorthegame.com/wp-includes/js/thickbox/tb-close.png";</script>

</div><!-- Closes footer -->
 
</div><!-- Closes wrapper -->
<script type="text/javascript"> 
//<![CDATA[
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
//]]>
</script>
<script type="text/javascript"> 
//<![CDATA[
try {
var pageTracker = _gat._getTracker("UA-384258-4");
pageTracker._trackPageview();
} catch(err) {}
//]]>
</script> 
<?php include('m.php')?>
</div>
</body>
</html>
Napsal jsem svůj problém špatně takhle vypadá soubor foto.php a chci aby se mi nahrál soubor i s vlastním popisem a aby se mi popis zobrazoval jen při otevření obrázku v galerii
a zde je soubor upload.php
<html>
<head>
<title>upload</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1250" />
</head>
<body bgcolor="black" text="white">
<center>
<?php
session_start();
if ($_SESSION['authuser'] != 1) {
echo "<p>Nemáte oprávnění k prohlížení této stránky</p>\n";
echo "<a href='./index.php'>Přihlásit se znova</a>";
exit();
}
?>
<?php
$error = false;

if($nazev==NULL)
{
echo "<font color='red'>nevyplněný název</font><br>";
$error = true;
}

if($error!=true)
{
if( is_uploaded_file($_FILES['soubor']['tmp_name']) && ($_POST['upload'] == "ok") )  
if( move_uploaded_file($_FILES['soubor']['tmp_name'], "foto/"$_FILES['soubor']['name']) )
echo "Soubor <strong>" $_FILES['soubor']['name'] "</strong> byl úspěšně nahrán na server.";  
else  
echo "Při uploadu došlo k chybě.";      
} 
?>
<br><form NAME="winform"><INPUT TYPE="button" VALUE="Zavřít okno"
onClick="window.close();"></form> </center>
<br> 
</body>
</html>
Tori
Profil
Takže potřebujete někam ukládat popisy k jednotlivým fotkám.
Databáze je flexibilnější, použila bych spíš ji.
Zápis do souboru (textový nebo třeba .ini formát) je jednodušší napsat, ale zkomplikuje se další rozšíření funkčnosti (např. když budete chtít k fotkám přidávat tagy a pak vyhledat fotky podle tagu). Šlo by použít i xml soubor, ale nemám zkušenosti s řazením dat z něj získaných, takže v tom neporadím.
patiseq
Profil *
dobrý by bylo udělat nějakej soubor třeba popis.txt a do toho psát ty popisky a i aby se přiřadili k jednotlivým fotografiím prosím postup vůbec nevím jak se tohle dělá
Tori
Profil
Můžete použít třeba stejnou syntax, jako mají .ini soubory:
popis["nazev_souboru1.jpg"] = "popis prvni fotky"
popis["nazev-jineho-souboru.jpg"] = "popis druhe fotky"
Když to uložíte do souboru a načtete ho funkcí parse_ini_file, vrátí vám takovéto pole:
array(
  "nazev_souboru1.jpg" => "popis prvni fotky",
  "nazev-jineho-souboru.jpg" => 'popis druhe fotky',
);
Pak už jen zkoušíte, jestli název aktuální fotky existuje v tom získaném poli jako klíč, a pokud ano, zobrazíte popis.
patiseq
Profil *
a když to chci přes formulář aby se popis vkládal do
<input type="text" value="">
a v nahrávání fotky ulozit ten text do toho:
popis["$_FILES['soubor']['name']"] = "sem dostat ten popis z formuláře??"



a jestli byste mi to mohl napsat i tu zkoušku v jednom jak by to mělo být pod sebou prosím pěkně
Tori
Profil
Popisy se ukládají do souboru:
$text = 'popis["'.addslashes($_FILES['soubor']['name']).'"] = "'.addslashes($_POST['popis-z-formuláře']).'"'."\n";
file_put_contents("název souboru s popisy", $text, FILE_APPEND | LOCK_EX);
Doplňte si název toho formulářového pole, kam se píše popis obrázku + název souboru, kam to chcete ukládat. A zkontrolujte, aby ten soubor mohl měnit i skript, nejen vy (oprávnění rw pro skupinu uživatelů, nebo možná pro všechny - teď si nejsem jistá).

edit: doplněno escapování vstupů
patiseq
Profil *
a jak doplňit do galerie aby se to tam zobrazilo
<a href=".$adresar."/".$file." title='co vlozit sem??' class='thickbox' rel='ngg-images-3'><img src=".$adresar."/".$file." title=".$file." height='59' width='92'></a>
PatiseQ
Profil
Moderátor Davex: Přesunuto z duplicitního tématu „popis k fotogalerii“.

soubor s formulářem a zobrazení všech fotek v adresáři
<?
$adresar = 'foto';
$vypis = opendir($adresar);
while (false!==($file = readdir($vypis)))
{ 
if ($file != "." && $file != "..")
{ echo "<a href=".$adresar."/".$file." title='sem dostat aby to psalo k jednotlivým názvům fotky daný popis' class='thickbox' rel='ngg-images-3'><img src=".$adresar."/".$file." title=".$file." height='10%' width='10%'></a>\n \n"; } 
}
closedir($vypis);?>
</center>
<hr size="1" noshade> 
Vyberte souboru:
<table border="0">
<form action="upload.php" method="post" enctype="multipart/form-data" onSubmit="return odeslat(this);" target="upload">
<tr><td colspan="3" align="center"><font color="red">Uveď popis fotky bez diakritiky (háčků, čárek)</font></td></tr>
<tr><td>Popis obrázku: </td><td><input type="text" name="nazev" value="popisy"></td><td><font color="red">Jedno slovný popis</font></td></tr>
<tr><td colspan="3" align="center"><input type="file" name="soubor" accept="image/*"/>  </td></tr>
<input type="hidden" name="upload" value="ok" /> 
<tr><td colspan="3" align="center"><button name="nahraj" value="nahraj">Nahraj</button></td></tr>
</form> 
<tr><td colspan="3" align="center"><button onClick="javascript:location.reload(true)">Po nahrání dej zavřít a klikne zde</button></td></tr>  
</table>
soubor pro upload fotky a ulozeni popisu:
<?php 
$nazev = $_POST['nazev'];
$error = false;

if($nazev==NULL)
{
echo "<font color='red'>nevyplněný název</font><br>";
$error = false;
}

if($error!=true)
{                              
if( is_uploaded_file($_FILES['soubor']['tmp_name']) && ($_POST['upload'] == "ok") )
if( move_uploaded_file($_FILES['soubor']['tmp_name'], "./foto/".$_FILES['soubor']['name']) )
echo "Soubor <strong>" .$_FILES['soubor']['name']. "</strong> byl úspěšně nahrán na server.<br>";  
else  
echo "Při uploadu došlo k chybě.";
$text = 'popis["'.addslashes($_FILES['soubor']['name']).'"] = "'.addslashes($_POST['nazev']).'"'."\n";
if( file_put_contents("popis.ini", $text, FILE_APPEND | LOCK_EX))
echo "Popis byl úspěšně přidán.<br>";
else
echo "Nepovedl se uložit popis.";       
}
?>
a v souboru popis.ini je uspořádání takhle
popis["fotka1.jpg"] = "popis1"
popis["fotka2.jpg"] = "popis2""
a potřebuju aby v té fotogalerii zobrazili ty popisy ke kterým jsou dané fotky
Prosím poraďte mi mám z toho hlavu v kýblu
Tori
Profil
Kód je zkopírovaný ze smazaného duplicitního vlákna popis k fotogalerii, doplněné kousky označeny.
<?
$popisy = parse_ini_file("popis.ini");
$adresar = 'foto';
$vypis = opendir($adresar);
while (false!==($file = readdir($vypis)))
{ 
if ($file != "." && $file != "..")
{ 
  $titulek = (isset($popisy[$file]) ? $popisy[$file] : 'Popis fotky nebyl zadaný.');
  echo "<a href=".$adresar."/".$file." title='$titulek' class='thickbox' rel='ngg-images-3'><img src=".$adresar."/".$file." title=".$file." height='10%' width='10%'></a>\n \n"; } 
}
closedir($vypis);?>
unset($popisy);
</center> ... atd.
PatiseQ
Profil
furt to píše že nebyl zadán žádný popis ikdyž v tom souboru je??


Už jsem na to přišel měl jsem blbej formát v souboru popis.ini děkuju mockrát
nefunkční tvar:
popis["nazev_souboru1.jpg"] = "popis prvni fotky"
funkční tvar:
nazev-souboru1.jpg = "popis prvni fotky"
Tori
Profil
Trochu jsem upravila původní verzi, formulář i ukládání je v jednom souboru, HTML zjednodušeno. http://pastebin.com/A43Gtmfz
Z názvů nahrávaných souborů vyhazuji znaky s diakritikou, mezery apod. - to by šlo změnit, aby se místo toho převádělo vše např. na znaky bez diakritiky a pomlčky. Taky by se dalo doplnit ukládání náhledů k obrázkům.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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