Jump to content

PHP MySQL image gallery


desmond_ckl

Recommended Posts

hello experts ! im new to php script, hope u guys able to help. Thx in advance  :D . I'm following a tutorial from this site: http://www.anyexample.com/programming/php/php_mysql_example__image_gallery_(blob_storage).xml

 

and i run the code, error occur  :'(  (i highlighted line 27) :

Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\testing.php on line 27

 

This is my php script:

<?php

$db_host = 'localhost'; // don't forget to change

$db_user = 'root';

$db_pwd = '123456';

 

 

$database = 'test';

$table = 'ae_gallery';

// use the same name as SQL table

 

$password = '123';

// simple upload restriction,

// to disallow uploading to everyone

 

 

 

////create sql-table

CREATE TABLE 'ae_gallery' (

  'id' int(11) NOT NULL AUTO_INCREMENT,

  'title' varchar(64) character SET utf8 NOT NULL,

  'ext' varchar( 8 ) character SET utf8 NOT NULL,

  'image_time' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  'data' mediumblob NOT NULL,

  PRIMARY KEY  (`id`)

);

 

 

 

 

if (!mysql_connect($db_host, $db_user, $db_pwd))

    die("Can't connect to database");

 

if (!mysql_select_db($ae_gallery))

    die("Can't select database");

 

 

// 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 = '(empty title)';// use (empty title) string

 

    if ($_POST['password'] != $password)  // cheking passwors

        $msg = 'Error: wrong upload password';

    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: unknown file format';

 

            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 = 'Success: image uploaded';

            }

        }

        elseif (isset($_GET['title']))      // isset(..title) needed

            $msg = 'Error: file not loaded';// 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 = 'Photo deleted';

        }

    }

}

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('no image');

 

    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('Last-Modified: '.gmdate('D, d M Y H:i:s', $ts).' GMT', true, 304);

 

        exit(); // bye-bye

    }

 

    // outputing Last-Modified header

    header('Last-Modified: '.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('Expires: '.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>MySQL Image Gallery Example</title>

</head>

<body>

<?php

if (isset($msg)) // this is special section for

                // outputing message

{

?>

<p style="font-weight: bold;"><?=$msg?>

<br>

<a href="<?=$PHP_SELF?>">reload page</a>

<!-- I've added reloading link, because

    refreshing POST queries is not good idea -->

</p>

<?php

}

?>

<h1><i>Image gallery</i></h1>

<h2>Uploaded images:</h2>

<form action="<?=$PHP_SELF?>" method="post">

<!-- This form is used for image deletion -->

 

<?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>No images loaded</li></ul>';

else

{

    echo '<ul>';

    while(list($id, $image_time, $title) = mysql_fetch_row($result))

    {

        // outputing list

        echo "<li><input type='radio' name='del' value='{$id}'>";

        echo "<a href='{$PHP_SELF}?show={$id}'>{$title}</a> – ";

        echo "<small>{$image_time}</small></li>";

    }

 

    echo '</ul>';

 

    echo '<label for="password">Password:</label><br>';

    echo '<input type="password" name="password" id="password"><br><br>';

 

    echo '<input type="submit" value="Delete selected">';

}

?>

 

</form>

<h2>Upload new image:</h2>

<form action="<?=$PHP_SELF?>" method="POST" enctype="multipart/form-data">

<label for="title">Title:</label><br>

<input type="text" name="title" id="title" size="64"><br><br>

 

<label for="photo">Photo:</label><br>

<input type="file" name="photo" id="photo"><br><br>

 

<label for="password">Password:</label><br>

<input type="password" name="password" id="password"><br><br>

 

<input type="submit" value="upload">

</form>

Link to comment
Share on other sites

you're meant to declare the table creation inside of a query, on an active mysql connection.

 

You're #1 trying to create the table before any database connection is established..

 

#2 you're not creating the table within a query, which is why you're getting a string error, you're telling php something it doesn't expect.. try using exactly what you have. inside of a mysql_query call

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.