Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][MySQL][PHP]Usuwanie obrazka i dodawanie w jego miejsce nowego
Forum PHP.pl > Forum > Przedszkole
AdrianWasylik
Witajcie.
Mam problem. Otóż robie stronkę o książkach ( coś jak http://wattpad.com ). Przy dodawaniu nowej książki (która zapisuje się w tabeli w DB wraz z informacją o okładce (obazek dodany przy dodawaniu książki)). Utknąłem na skrypcie, który ma odczytywać adres obrazka z tabeli, usuwał obrazek, dodawał nowy do katalogu i zapisywał jego adres w tabeli.
O to co mam:

  1. <?php
  2.  
  3. $book_ID = $_GET['book_ID'];
  4. $target_dir = "C:/xampp/htdocs/itellya/covers/";
  5. require_once "connect.php";
  6.  
  7. $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
  8.  
  9. if ($polaczenie->connect_errno!=0)
  10. {
  11. echo "Error: ".$polaczenie->connect_errno;
  12. }
  13. else
  14. {
  15. ini_set("display_errors", 0);
  16.  
  17. mysqli_query($polaczenie, "SET CHARSET utf8");
  18. mysqli_query($polaczenie, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
  19. mysqli_select_db($polaczenie, $db_name);
  20.  
  21. $myb =" SELECT book_ID, cover FROM books WHERE book_ID='".$book_ID."' ";
  22. $result = $polaczenie->query($myb);
  23. $dir = 'covers';
  24. $imagesExtensions = array('jpg', 'jpeg', 'gif', 'png');
  25. $files = scandir($dir);
  26.  
  27.  
  28.  
  29. if($result->num_rows >0){
  30. while($row = $result->fetch_assoc()){
  31. $path = $row["cover"];
  32. $arr = pathinfo($path);
  33.  
  34. //$fp = fopen($target_dir, "w+");
  35. //$unlink ($target_dir.$arr['basename']);
  36. }
  37. }
  38. }
  39.  
  40.  
  41.  
  42.  
  43. $target_fileNEW = $target_dir . basename($_FILES["coverNEW"]["name"]);
  44. $uploadOk = 1;
  45. $imageFileType = strtolower(pathinfo($target_fileNEW,PATHINFO_EXTENSION));
  46.  
  47.  
  48. if (file_exists($target_fileNEW)) {
  49. echo "Plik o tej nazwie już istnieje.";
  50. $uploadOk = 0;
  51. }
  52.  
  53.  
  54. if ($_FILES["coverNEW"]["size"] > 9000000) {
  55. echo "Cover jest za duża.";
  56. $uploadOk = 0;
  57. }
  58.  
  59.  
  60. if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
  61. && $imageFileType != "gif" ) {
  62. echo "Tylko obrazki w rozszerzeniu JPG, PNG i GIF";
  63. $uploadOk = 0;
  64. }
  65.  
  66.  
  67. if ($uploadOk == 0) {
  68. echo "Nie udało się załadować pliku.";
  69.  
  70. }
  71. else {
  72. if (move_uploaded_file($_FILES["coverNEW"]["tmp_name"], $target_fileNEW)) {
  73.  
  74.  
  75. require_once "connect.php";
  76.  
  77. $polaczenieN = new mysqli($host, $db_user, $db_password, $db_name);
  78.  
  79. if ($polaczenieN->connect_errno!=0)
  80. {
  81. echo "Error: ".$polaczenieN->connect_errno;
  82. }
  83. else
  84. {
  85. ini_set("display_errors", 0);
  86.  
  87. mysqli_query($polaczenieN, "SET CHARSET utf8");
  88. mysqli_query($polaczenieN, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
  89. mysqli_select_db($polaczenieN, $db_name);
  90.  
  91. $dodajC =" UPDATE books SET cover='".$target_file."' WHERE book_ID='".$book_ID."'";
  92. mysqli_query($polaczenieN, $dodajC);
  93. }
  94. header('Location: mybook.php');
  95. }
  96. }
  97.  
  98. ?>


I nie działa. Walczę z tym już kilka dni. Pomóżcie proszę!

poprawiłem trochę kod. Teraz dodawanie i podmianka działa, ale usuwanie powoduje błąd krytyczny error:500


  1. <?php
  2.  
  3. $book_ID = $_GET['book_ID'];
  4. $target_dir = "C:/xampp/htdocs/itellya/covers/";
  5. require_once "connect.php";
  6.  
  7. $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
  8.  
  9. if ($polaczenie->connect_errno!=0)
  10. {
  11. echo "Error: ".$polaczenie->connect_errno;
  12. }
  13. else
  14. {
  15. ini_set("display_errors", 0);
  16.  
  17. mysqli_query($polaczenie, "SET CHARSET utf8");
  18. mysqli_query($polaczenie, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
  19. mysqli_select_db($polaczenie, $db_name);
  20.  
  21. $myb =" SELECT book_ID, cover FROM books WHERE book_ID='".$book_ID."' ";
  22. $result = $polaczenie->query($myb);
  23. $dir = 'covers';
  24. $imagesExtensions = array('jpg', 'jpeg', 'gif', 'png');
  25. $files = scandir($dir);
  26.  
  27.  
  28.  
  29. if($result->num_rows >0){
  30. while($row = $result->fetch_assoc()){
  31. $path = $row["cover"];
  32. $arr = pathinfo($path);
  33.  
  34. $fp = fopen($target_dir, "w+");
  35. $unlink ($target_dir.$arr['basename']);
  36. }
  37. }
  38. }
  39.  
  40.  
  41.  
  42.  
  43. $target_file = $target_dir . basename($_FILES["coverNEW"]["name"]);
  44. $uploadOk = 1;
  45. $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
  46.  
  47. // Check if file already exists
  48. if (file_exists($target_file)) {
  49. echo "Plik o tej nazwie już istnieje.";
  50. $uploadOk = 0;
  51. }
  52.  
  53. // Check file size
  54. if ($_FILES["coverNEW"]["size"] > 9000000) {
  55. echo "Cover jest za duża.";
  56. $uploadOk = 0;
  57. }
  58.  
  59. // Allow certain file formats
  60. if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
  61. && $imageFileType != "gif" ) {
  62. echo "Tylko obrazki w rozszerzeniu JPG, PNG i GIF";
  63. $uploadOk = 0;
  64. }
  65.  
  66. // Check if $uploadOk is set to 0 by an error
  67. if ($uploadOk == 0) {
  68. echo "Nie udało się załadować pliku.";
  69. // if everything is ok, try to upload file
  70. }
  71. else {
  72. if (move_uploaded_file($_FILES["coverNEW"]["tmp_name"], $target_file)) {
  73.  
  74.  
  75. require_once "connect.php";
  76.  
  77. $polaczenieN = new mysqli($host, $db_user, $db_password, $db_name);
  78.  
  79. if ($polaczenieN->connect_errno!=0)
  80. {
  81. echo "Error: ".$polaczenieN->connect_errno;
  82. }
  83. else
  84. {
  85. ini_set("display_errors", 0);
  86.  
  87. mysqli_query($polaczenieN, "SET CHARSET utf8");
  88. mysqli_query($polaczenieN, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
  89. mysqli_select_db($polaczenieN, $db_name);
  90.  
  91. $dodajC =" UPDATE books SET cover='".$target_file."' WHERE book_ID='".$book_ID."'";
  92. mysqli_query($polaczenieN, $dodajC);
  93. }
  94. header('Location: mybook.php');
  95. }
  96. }
  97.  
  98. ?>

SmokAnalog
Masz $unlink() zamiast unlink().
AdrianWasylik
Dzięki, ale dalej nie działa. Przynajmniej nie pokazuje się błąd.
SmokAnalog
Napisz konkretnie co nie działa, bo raczej nikomu nie będzie się chciało analizować całego kodu.
AdrianWasylik
Jeśli usunę linijki od 5 do 40 (odwołanie do tabeli do kolumny covers oraz usuwanie obrazka pod adresem zawartym w tej kolumnie) to wszystko działa poprawnie. W takim stanie jak jest (tzn. wszystkie linijki), nie wyświetla ani błędu, ani headera. Jest biały ekran.
SmokAnalog
Podstawową umiejętnością programisty jest debugowanie. Sprawdź czy masz włączone pokazywanie błędów, a potem pododawaj var_dump() gdzie trzeba, żeby śledzić co się dzieje.
AdrianWasylik
Ok. Już problem rozwiązany. Dzięki za pomoc.
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.