Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][GD] Dziwny błąd skryptu
enemyofarcha
post 26.08.2009, 01:50:13
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 22.06.2009

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


Witam, witam... Ponownie.. Już teoretycznie udało mi się wszystko zrobić w Panelu administracji portfolio.. Tylko mam dziwny problem.

Przy dodawaniu nowego rekordu do bazy danych wraz z uploadem obrazka, wszystko działa jak należy, lecz podczas edycji rekordu jest problem z plikiem.
Nie wysyła go i nie dodaje wpisu nazwy do bazy danych - Jak to robi przy dodawaniu nowego rekordu.

W czym może polegać problem?

skrypt dodawania:
  1. if ($_POST['dodaj']) {
  2.  
  3. $id = trim($_POST['id']);
  4. $klient = trim($_POST['klient']);
  5. $wykonano = trim($_POST['wykonano']);
  6. $web = trim($_POST['web']);
  7. $data = trim($_POST['data']);
  8. $img = ($_FILES['obrazek']['name']);
  9. uploadobrazka();
  10.  
  11. $sql = @mysql_query("INSERT INTO portfolio SET id='$id', klient='$klient', wykonano='$wykonano', web='$web', data='$data', img_tb=' $img', img_big='$img'");
  12. $dodaj = mysql_query($sql);
  13.  
  14. if ($dodaj)
  15. echo "<center>Rekord został dodany</center>";
  16. else
  17. echo "<center>Rekord został dodany</center>";
  18. }


skrypt edycji:
  1. if ($_POST['zmien']) {
  2.  
  3. $id = trim($_POST['id']);
  4. $klient = trim($_POST['klient']);
  5. $wykonano = trim($_POST['wykonano']);
  6. $web = trim($_POST['web']);
  7. $data = trim($_POST['data']);
  8. $img = ($_FILES['obrazek']['name']);
  9. uploadobrazka();
  10.  
  11. $sql = "UPDATE portfolio SET
  12. klient = '$klient',
  13. wykonano = '$wykonano',
  14. web = '$web',
  15. img_big = '$img',
  16. img_tb = '$img',
  17. data = '$data' WHERE id =".$_POST['id'];
  18.  
  19. $edycja = mysql_query($sql);
  20.  
  21.  
  22. if ($edycja)
  23. echo "<center>Naniesiono poprawki</center>";
  24. else
  25. echo "<center>Wystąpił błąd!</center>";
  26. }


Formularze są identyczne /* HTML */. (ale raczej nie ma potrzeby pokazywania ich)

Jeszcze dodam skrypt GD, żeby nie było niejasności:
  1. function uploadobrazka(){
  2.  
  3. if( is_uploaded_file( $_FILES['obrazek']['tmp_name'] ) )
  4. {
  5. $strUploadDir = '../images/portfolio/' . $_FILES['obrazek']['name'];
  6. if( move_uploaded_file( $_FILES['obrazek']['tmp_name'], $strUploadDir ) )
  7. {}else{}}
  8. $img = imagecreatefromjpeg($strUploadDir);
  9. $width = imagesx($img);
  10. $height = imagesy($img);
  11. $width_mini = 80;
  12. $height_mini = 80;
  13. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  14. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);
  15. imagejpeg($img_mini, '../images/portfolio/thumb/' . basename($_FILES["obrazek"]['name']), 100);
  16. imagedestroy($img);
  17. imagedestroy($img_mini);
  18. }


Zapomniałbym o najważniejszym, przy zapisie wy-edytowanego formularza, pokazuje mi takie błędy:

  1. Warning: imagesx(): supplied argument is not a valid Image resource in E:\xampp\htdocs\archa\admin\portfolio.php on line 158
  2.  
  3. Warning: imagesy(): supplied argument is not a valid Image resource in E:\xampp\htdocs\archa\admin\portfolio.php on line 159
  4.  
  5. Warning: imagecopyresampled(): supplied argument is not a valid Image resource in E:\xampp\htdocs\archa\admin\portfolio.php on line 163
  6.  
  7. Warning: imagejpeg() [function.imagejpeg]: Unable to open '../images/portfolio/thumb/' for writing: No such file or directory in E:\xampp\htdocs\archa\admin\portfolio.php on line 164
  8.  
  9. Warning: imagedestroy(): supplied argument is not a valid Image resource in E:\xampp\htdocs\archa\admin\portfolio.php on line 165


--------------------
Fotografia
Fiona - Cały świat mojego psa
Go to the top of the page
+Quote Post
drPayton
post 26.08.2009, 08:30:53
Post #2





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


Formularze sa identyczne na pewno?

wewnątrz funkcji uploadu masz fragment:
  1. if( move_uploaded_file( $_FILES['obrazek']['tmp_name'], $strUploadDir ) )
  2. {}else{}}


Wstaw cokolwiek (echo etc) w obie klamry i zobacz, czy aby na pewno plik jest łapany i uploadowany na swoje miejsce...
Go to the top of the page
+Quote Post
thek
post 26.08.2009, 11:13:36
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Logika skryptu... Jeśli ktoś uploaduje plik to jest wszystko ok... Ale co jeśli nie robi tego? smile.gif Wtedy zmienna $strUploadDir nawet nie istnieje, choć zaraz potem próbujesz jej użyć wywołując imagecreatefromjpeg($strUploadDir)i to jest ten błąd.

Sprawdzaj najpierw czy w ogóle coś w zmiennej $_FILES jest i dopiero od tego uzależniaj czy uploadobrazka() się wykona czy nie.

Zresztą inny błąd... Po co masz kolumny img_big i img_tb skoro przechowują one to samo? Jedna zbędna smile.gif

Ten post edytował thek 26.08.2009, 11:17:56


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
enemyofarcha
post 26.08.2009, 12:36:58
Post #4





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 22.06.2009

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


Zaraz przejże skrypty winksmiley.jpg
img_big i img_tb muszą być winksmiley.jpg big to jest obrazek wysłany, a tb to jest odnośnik

Formularz edycji:
  1. <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
  2. <tr><td></td><td><input type="hidden" size="5" name="id" value="<?php echo $row['id'];?>"></td></tr>
  3. <tr><td align="right">Klient:</td><td> <input size="30" name="klient" value="<?php echo $row['klient'];?>"></td></tr>
  4. <tr><td align="right">Wykonano:</td><td> <input size="30" name="wykonano" value="<?php echo $row['wykonano'];?>"></td></tr>
  5. <tr><td align="right">Data:</td><td> <input size="30" name="data" value="<?php echo $row['data'];?>"></td></tr>
  6. <tr><td align="right">Strona projektu:</td><td> <input size="30" name="web" value="<?php echo $row['web'];?>"></td></tr>
  7. <tr><td align="right">Obrazek:</td><td> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"><input size="14" type="file" name="obrazek" ></td></tr>
  8. <tr><td></td><td<input name="zmien" type="submit" value="zapisz zmiany"></td></tr>


Formularz dodawania:
  1. <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data">
  2. <tr><td></td><td><input type="hidden" size="5" name="id"></td></tr>
  3. <tr><td align="right">Klient:</td><td> <input type="text" name="klient" size="30"></td></tr>
  4. <tr><td align="right">Wykonano:</td><td> <input type="text" size="30" name="wykonano"></td></tr>
  5. <tr><td align="right">Data:</td><td> <input type="text" size="30" name="data" value="2009-00-00"></td></tr>
  6. <tr><td align="right">Strona projektu:</td><td> <input type="text" size="30" name="web"></td></tr>
  7. <tr><td align="right">Obrazek:</td><td> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"><input size="14" type="file" name="obrazek" ></td></tr>
  8. <tr><td></td><td<input name="dodaj" type="submit" value="dodaj"></td></tr>


najpierw zobaczymy co będzie z tymi klamrami...

Aaa.. Już widzę mały błąd, chyba drPayton Masz rację..

Już można zakończyć temat, miałeś rację z formularzami, w educji nie wpisałem enctype winksmiley.jpg
Małe zwrócenie uwagi i jest wszystko dobrze winksmiley.jpg

Ten post edytował enemyofarcha 26.08.2009, 12:40:49


--------------------
Fotografia
Fiona - Cały świat mojego psa
Go to the top of the page
+Quote Post
drPayton
post 26.08.2009, 12:39:44
Post #5





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


enctype="multipart/form-data"

No faktycznie takie same formularze ^^

@down: Spoko, już siedze cicho tongue.gif

Ten post edytował drPayton 26.08.2009, 12:44:17
Go to the top of the page
+Quote Post
enemyofarcha
post 26.08.2009, 12:42:45
Post #6





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 22.06.2009

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


no już ciii tongue.gif

jak wstawiałem na forum to zauważyłem to winksmiley.jpg w pliku nie są obok siebie i nie mogło oko tego wyłapać, ale może dlatego że zaczynam wszystko winksmiley.jpg a myślałem że to coś z php się namieszało

Jeszcze raz dzięki..

Jeszcze o coś chcę zapytać. Ponieważ nie zawsze w edycji będzie zmiana obrazka, tylko wpisów do rekordu. Jak zrobić żeby nie pokazywał się błąd o pliku? Jak nie jest wybierany plik to wyskakuje ten błąd, ale nie potrzebnie.

Ten post edytował enemyofarcha 26.08.2009, 15:05:06


--------------------
Fotografia
Fiona - Cały świat mojego psa
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: 23.06.2025 - 05:11