sql >> Databáze >  >> RDS >> Mysql

K přidání obrázků do galerie použijte PHP a MySQL

Budete potřebovat tabulku MySQL obsahující informace o obrázku a název souboru obrázku:

CREATE TABLE images (
    id int(3) not null auto_increment,
    data_type varchar(128) not null,
    title varchar(256) not null,
    file_name varchar(64) not null,
    primary key(id)
)

A budete muset vytvořit formulář pro nahrávání obrázků, něco takového:

<form enctype="multipart/form-data" action="uploader.php" method="POST">
    Data type: <input type="text" name="dataType"><br>
    Title: <input type="text" name="title"><br>
    Image to upload: <input type="file" name="image"><br>
    <input type="submit" value="Upload">
</form>

A PHP skript pro zpracování nahraných souborů a přidání položek databáze:

uploader.php

<?php
$dataType = mysql_real_escape_string($_POST["dataType"]);
$title = mysql_real_escape_string($_POST["title"]);
$fileName = basename($_FILES["image"]["name"]);
$target_path = "images/gallery/".$fileName);
if (file_exists($target_path))
{
    echo "An image with that file name already exists.";
}
elseif (move_uploaded_file($_FILES["image"]["tmp_name"], $target_path))
{
    // The file is in the images/gallery folder. Insert record into database by
    // executing the following query:
    // INSERT INTO images
    // (data_type, title, file_name) VALUES('$dataType','$title','$fileName')
    echo "The image was successfully uploaded and added to the gallery :)";
}
else
{
    echo "There was an error uploading the file, please try again!";
}
?>

Všimněte si, že tento skript není bezpečný, umožnil by lidem nahrávat na server například soubory .php. Něco takového bude nutné:

$allowed_extensions = array("jpg","jpeg","png","gif");
$extension = pathinfo($fileName, PATHINFO_EXTENSION);
if (!in_array($extension,$allowed_extensions))
{
    die("Only these file types are allowed: jpg, png, gif");
}

Nyní na stránce galerie budete chtít procházet obrázky v databázi.

<?php
$images = mysql_query("SELECT * FROM images");
while ($image=mysql_fetch_assoc($images))
{
    ?>
    <li data-id="id-<?=$image["id"] ?>" data-type="<?=$image["data_type"] ?>">
    <div class="column grid_3">
    <a class="fancybox" rel="<?=$image["data_type"] ?>" href="images/gallery/<?=$image["file_name"] ?>" title="<?=$image["title"] ?>">
    <img src="images/gallery/<?=$image["file_name"] ?>" alt="<?=$image["title"] ?>" class="max-img-border"></a>
    <h5><?=$image["title"] ?></h5>
    </div>  
    </li>
    <?php
}
?>

Vezměte prosím na vědomí, že formulář pro nahrávání bude muset být chráněn a dostupný pouze správným lidem. Nechcete, aby spameři nahrávali náhodné soubory na váš server.




  1. Spotřeba webových služeb z Oracle PL/SQL

  2. Sequelize:Rodič s alespoň jedním dítětem

  3. Jak propojit databázi Accessu s SQL Serverem v Accessu 2016

  4. MySQL - Nastavte výchozí hodnotu pro pole jako funkci zřetězení řetězců