» »

Prikaz slik iz mysql baze

Prikaz slik iz mysql baze

roky99 ::

Živjo!

Imam kodo za nalaganje slik v mysql, vendar se povavi problem pri prikazovanju slik. Naslednja koda mi pokaže le povezave do velikih slik, jaz pa bi rad, da bi mi prokazoval manjše slikce na katere bi se dalo kliknit za povečavo (wnb gallery).

<?php
$db_host = 'localhost'; // don't forget to change 
$db_user = 'root'; 
$db_pwd = '';

$database = 'slike';
$table = 'ae_gallery';
// use the same name as SQL table

$password = '123';
// simple upload restriction,
// to disallow uploading to everyone


if (!mysql_connect($db_host, $db_user, $db_pwd))
    die("Ne morem se povezati z bazo");

if (!mysql_select_db($database))
    die("Ne morem izbrati database-a");

// This function makes usage of
// $_GET, $_POST, etc... variables
// completly safe in SQL queries
function sql_safe($s)
{
    if (get_magic_quotes_gpc())
        $s = stripslashes($s);

    return mysql_real_escape_string($s);
}

// If user pressed submit in one of the forms
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // cleaning title field
    $title = trim(sql_safe($_POST['title']));

    if ($title == '') // if title is not set
        $title = '(brez imena)';// use (empty title) string

    if ($_POST['password'] != $password)  // cheking passwors
        $msg = 'Error: Narobno geslo';
    else
    {
        if (isset($_FILES['photo']))
        {
            @list(, , $imtype, ) = getimagesize($_FILES['photo']['tmp_name']);
            // Get image type.
            // We use @ to omit errors

            if ($imtype == 3) // cheking image type
                $ext="png";   // to use it later in HTTP headers
            elseif ($imtype == 2)
                $ext="jpeg";
            elseif ($imtype == 1)
                $ext="gif";
            else
                $msg = 'Error: neznani format slike';

            if (!isset($msg)) // If there was no error
            {
                $data = file_get_contents($_FILES['photo']['tmp_name']);
                $data = mysql_real_escape_string($data);
                // Preparing data to be used in MySQL query

                mysql_query("INSERT INTO {$table}
                                SET ext='$ext', title='$title',
                                    data='$data'");

                $msg = 'Uspeh: slika naložena';
            }
        }
        elseif (isset($_GET['title']))      // isset(..title) needed
            $msg = 'Error: slika ni bila naložena';// to make sure we've using
                                            // upload form, not form
                                            // for deletion


        if (isset($_POST['del'])) // If used selected some photo to delete
        {                         // in 'uploaded images form';
            $id = intval($_POST['del']);
            mysql_query("DELETE FROM {$table} WHERE id=$id");
            $msg = 'Slika izbrisana';
        }
    }
}
elseif (isset($_GET['show']))
{
    $id = intval($_GET['show']);

    $result = mysql_query("SELECT ext, UNIX_TIMESTAMP(image_time), data
                             FROM {$table}
                            WHERE id=$id LIMIT 1");

    if (mysql_num_rows($result) == 0)
        die('ni slik');

    list($ext, $image_time, $data) = mysql_fetch_row($result);

    $send_304 = false;
    if (php_sapi_name() == 'apache') {
        // if our web server is apache
        // we get check HTTP
        // If-Modified-Since header
        // and do not send image
        // if there is a cached version

        $ar = apache_request_headers();
        if (isset($ar['If-Modified-Since']) && // If-Modified-Since should exists
            ($ar['If-Modified-Since'] != '') && // not empty
            (strtotime($ar['If-Modified-Since']) >= $image_time)) // and grater than
            $send_304 = true;                                     // image_time
    }


    if ($send_304)
    {
        // Sending 304 response to browser
        // "Browser, your cached version of image is OK
        // we're not sending anything new to you"
        header('Nazadnje spremenjeno: '.gmdate('D, d M Y H:i:s', $ts).' GMT', true, 304);

        exit(); // bye-bye
    }

    // outputing Last-Modified header
    header('Nazadnje spremenjeno: '.gmdate('D, d M Y H:i:s', $image_time).' GMT',
            true, 200);

    // Set expiration time +1 year
    // We do not have any photo re-uploading
    // so, browser may cache this photo for quite a long time
    header('Poteče: '.gmdate('D, d M Y H:i:s',  $image_time + 86400*365).' GMT',
            true, 200);

    // outputing HTTP headers
    header('Content-Length: '.strlen($data));
    header("Content-type: image/{$ext}");

    // outputing image
    echo $data;
    exit();
}
?>
<HTML>
<HEAD>
<TITLE>Galerija</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<META name="Author" content="Rok Gorenjc">
<META NAME ="description" CONTENT="Računalništvto rok gorenjc krmelj ovca ovcka splet spletne strani novice">
<META NAME="keywords" CONTENT="Računalništvto rok gorenjc krmelj ovca ovcka splet spletne strani novice">
<body>
<h1>Galerija</h1>
<h2>Naložene slike:</h2>

<?php
$result = mysql_query("SELECT id, image_time, title FROM {$table} ORDER BY id DESC");
if (mysql_num_rows($result) == 0) // table is empty
    echo '<ul><li>Ni slik</li></ul>';
else
{
    echo '<ul>';
    while(list($id, $image_time, $title) = mysql_fetch_row($result))
    {
        // outputing list
        echo "<li>";
        echo "<a href='{$PHP_SELF}?show={$id}'>{$title}</a> &ndash; ";
        echo "<small>{$image_time}</small></li>";
    }

    echo '</ul>';

}

?>
don't drink and drive, just smoke and fly! ;)
  • spremenil: Primoz ()

krho ::

Sedaj ti bom solil pamet. DO NOT DO THAT.
Slike pašejo na file system. S tem, da jih še sparticioniraš v različne direktorije recimo po max 500 slik v enem...
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

Zgodovina sprememb…

  • spremenil: krho ()

techfreak :) ::

Imaš "neomejeno" bazo ali ti je dolgčas? Nekaj takšnega NI priporočljivo. Upočasnjuje strežnik, predolgo nalaga, ... Shrani v mapo in je.

user4683 ::

Odgovora na original vprašanje ne vem, imam pa komentar na zadnja dva posta..

Odvisno od situacije (in učinkovitosti implementacije)! So določeni primeri, ko je dosti lažje in celo priporočljivo shranit slike v bazo.

Je pa res, da za wannabe galerijo to ni :)

Ice-Heki ::

A tole dejansko deluje?
header('Nazadnje spremenjeno: '.gmdate('D, d M Y H:i:s', $image_time).' GMT', true, 200);

Tistle Nazadnje spremenjeno me malo moti :|

Zgodovina sprememb…

  • spremenil: Primoz ()

techfreak :) ::

Odvisno od situacije (in učinkovitosti implementacije)! So določeni primeri, ko je dosti lažje in celo priporočljivo shranit slike v bazo.

Povej primer.

A tole dejansko deluje?
header('Nazadnje spremenjeno: '.gmdate('D, d M Y H:i:s', $image_time).' GMT', true, 200);

Tistle Nazadnje spremenjeno me malo moti :|

:))

preem ::

agreed - povej primer. Ker tole je res nesmisel.

user4683 ::

Enostavnejša replikacija in arhiviranje podatkov, kontrola nad verzijami dokumentov (ja, tudi slik), transakcije, en mehanizem za varnost podatkov,...
Je pa tudi kak downside - recimo višja cena (dobre in ustrezno velike baze) in slabša hitrost. Čeprav v SQL Serverju 2008 je recimo FILESTREAM tip, ki ima skoraj vse prednosti hranjenja poti do fizične datoteke na disku (hitrost streamanja) + tiste omenjene zgoraj (je pa počasnejši pri pogostejših manjših updateih).

Pač.. uporabiš kar potrebuješ. Baze slik niso samo albumi s počitnic;)

Zgodovina sprememb…

  • spremenil: user4683 ()

preem ::

ja dobro, ne pravim da ni usecasov, ko ne bi bilo uporabno. v večini primerov je pa hranjenje na file sistemu boljša praksa.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[jQuery] Zamenjava sličic pri različnih stanjih miške

Oddelek: Programiranje
111461 (1108) kornilov
»

Branje slik jpg iz MySQL z PHP

Oddelek: Izdelava spletišč
152427 (2045) a-ptuj1
»

[C#] Naključno razporejanje elementov v tabeli

Oddelek: Programiranje
202705 (2386) TheAmunraaa
»

[PHP] branje slike

Oddelek: Programiranje
113234 (3047) matijaz74
»

Pomoč pri nalaganju večih slik naenkrat

Oddelek: Izdelava spletišč
6841 (691) winlins

Več podobnih tem