Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][MySQL][PHP]Usuwanie obrazka i dodawanie w jego miejsce nowego, jak w temacie
AdrianWasylik
post 10.08.2020, 20:41:43
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.08.2020

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


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

Go to the top of the page
+Quote Post
SmokAnalog
post 10.08.2020, 20:49:10
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Masz $unlink() zamiast unlink().
Go to the top of the page
+Quote Post
AdrianWasylik
post 10.08.2020, 20:52:23
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.08.2020

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


Dzięki, ale dalej nie działa. Przynajmniej nie pokazuje się błąd.
Go to the top of the page
+Quote Post
SmokAnalog
post 10.08.2020, 20:53:04
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Napisz konkretnie co nie działa, bo raczej nikomu nie będzie się chciało analizować całego kodu.

Ten post edytował SmokAnalog 10.08.2020, 21:01:14
Go to the top of the page
+Quote Post
AdrianWasylik
post 10.08.2020, 21:12:56
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.08.2020

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


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.
Go to the top of the page
+Quote Post
SmokAnalog
post 10.08.2020, 21:41:28
Post #6





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


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.
Go to the top of the page
+Quote Post
AdrianWasylik
post 11.08.2020, 22:18:41
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.08.2020

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


Ok. Już problem rozwiązany. Dzięki za pomoc.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.04.2024 - 23:45