Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Prosty skrypt galerii MySQL i uploadem
xebo
post 21.04.2024, 13:38:49
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 9.04.2011

Ostrzeżenie: (0%)
-----


Witam

Zaznaczam że w programowaniu jestem zielony, jakieś tylko podstawowe zmiany w kodzie ogarniam.

Potrzebuję gotowego rozwiązania, lub pomocy w znalezieniu skryptu galerii.

Skrypt ten miałby działać do portfolio fotografa.
Strona jest gotowa, ale galeria była wykonana w postaci wstawiania kolejnego kodu ( aby dodać zdjęcia).
Z czasem plik galerii jest już tak duży i chciałbym to zmienić.

Założenia:

Galeria ładowana z Mysql ( ilość zdjęć wyświetlanych ograniczona jak w lazy loading)
Dodawanie zdjęć masowo jako zdjęcia główne i miniaturki w osobnych folderach ( osobno miniaturki i te w pełnej rozdzielczości)
Dodawane zdjęcia żeby były numerowane automatycznie kolejnym numerkiem.

Zamieszczam obecny fragment galerii jak to wygląda. Jest ich ponad 200 na stronie także plik jest obszerny...

  1. <div class="row portfolio-column mb-50 gallery" id="pregnancy">
  2.  
  3. <!-- Item -->
  4. <div id="loading" class="col-12 col-sm-6 col-md-4 col-lg-3 column_single_gallery_item studio">
  5. <img src="/images/thumbnail/225.jpg" alt="">
  6. <div class="hover_overlay">
  7. <a class="gallery_img studio_img" href="/images/gallery/225.jpg"><i class="fa fa-eye"></i></a>
  8. </div>
  9. </div>
  10.  
  11. <!-- Item -->
  12. <div id="loading" class="col-12 col-sm-6 col-md-4 col-lg-3 column_single_gallery_item studio">
  13. <img src="/images/thumbnail/224.jpg" alt="">
  14. <div class="hover_overlay">
  15. <a class="gallery_img studio_img" href="/images/gallery/224.jpg"><i class="fa fa-eye"></i></a>
  16. </div>
  17. </div>


Bardzo proszę o pomoc lub nakierowanie na jakieś rozwiązania które mogłyby ułatwić zarządzanie galeria

Pozdrawiam

Ten post edytował xebo 21.04.2024, 13:39:24
Go to the top of the page
+Quote Post
Malinaa
post 3.05.2024, 10:52:23
Post #2





Grupa: Zarejestrowani
Postów: 522
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Jeżeli nie możesz znaleźć gotowca Galerii, to może być trudno o pomoc, ale spróbujmy smile.gif
Opcja pierwsza zleć jej napisanie, albo spróbuj tego:
https://github.com/artimman/dbmframework
gdzie masz gotowy przykład i klasę uploadu zdjęć. Klasa poradzi sobie z każdym zdjęciem i elegancko przekonwertuje duży obraz na format webowy.
Przykład uploadu znajdziesz pod linkiem: /panel/createOrEditBlog -> button Image -> Upload image
Jako szablon możesz wykorzystać np.:
https://mdbootstrap.com/docs/standard/extended/gallery/
Taka propozycja, daj znać jak wyjdzie, bo jestem ciekaw, czy jak piszesz Zielony sobie z tym zadaniem poradzi?!

Ten post edytował Malinaa 3.05.2024, 10:56:30


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
xebo
post 3 minut temu
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 9.04.2011

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedź.
Problem częściowo rozwiązany z pomocą ChatGPT
Nie patrzę tu na estetykę kodu, ma być funkcjonalny strona nie jest motłochem żeby obciążać bazę i serwer.

Wrzucam gotowca jaki mi wypluł. troszkę edytowany kod przez kolegę w zapytaniu i śmiga tak jak mi potrzeba.

get_images.php
  1. <?php
  2. // Połączenie z bazą danych
  3. // $conn = new mysqli($host, $username, $password, $database);
  4. // if ($conn->connect_error) {
  5. // die("Connection failed: " . $conn->connect_error);
  6. // }
  7.  
  8. // Zapytanie SQL pobierające ścieżki do zdjęć i miniatur, posortowane po dacie uploadu
  9. $sql = "SELECT i.thumbnail_path, i.gallery_path, c.group FROM images AS i LEFT JOIN categories AS c ON i.category_id = c.id ORDER BY i.upload_date DESC"; // Sortowanie malejąco po dacie uploadu
  10.  
  11. $result = $conn->query($sql);
  12.  
  13. if ($result->num_rows > 0) {
  14. // Iteracja przez wyniki zapytania
  15. while($row = mysqli_fetch_assoc($result)) {
  16. echo '<div " class="col-12 col-sm-6 col-md-4 col-lg-3 column_single_gallery_item ' . $row["group"] . '">';
  17. echo '<img src="' . $row["thumbnail_path"] . '" alt="">';
  18. echo '<div class="hover_overlay">';
  19. echo '<a class="gallery_img " href="' . $row["gallery_path"] . '"><i class="fa fa-eye"></i></a>';
  20. echo '</div>';
  21. echo '</div>';
  22. }
  23. } else {
  24. echo "0 results";
  25. }
  26.  
  27. // Zamykanie połączenia
  28. $conn->close();
  29. ?>


get_categories.php
  1. <?php
  2.  
  3. // Połączenie z bazą danych
  4. $conn = new mysqli($host, $username, $password, $database);
  5. if ($conn->connect_error) {
  6. die("Connection failed: " . $conn->connect_error);
  7. }
  8.  
  9. // Zapytanie SQL pobierające kategorie
  10. $categories_query = "SELECT * FROM categories";
  11. $categories_result = $conn->query($categories_query);
  12.  
  13. if ($categories_result->num_rows > 0) {
  14. // Wyświetlenie przycisków kategorii
  15. while($category_row = mysqli_fetch_assoc($categories_result)) {
  16. echo '<button class="btn" id="' . $category_row["group"] . '" type="button" data-filter=".' . $category_row["group"] . '">' . $category_row["cat_name"] . '</button>';
  17. }
  18. } else {
  19. echo "0 categories";
  20. }
  21.  
  22.  
  23. // Zamykanie połączenia
  24. // $conn->close();
  25.  
  26. ?>


upload.php
  1. <?php
  2. // Import configuration from config.php
  3. require_once 'config.php';
  4.  
  5. // Connect to the database
  6. $conn = new mysqli($host, $username, $password, $database);
  7.  
  8. // Check connection
  9. if ($conn->connect_error) {
  10. die("Connection failed: " . $conn->connect_error);
  11. }
  12.  
  13. $target_gallery_dir = "images/gallery/";
  14. $target_thumbnail_dir = "images/thumbnail/";
  15. $uploaded_images = array();
  16. $upload_failed = false;
  17.  
  18. if (isset($_POST["submit"])) {
  19. $category_id = $_POST["category"]; // Get category ID from the form
  20.  
  21. // Handle multiple uploaded files
  22. foreach ($_FILES['image']['tmp_name'] as $key => $tmp_name) {
  23. $filename = $_FILES['image']['name'][$key];
  24. $target_gallery_file = $target_gallery_dir . basename($filename);
  25. $target_thumbnail_file = $target_thumbnail_dir . basename($filename);
  26. $imageFileType = strtolower(pathinfo($target_gallery_file, PATHINFO_EXTENSION));
  27.  
  28. $check = getimagesize($tmp_name);
  29. if ($check !== false && $imageFileType == "jpg") {
  30. if (move_uploaded_file($tmp_name, $target_gallery_file)) {
  31. // Create thumbnail
  32. list($width, $height) = getimagesize($target_gallery_file);
  33. $thumb_width = 400; // New thumbnail width
  34. $thumb_height = 600; // New thumbnail height
  35. $thumb = imagecreatetruecolor($thumb_width, $thumb_height);
  36. $source = imagecreatefromjpeg($target_gallery_file);
  37. imagecopyresized($thumb, $source, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height);
  38. imagejpeg($thumb, $target_thumbnail_file);
  39. imagedestroy($source);
  40. imagedestroy($thumb);
  41.  
  42. // Save image information in the database
  43. $sql = "INSERT INTO images (gallery_path, thumbnail_path, category_id, upload_date) VALUES ('$target_gallery_file', '$target_thumbnail_file', '$category_id', CURRENT_TIMESTAMP)";
  44. if ($conn->query($sql) !== TRUE) {
  45. $upload_failed = true;
  46. }
  47. $uploaded_images[] = $filename;
  48. } else {
  49. $upload_failed = true;
  50. }
  51. } else {
  52. $upload_failed = true;
  53. }
  54. }
  55.  
  56. // After successful upload
  57. if (!$upload_failed) {
  58. echo "Zdjęcia zostały pomyślnie wgrane.";
  59. } else {
  60. echo "Wystąpił błąd podczas wgrywania zdjęć.";
  61. }
  62. }
  63.  
  64. // Close database connection
  65. $conn->close();
  66. ?>


upload_formularz.php

  1. <div >
  2. <?php if (!empty($success_message)): ?>
  3. <p><?php echo $success_message; ?></p>
  4. <?php endif; ?>
  5. <form action="upload.php" method="post" enctype="multipart/form-data">
  6. <input type="file" name="image[]" multiple accept="image/jpeg">
  7. <select name="category">
  8. <option value="">Wybierz kategorię</option>
  9. <option value="1">Ciążowa</option>
  10. <option value="2">Noworodkowa</option>
  11. <option value="3">Kobieca</option>
  12. <option value="4">Plener</option>
  13. <option value="5">Studio</option>
  14. <option value="6">Świąteczna</option>
  15. </select>
  16. <input type="submit" value="Upload zdjęcia" name="submit">
  17. </form>
  18. </div>




gallery.php
Ten kod wrzucamy gdzieś gdzie ma być wyświetlana galeria

  1. <?php require_once 'get_images.php'; ?>



Jedyna rzecz jaka jeszcze nie działa to wczytywanie 10 następnych zdjęć po scrollu ( pracuję nad tym biggrin.gif )


Go to the top of the page
+Quote Post

Reply to this topicStart new topic
3 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
1 Zarejestrowanych: xebo

 



RSS Wersja Lo-Fi Aktualny czas: 5.05.2024 - 20:53