iReklama  |  PC Svět  |  vyhledávací centrála  |  Diskuzní fórum  |  WWW katalog  |  Guestbook  |  MailForm  |  kontakt: pcsvet@pcsvet.cz - čte si nás 15 čtenářů
 
PC Svět
Hlavní stránka
ASP
Aktuality
Assembler
C,C++
Cracking
Delphi
Diskuze
Grafika
Hardware
Hry a zábava
HTML
Internet
JavaScript
Komunikace
Literatura
Linux
Microsoft Office
Turbo Pascal
Perl
PHP
Software
Tiskové zprávy
Visual Basic
Windows
WWW katalog

Knihovna zdr. kódů

Nabídka skriptů aj.

Homepage autora
Služby
Guestbook
  kniha návštěv pro
  každého
MailForm
  zasílání výsledků
  formulářů na e-mail
Programy
DOS Commander
WinMan
Windows Tools
Informace
O PC Světě
Přehled rubrik
Reklama
Výsledky anket
Přehled novinek
Box s články


ISSN 1213-6042

šéfredaktor
Petr Šťastný
admin@pcsvet.cz

zástupce šéfredaktora
Pavel Rauš
raus@pcsvet.cz

Stránka je optimalizo-
vána pro prohlížeč
Internet Explorer 5.0
při rozlišení 800x600

 © Petr Šťastný 2002
   All rights reserved

PC Svět
ikonka PC Světa



Linux - zdarma a legálně



TOPlist

Vytisknout   Poslat   Komentáře (6)   Přidat komentář

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ů


Komentáře k článku
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:
PES.cz
Poslední články
Domácí kino (2.)
Dva nástroje pro práci s ikonami
Ceny procesorů Intel
Cartman Authoritah
CamStudio
Hodnocení článku
nejlepší <----> nejhorší
    
Zatím nehodnoceno
Informace o článku
Datum 11.12.2002
Čtenářů 432
Autor Jiří Suchan
Rubrika PHP - příklady


Nový redaktor
  Chcete psát články
  pro PC Svět či se
  stát redaktorem?

Články honorovány!

  Informace zde
EInfo
  Chcete být informováni
  o každém novém článku
  na PC Světě?

Zadejte svůj e-mail:

MSN.ATLAS.CZ
Hladat.sk

hlavní stránka  |  vyhledávací centrála  |  Diskuze  |  WWW katalog  |  Guestbook  |  MailForm  |  kontakt: pcsvet@pcsvet.cz

Se svými dotazy či problémy se obracejte na diskuzní fórum, věci týkající se PC Světa směřujte na e-mail pcsvet@pcsvet.cz

Šíření obsahu tohoto serveru nebo jeho části je bez souhlasu redakce zakázáno.
(c) PC Svět 2002 - Všechna práva vyhrazena.