Služby |
• Guestbook kniha návštěv
pro každého • MailForm zasílání
výsledků formulářů na e-mail
|
|
|
Veřejná galerie obrázků v
PHP
Postup, jak si udělat jednoduchou galerii (např. pro obrázky),
tvořenou návštevníky Vašich stránek, pomocí PHP a
MySQL
Tato "galerie" může sloužit k nahrávání souborů, Vámi předem
určeného typu, např. od uživatelů navštěvujících Vaše stránky.
Postup je jednoduchý - stačí pomocí INPUT pole vybrat soubor z HDD a
pak již jen odeslat. Pokud soubor bude vyhovovat stanoveným
podmínkám (MIME typ souboru, velikost, rozlišení, atp.), nahraje se
na server a automaticky se zařadí do katalogu zpracovaném v
databázi.
Nejprve si vytvoříme databázi (zde se jmenuje "databaze"), ve
které vytvoříme tabulku:
db.php
<?
$s=@mysql_connect("mysql.server.cz","databaze","heslo"); if
(!$s) { die("<b>ERR (".mysql_errno()."):</b>
".mysql_error()."<br>"); }
// připojení k
databázi
$r=@mysql_select_db("databaze",$s); if
(!$r) { die("<b>ERR (".mysql_errno()."):</b>
".mysql_error()."<br>"); }
$r=@mysql_query("CREATE
TABLE Obrazky (Id int, Popis text, Info text, Datum text, URL
text, sirka smallint, vyska smallint)"); if
(!$r) { die("<b>ERR (".mysql_errno()."):</b>
".mysql_error()."<br>"); } ?>
|
Poté si vytvoříme soubor, sloužící pro vyběr souboru k
nahrání:
image.html
<html> <head> <title>Upload
obrázku do galerie</title>
</head> <body> <table width="50%">
<tr> <form action="iupload.php" method="post"
enctype="multipart/form-data"> <td>Název
obrázku:</td> <td align="right"><input
type=text name=popis></td> </tr>
<tr> <td>Info o obrázku:</td>
<td align="right"><input type=text
name=info></td> </tr> <tr>
<td>Soubor:</td> <td
align="right"><input type=file
name=imageURL></td> </tr> <tr>
<td colspan=2 align="right"><input type=submit
value="Odesrat" name=submit></td> </form>
</tr> </table> </body>
</html>
|
Dále vytvoříme soubor, který zpracuje formulář a posoudí, jestli
je soubor vyhovující a zda je vyplněn jeho název a info. Pokud ano,
přida se do databáze, spolu s dalšími údaji a také se nahraje na
server. V opačném případě se objeví chybové hlášení a nahrátí
souboru neproběhne. vysvětlení: $popis a $info -
proměnné, které byly zadány v formuláři (popis a info o obrázku)
$imageURL_size<50000 - maximální velikost souboru (zde je
50kB) $imageURL_type - posoudí, zda soubor vyhovuje danému MIME
typu souboru (tady jsou to .jpg a .gif soubory)
iupload.php
<? if
($popis!="" && $info!="" &&
$imageURL_size<50000 &&
$imageURL_type=="image/pjpeg" ||
$imageURL_type=="image/gif") { $s=@mysql_connect("mysql.server.cz","databaze","heslo");
// MySQL server, databáze a heslo, stejné jako v souboru
db.php if (!$s) { die("<b>ERR
(".mysql_errno()."):</b> ".mysql_error()."<br>");
} // pokud dojde k chybě, vypíše se chybové hlášení
$r=@mysql_select_db("databaze"); if (!$r)
{ die("<b>ERR (".mysql_errno()."):</b>
".mysql_error()."<br>"); } // výběr databáze +
ošetření případné chyby $r=@mysql_query("SELECT Max(Id) AS
Pocet FROM Obrazky"); if (!$r) { die("<b>ERR
(".mysql_errno()."):</b> ".mysql_error()."<br>");
} //vybere nejvyšší ID již nahraných obrázků pro určení ID
stávajícího if ($imageURL_type=="image/pjpeg")
{ $ext = ".jpg"; } elseif
($imageURL_type=="image/gif") { $ext = ".gif";
} else { echo "Soubor nevyhovuje";
exit; } //souboru se automaticky přiřadí přípona, v
případě nevyhovujícího typu se poces ukončí
$vys=mysql_fetch_array($r); // tyto hodnoty budou zapsány
do DB $more=$vys["Pocet"]+1; // ID, jako budoucí název
soubou se zvětší o 1 $URL="$more" . "$ext"; // skutečné
jméno souboru (jméno +
přípona) $size=GetImageSize($imageURL); // velikost obrázku
$sirka=$size[0]; $vyska=$size[1];
$r=@mysql_query("INSERT INTO Obrazky VALUES ($more,
'$popis', '$info', '".Date("d.m.Y")."', '$URL', '$sirka',
'$vyska')"); if (!$r) { die("<b>ERR
(".mysql_errno()."):</b> ".mysql_error()."<br>");
} // hodnoty byly vloženy do DB, pokud ne, vypíše chybové
hlášení Copy($imageURL,"obrazky/$URL"); echo "Obrázek byl
úspěšně nahrán."; } // fyzicky nahraje soubor na
server, do námi zadaného adresáře "obrazky" else
{ echo "Nenapsal si popis, info obrázku, soubor ve
špatném formátu nebo je moc velký (max 50 kB)!"; } //
pokud nebyly uznány vlastnosti obrázku platnými, vypíše se
tento text ?> |
A teď už jen stačí vlastní výpis souborů. Do souboru přidáme
javascript pro otevírání souborů v novém okně, podle jejich
rozlišení.
gallery.php
<HTML> <HEAD> <TITLE>Galerie
obrázků</TITLE> <script
language="JavaScript"> <!-- function
image($url,$w,$h) {
window.open($url,"image","menubar=0,toolbar=0,location=0,directories=0,status=0, resizable=0,scrollbars=0,width="+($w+20)+",height="+($h+20))
} //-->
</script> </HEAD> <BODY>
<H1> VI(vi)S(ect)IONS</H1> <?
$r=@mysql_query("SELECT Count(*) AS Pocet FROM Obrazky");
if (!$r) { die("<b>ERR
(".mysql_errno()."):</b>
".mysql_error()."<br></body></html>");
} // vybere všechny obrázky + případné ošetření chyby
$vys=mysql_fetch_array($r); echo "Počet obrázků:
".$vys["Pocet"]."<br>"; echo "(Neotvírat v novém
okně!)<br><br>"; $r=@mysql_query("SELECT * FROM
Obrazky ORDER BY Id DESC"); if
(!$r) { die("<b>ERR (".mysql_errno()."):</b>
".mysql_error()."<br></body></html>");
} // vypíše počet obrázků v DB echo "<table
width=\"100%\">"; echo "<tr>"; echo "<td
width=\"20%\"><b>Popis</b></td>";
echo "<td
width=\"60%\"><b>Info</b></td>"; echo
"<td
width=\"20%\"><b>Přidáno</b></td>";
echo "</tr>"; while ($vys=mysql_fetch_array($r)) {
echo "<tr>"; echo "<td width=\"20%\"><a
href=\"javascript:image('obrazky/".$vys["URL"]."', ".$vys["sirka"].",".$vys["vyska"].")\">".$vys["Popis"]."</a></td>";
echo "<td
width=\"60%\">".$vys["Info"]."</td>"; echo "<td
width=\"20%\">".$vys["Datum"]."</td>"; //
jmenovitý výpis souborů a jejich informací, tak jak byly
zadány echo "</tr>"; } echo "</table>";
?> </BODY> </HTML>
|
Teď už jen stačí jednotlivé soubory k sobě podle vlastního
uvážení propojit, upravit vzhled a je to.
pozn: Pokud nebude existovat adresář určený pro nahrávání
souborů, soubor se nenahraje. V našem případě se tento adresář
jmenuje "obrazky", ale lze ho samozřejmě přejmenovat. Jen pak
nesmíme jeho název nikde opomenout: řádek
"Copy($imageURL,"obrazky/$URL");" v souboru iupload.php
řádek " echo "<td width=\"20%\"><a
href=\"javascript:image('obrazky/".$vys["URL"]."',".$vys["sirka"].",".$vys["vyska"].")\">".$vys["Popis"]."</a></td>";
v souboru gallery.php
Autor: Jiří Suchan, yed@seznam.cz, informace a seznam
článků
• Chyba v
galerii, Lukáš, 11.12.2002 11:01:35 •
Taky se mi
zda, mysql, 11.12.2002 20:45:26 • sorry,
mysql, 11.12.2002 20:47:10 • Re:
sorry, Yed_, 11.12.2002 21:26:13 • Docela
zajimaly ale ta DB ..., Podhy, 13.12.2002
14:02:53 • Kde
jsou?, Kato, 13.12.2002 18:33:14
Přidat
komentář
| Poslední články ze stejné
rubriky |
• Systém zasílání
novinek na e-mail v PHP (2.) • Systém zasílání
novinek na e-mail v PHP (1.) • Grafické počítadlo
přístupů v PHP • Zaheslování stránky
za použití funkce MD5 v PHP • Hodnocení
stránky/článku
(2.)
| |
Provozovatel:
Poslední články |
|
|
|
Hodnocení článku |
|
Zatím
nehodnoceno |
|
Nový redaktor |
Chcete psát články pro PC Svět či
se stát redaktorem?
Články honorovány! Informace zde
|
|
|