sql >> Database >  >> RDS >> Mysql

Gebruik PHP en MySQL om afbeeldingen aan een galerij toe te voegen

Je hebt een MySQL-tabel nodig met de informatie over de afbeelding en de bestandsnaam van de afbeelding:

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)
)

En je zult een formulier voor het uploaden van afbeeldingen moeten maken, zoiets als dit:

<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>

En een PHP-script om de geüploade bestanden af ​​te handelen en database-items toe te voegen:

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!";
}
?>

Merk op dat dit script niet veilig is, het zou mensen in staat stellen om bijvoorbeeld .php-bestanden naar de server te uploaden. Zoiets als dit is nodig:

$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");
}

Nu op de galerijpagina wilt u door de afbeeldingen in de database bladeren.

<?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
}
?>

Houd er rekening mee dat het uploadformulier beveiligd moet worden en alleen beschikbaar is voor de juiste personen. Je wilt niet dat spammers willekeurige bestanden naar je server uploaden.




  1. Hoe een nieuwe gebruiker abonneren op meldingen?

  2. PL/SQL:hoe vraag ik gebruikersinvoer in een procedure?

  3. EF Core GroupBy met Select Distinct Count

  4. ORA-00972 identifier is te lang alias kolomnaam