Kursus ranap PHP: Galeri Imej Mudah

王林
Lepaskan: 2024-08-05 22:08:02
asal
268 orang telah melayarinya

PHP crash course: Simple Image Gallery

Galeri imej berfungsi sepenuhnya dengan keupayaan muat naik menggunakan PHP, HTML, jQuery, AJAX, JSON, Bootstrap, CSS dan MySQL. Projek ini termasuk penyelesaian langkah demi langkah terperinci dengan penjelasan dan dokumentasi kod, menjadikannya tutorial komprehensif untuk pembelajaran.

Topik:php, mysql, blog, ajax, bootstrap, jquery, css, galeri imej, muat naik fail

Penyelesaian Langkah demi Langkah

1.Struktur Direktori

simple-image-gallery/ │ ├── index.html ├── db/ │ └── database.sql ├── src/ │ ├── fetch-image.php │ └── upload.php ├── include/ │ ├── config.sample.php │ └── db.php ├── assets/ │ ├── css/ │ │ └── style.css │ ├── js/ │ │ └── script.js │ └── uploads/ │ │ └── (uploaded images will be stored here) ├── README.md └── .gitignore
Salin selepas log masuk

2.Skema Pangkalan Data

db/database.sql:

CREATE TABLE IF NOT EXISTS `images` ( `id` int(11) NOT NULL AUTO_INCREMENT, `file_name` varchar(255) NOT NULL, `uploaded_on` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Salin selepas log masuk

3.Fail Tatarajah

Tetapan konfigurasi (include/config.sample.php)

Salin selepas log masuk

4.Konfigurasikan Sambungan Pangkalan Data

Mewujudkan sambungan pangkalan data (termasuk/db.php)

 PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ]; // Create a new PDO instance try { $pdo = new PDO($dsn, DB_USER, DB_PASS, $options); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Set error mode to exception } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); // Display error message if connection fails } ?>
Salin selepas log masuk

5. Struktur HTML dan PHP

Struktur HTML (index.html)

     Image Gallery Upload   

Image Gallery


Salin selepas log masuk

6. JavaScript dan AJAX

Pengendalian AJAX (aset/js/script.js)

$(document).ready(function(){ // load gallery on page load loadGallery(); // Form submission for image upload $('#uploadImage').on('submit', function(e){ e.preventDefault(); // Prevent default form submission var file_data = $('#image').prop('files')[0]; var form_data = new FormData(); form_data.append('file', file_data); //hide upload section $('#uploadImage').hide(); $.ajax({ url: 'src/upload.php', // PHP script to process upload type: 'POST', dataType: 'text', // what to expect back from the server cache: false, data: new FormData(this), // Form data for upload processData: false, contentType: false, success: function(response){ let jsonData = JSON.parse(response); if(jsonData.status == 1){ $('#image').val(''); // Clear the file input loadGallery(); // Fetch and display updated images $('#upload-status').html('
'+jsonData.message+'
'); } else { $('#upload-status').html('
'+jsonData.message+'
'); // Display error message } // hide message box autoHide('#upload-status'); //show upload section autoShow('#uploadImage'); } }); }); }); // Function to load the gallery from server function loadGallery() { $.ajax({ url: 'src/fetch-images.php', // PHP script to fetch images type: 'GET', success: function(response){ let jsonData = JSON.parse(response); $('#gallery').html(''); // Clear previous images if(jsonData.status == 1){ $.each(jsonData.data, function(index, image){ $('#gallery').append('
'); // Display each image }); } else { $('#gallery').html('

No images found...

'); // No images found message } } }); } //Auto Hide Div function autoHide(idORClass) { setTimeout(function () { $(idORClass).fadeOut('fast'); }, 1000); } //Auto Show Element function autoShow(idORClass) { setTimeout(function () { $(idORClass).fadeIn('fast'); }, 1000); }
Salin selepas log masuk

7. Skrip PHP Bahagian Belakang

Mengambil Imej (src/fetch-images.php)

 0, 'message' => 'No images found.'); // Fetching images from the database $query = $pdo->prepare("SELECT * FROM images ORDER BY uploaded_on DESC"); $query->execute(); $images = $query->fetchAll(PDO::FETCH_ASSOC); if(count($images) > 0){ $response['status'] = 1; $response['data'] = $images; // Returning images data } // Return response echo json_encode($response); ?> ?>
Salin selepas log masuk

Muat Naik Imej (src/upload.php)

 0, 'message' => 'Form submission failed, please try again.'); if(isset($_FILES['image']['name'])){ // Directory where files will be uploaded $targetDir = UPLOAD_DIRECTORY; $fileName = date('Ymd').'-'.str_replace(' ', '-', basename($_FILES['image']['name'])); $targetFilePath = $targetDir . $fileName; $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION); // Allowed file types $allowTypes = array('jpg','png','jpeg','gif'); if(in_array($fileType, $allowTypes)){ // Upload file to server if(move_uploaded_file($_FILES['image']['tmp_name'], $targetFilePath)){ // Insert file name into database $insert = $pdo->prepare("INSERT INTO images (file_name, uploaded_on) VALUES (:file_name, NOW())"); $insert->bindParam(':file_name', $fileName); $insert->execute(); if($insert){ $response['status'] = 1; $response['message'] = 'Image uploaded successfully!'; }else{ $response['message'] = 'Image upload failed, please try again.'; } }else{ $response['message'] = 'Sorry, there was an error uploading your file.'; } }else{ $response['message'] = 'Sorry, only JPG, JPEG, PNG, & GIF files are allowed to upload.'; } } // Return response echo json_encode($response); ?>
Salin selepas log masuk

6. Penggayaan CSS

Penggayaan CSS (aset/css/style.css)

body { background-color: #f8f9fa; } #gallery .col-md-4 { margin-bottom: 20px; } #gallery img { display: block; width: 200px; height: auto; margin: 10px; }
Salin selepas log masuk

Dokumentasi dan Komen

  • config.php:Mengandungi konfigurasi pangkalan data dan menyambung ke MySQL menggunakan PDO.
  • index.php:Halaman utama dengan struktur HTML, termasuk Bootstrap untuk penggayaan dan mod untuk menambah/mengedit siaran.
  • assets/js/script.js:Mengendalikan permintaan AJAX untuk memuatkan dan menyimpan siaran. Menggunakan jQuery untuk manipulasi DOM dan AJAX.
  • src/fetch-images.php:Mengambil siaran daripada pangkalan data dan mengembalikannya sebagai JSON.
  • src/upload.php:Mengendalikan pembuatan dan pengemaskinian siaran berdasarkan kehadiran ID.

Penyelesaian ini termasuk menyediakan projek, konfigurasi pangkalan data, struktur HTML, penggayaan dengan CSS, mengendalikan muat naik imej dengan AJAX dan menyimpan data imej dalam pangkalan data menggunakan PHP PDO. Setiap baris kod diulas untuk menerangkan tujuan dan fungsinya, menjadikannya tutorial komprehensif untuk membina galeri imej dengan fungsi muat naik.

Menyambung Pautan

Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberirepositoribintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna buat saya!

Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:

  • LinkedIn
  • GitHub

Kod Sumber

Atas ialah kandungan terperinci Kursus ranap PHP: Galeri Imej Mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!