Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]dodawanie zdjęc, przypisanie ich do odpowiednich newsów
Forum PHP.pl > Forum > Przedszkole
beatZB
Mam skrypt ktory dodaje mi przepisy do bazy. Chciałam teraz, żeby użytkownik mógł do swojego przepisu dodac zdjęcie potrawy. Mam juz skrypt i formularz dodawania zdjęcia do odpowiedniego folderu- dodaje.I teraz nie wiem, jak do tabeli z tymi przepisami zrobic tak, żebym potem mogła wyświetlic ten przepis wraz ze zdjęciem.
Powinnam dodac do tabeli kolumnę z nazwą zdjęcia czy scieżki do niego? jesli tak, to jak to zrobic?

baza:przepisy tabela:przepis

kolumny: przepis|kategoria|ID|nazwa|nazwa_zdj[?]|



CODE

  1. <?php
  2. $pdo = new PDO('mysql:host=localhost;dbname=przepisy', 'beatam', '123') or die ('problem z nawiązaniem połączenia!');
  3. /* utworzenie zmiennych */
  4. $folder_upload="./pliki";
  5. $plik_nazwa=$_FILES['plik']['name'];
  6. $plik_lokalizacja=$_FILES['plik']['tmp_name']; //tymczasowa lokalizacja pliku
  7. $plik_mime=$_FILES['plik']['type']; //typ MIME pliku wysłany przez przeglądarkę
  8. $plik_rozmiar=$_FILES['plik']['size'];
  9. $plik_blad=$_FILES['plik']['error']; //kod błędu
  10.  
  11. /* sprawdzenie, czy plik został wysłany */
  12. if (!$plik_lokalizacja) {
  13. exit("Nie wysłano żadnego pliku");
  14. }
  15.  
  16. /* sprawdzenie błędów */
  17. switch ($plik_blad) {
  18. case UPLOAD_ERR_OK:
  19. break;
  20. case UPLOAD_ERR_NO_FILE:
  21. exit("Brak pliku.");
  22. break;
  23. case UPLOAD_ERR_INI_SIZE:
  24. case UPLOAD_ERR_FORM_SIZE:
  25. exit("Przekroczony maksymalny rozmiar pliku.");
  26. break;
  27. default:
  28. exit("Nieznany błąd.");
  29. break;
  30. }
  31.  
  32. /* sprawdzenie rozszerzenia pliku - dzięki temu mamy pewność, że ktoś nie zapisze na serwerze pliku .php */
  33. $dozwolone_rozszerzenia=array("jpeg", "jpg", "tiff", "tif", "png", "gif");
  34. $plik_rozszerzenie=pathinfo(strtolower($plik_nazwa), PATHINFO_EXTENSION);
  35. if (!in_array($plik_rozszerzenie, $dozwolone_rozszerzenia, true)) {
  36. exit("Niedozwolone rozszerzenie pliku.");
  37. }
  38.  
  39. /* przeniesienie pliku z folderu tymczasowego do właściwej lokalizacji */
  40. if (!move_uploaded_file($plik_lokalizacja, $folder_upload."/".$plik_nazwa)) {
  41. exit("Nie udało się przenieść pliku.");
  42. }
  43.  
  44.  
  45. /* nie było błędów */
  46. echo "Plik został zapisany.";
  47.  
  48.  
  49. ?>





A tu skrypt dodawania przepisu
CODE

  1. <?php
  2. include 'fota.php';
  3. ?>
  4.  
  5.  
  6. <?php
  7. try
  8. {
  9. if($_SERVER['REQUEST_METHOD'] == 'POST')
  10. {
  11. $pdo = new PDO('mysql:host=localhost;dbname=przepisy', 'beatam', '123') or die ('problem z nawiązaniem połączenia!');
  12. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  13. $stmt = $pdo -> prepare('INSERT INTO `przepis` (`nazwa`, `przepis`, `kategoria`) VALUES(
  14. :nazwa,
  15. :przepis,
  16. :kategoria)'); // 1
  17. $stmt -> bindValue(':nazwa', $_POST['nazwa'], PDO::PARAM_STR); // 2
  18. $stmt -> bindValue(':przepis', $_POST['przepis'], PDO::PARAM_STR);
  19. $stmt -> bindValue(':kategoria', $_POST['kategoria'], PDO::PARAM_STR);
  20. $kategoria = $stmt -> execute(); // 3
  21. if($kategoria > 0)
  22. {
  23. echo 'Dodano przepis!';
  24. }
  25. else
  26. {
  27. echo 'Wystapil blad podczas dodawania rekordow!';
  28. }
  29. }
  30. else
  31. {
  32. echo '
  33. <form method="post" action="">
  34. <p>Nazwa dania:<br>
  35. <input type="text" name="nazwa"/></p>
  36. <p>przepis:<br>
  37. <input type="text" name="przepis"/></p>
  38. <p>
  39. <select name="kategoria" action="value">
  40. <option value="">Wybierz kategorie</option>
  41. <option value="desery">desery</option>
  42. <option value="dodatki">dodatki</option>
  43. <option value="grill">grill</option>
  44. <option value="makaronowe">makaronowe</option>
  45. <option value="mięsne">mięsne</option>
  46. <option value="regionalne">regionalne</option>
  47. <option value="rybne">rybne</option>
  48. <option value="sosyidipy">sosy i dipy</option>
  49. <option value="zupy">zupy</option>
  50.  
  51. </select></p>
  52. <p><input type="submit" value="Dodaj"/></p>
  53. </form>
  54. ';
  55. }
  56. }
  57. catch(PDOException $e)
  58. {
  59. echo 'Wystapil blad biblioteki PDO: ' . $e->getMessage();
  60. }
  61. ?>








kompletnie nie wiem, jak mam się za to zabrac, żebym potem mogła to foto wyświetlic, co mam dodac do tabeli i jaką metodę zastosowac w php.
Bedę wdzięczna za pomoc, jestem początkująca, więc może to łatwa sprawa dla was, ja się jeszcze uczę. Z góry dzięki!
SpiritCode
Jeśli przewidujesz, ze zdjęć będzie multum warto dzielić je na grupy katalogów.
Np: mając przepisz o id=2781 i zdjęciu o nazwie lkajkajfklajfkljfaafj.jpg możesz w bazie przechowac tylko nazwę a ścieżkę do samego obrazka utworzyć następującą:
Kod
/sciezka/do/zdjec/2/7/8/2781/lkajkajfklajfkljfaafj.jpg


edit:
Widzę, że do każdego przepisu będzie tylko jedno zdjęcie.
Mam taką propozycję (myślę, że zmniejszy to nakład pracy):
Pomiń dodawanie nazwy pliku do bazy.
Wrzucaj zdjęcia zawsze o tej samej nazwie ale stosują katalogi. Wrzucaj zdjęcie do katalogu nazwanego tak jak ID przepisu.
Nawet jeśli nie zachowasz ścieżki takiej jakiej podałem za przykład(bo nie jest to jakiś wymóg w Twoim przypadku) zawsze dotrzesz do forki.
np
Kod
/sciezka/do/zdjec/2781/zdjecie.jpg

Gdzie:
2781 to id przepisu
zdjecie.jpg - nazwa pliku (musisz w tym przypadku uważać na rozszerzenia plików)
beatZB
Czyli muszę miec do każdego przepisu, katalog do którego użytkownik doda zdjęcie które musi miec określoną nazwę? Jak takie katalogi utworzyc kodem i jak zrobic żeby zapisane zdjęcie miało akurat taką nazwę?

i jak potem takie zdjęcie wyświetlic wraz z tym przepisem?

Jak to wszystko zacząc kodowac w php?? ohno-smiley.gif
Bo ciężko mi to zrozumiec, a co dopiero napisac bezbłędnie. ohno-smiley.gif
SpiritCode
Załóżmy, że nasz przepis ma id w zmiennej $id

Przy dodawaniu pliku:
  1. $mediaBase = '/media/'; // katalog w którym będą zdjęcia
  2. if(!file_exists($mediaBase . $id))
  3. {
  4. mkdir($mediaBase . $id); // Tworzymy katalog jesli nie istnieje
  5. }
  6. $temp = explode(".",$_FILES["file"]["name"]);
  7. $newfilename = 'foto.' . end($temp); // Tworzymy nową nazwę dla poliku
  8. move_uploaded_file($_FILES["file"]["tmp_name"], $mediaBase . $id . $newfilename); // zapisujemy plik


Żeby znaleźć plik:
  1. $files = glob("/media/{$id}/foto.*"); // Sprawdzamy czy istnieje plik dla danego id
  2. if(!empty($files))
  3. {
  4. $fileURL = $files[0]; // teraz $fileURL zawiera ścieżkę do pliku
  5. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.