Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]dodawanie zdjęć do forlmularza
Forum PHP.pl > Forum > Przedszkole
gosienkami
witam
Mam formularz dodawania produktu
produkt opis i zdjęcia.
jak dodać zdjecia do formularza po czym mają być zapisane do bazy do poszczegolnego rekordu.
przy załadowaniu zdjęc do formularza mają być miniaturki.
f1xer
musisz po prostu wczytać zdjęcie i zapisać do bazy do poszczególnego rekordu a później stworzyć miniaturkę (konkretna odpowiedź na konkretne pytanie)
A tak poważnie to może jakieś bliższe szczegóły?
gosienkami
w jednym pliku narazie mam
  1. <?php
  2. <input type="hidden" name="MAX_FILE_SIZE" value="30000">
  3.  
  4. Wybierz plik który chcesz umieścić na serwerze:<br>
  5.  
  6. <input name="plik" type="file" id="plik" size="40">
  7. <br>
  8. <input type="submit" value="Wgraj plik">
  9. ?>

a w pliku zapis.php

  1. <?php
  2. if (!is_uploaded_file($_FILES['plik']['tmp_name'])) {
  3.  
  4.    die ('Nie dołączono pliku.');
  5.    
  6. }
  7. ?>
i mi wyskakuje ze nie dołaczono
potreb
Nie dołączono, tylko tyle kodu??
Chrom
sprawdź nagłówek formularza
gosienkami
Cytat(potreb @ 19.01.2009, 19:18:03 ) *
Nie dołączono, tylko tyle kodu??

tak
potreb
Daj na początku skryptu error_reporting(E_ALL); i print_r($_FILES['plik']);

Jeżeli nie wywali ci nic tzn że formularz nie wysyła pliku. Nie wiem czy masz ustawione dla forma enctype="multipart/form-data"
gosienkami
Cytat(potreb @ 19.01.2009, 19:35:44 ) *
Daj na początku skryptu error_reporting(E_ALL); i print_r($_FILES['plik']);

Jeżeli nie wywali ci nic tzn że formularz nie wysyła pliku. Nie wiem czy masz ustawione dla forma enctype="multipart/form-data"


wyswietla mi się

Array ( [name] => 4.gif.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 ) Nie dołączono pliku.
piotrooo89
może to Ci pomoże: http://olaszewski.freehostia.com/?p=17
gosienkami
Cytat(piotrooo89 @ 19.01.2009, 19:53:26 ) *

nic mi nie tworzy a mam tak samo jak w linku

nie tworzy mi pliku i nie przenosi do wybranego katalogu

$f = $_FILES['name']; czy w miejscu name mam cos innego wstawić?
potreb
[tmp_name] - masz puste, tzn że plik nie przesyłany. Pokaż cały formularz.
gosienkami
Bład mam taki

Array ( [name] => 1.jpg [type] => image/jpeg [tmp_name] => C:\DOCUME~1\admin\USTAWI~1\Temp\php360.tmp [error] => 0 [size] => 168902 )





1.php



  1. <?php
  2. <body>
  3.  
  4.    <form  action="2.php" enctype="multipart/form-data"  method="post">
  5.  
  6.    <fieldset>
  7.  
  8.                
  9.  
  10.    <div>
  11.  
  12.                <label  for="plik">plik</label>
  13.  
  14.    <input  id="name" name="zdj" size="32"  type="file" />
  15.  
  16.    <label></label>
  17.  
  18.    </div>
  19.  
  20.    <div>
  21.  
  22.    <input  class="submit" type="submit" value="Wyslij"  /></div>
  23.  
  24.    </fieldset>
  25.  
  26.    </form>
  27.  
  28.    </body>
  29.  
  30.    </html>
  31. ?>




2.php



  1. <body>
  2.  
  3.    <form  id="form1" name="form1"  enctype="multipart/form-data" method="post"  action="">
  4.  
  5.      <?
  6.  
  7.    require("polaczenie.php");
  8.  
  9.    
  10.  
  11.    $zdj=$_POST['zdj'];
  12.  
  13.    error_reporting(E_ALL);
  14.  
  15.     print_r($_FILES['zdj']);
  16.  
  17.    $f = $_FILES['zdj'];
  18.  
  19.    $spr= '../newsleter/galery/'; //ścieżka (tam gdzie mają  znajdować się zdjęcia)
  20.  
  21.    if  (is_dir($spr));
  22.  
  23.                if(isset($f['name']))
  24.  
  25.                {
  26.  
  27.                            move_uploaded_file($f['tmp_name'],  '../newsleter/galery/'.$f['name']);//przenoszę plik do katalogu
  28.  
  29.                }
  30.  
  31.    }
  32.  
  33.    if  (!empty($f))
  34.  
  35.    {
  36.  
  37.                $zdj=$f['zdj'];
  38.  
  39.    
  40.  
  41.                $sql1 = mysql_query("INSERT  INTO id SET
  42.  
  43.                fotka1='$zdj'");  //dodaje nazwę pliku do bazy danych
  44.  
  45.    }?>
  46.  
  47.    </form>
  48.  
  49.    </body>
EarthCitizen
W tablicy $_FILES nie ma błędu - error => 0

Kod
<span class="postcolor">Array (
     [name] => 1.jpg
     [type]  =>  image/jpeg [tmp_name] => C:\DOCUME~1\admin\USTAWI~1\Temp\php360.tmp
     [error] => 0
     [size] => 168902
)</span>


Wartości dla error:
0 - brak błędu
1 - rozmiar pliku jest większy niż max_upload_filesize konfiguracji PHP (plik php.ini)
2 - rozmiar pliku jest większy niż MAX_FILE_SIZE
3 - tylko część pliku została załadowana
4 - brak pliku (puste pole file)

Może ścieżka w $spr jest zła?

dodaj do poniższego warunku ciąg dalszy czyli obsługę przypadku, gdy is_dir() zwróci false, na potrzeby testu wystarczy Ci
  1. <?php
  2. if  (is_dir($spr)) {
  3. // twój kod
  4. } else {
  5.    echo 'Ścieżka ' . $spr . ' nie istnieje!';
  6. }
  7. ?>


Kod zapisu do bazy też jest zły, ale może przejdziemy do tego jak już zapiszesz obrazek.
gosienkami
Cytat(EarthCitizen @ 20.01.2009, 00:15:57 ) *
W tablicy $_FILES nie ma błędu - error => 0

Kod
<span class="postcolor">Array (
      [name] => 1.jpg
      [type]  =>  image/jpeg [tmp_name] => C:\DOCUME~1\admin\USTAWI~1\Temp\php360.tmp
      [error] => 0
      [size] => 168902
  )</span>


Wartości dla error:
0 - brak błędu
1 - rozmiar pliku jest większy niż max_upload_filesize konfiguracji PHP (plik php.ini)
2 - rozmiar pliku jest większy niż MAX_FILE_SIZE
3 - tylko część pliku została załadowana
4 - brak pliku (puste pole file)

Może ścieżka w $spr jest zła?

dodaj do poniższego warunku ciąg dalszy czyli obsługę przypadku, gdy is_dir() zwróci false, na potrzeby testu wystarczy Ci
  1. <?php
  2. if  (is_dir($spr)) {
  3. // twój kod
  4. } else {
  5.    echo 'Ścieżka ' . $spr . ' nie istnieje!';
  6. }
  7. ?>


Kod zapisu do bazy też jest zły, ale może przejdziemy do tego jak już zapiszesz obrazek.




to mam takie błedy

Array ( [name] => 4.gif.jpg [type] => image/jpeg [tmp_name] => C:\DOCUME~1\admin\USTAWI~1\Temp\php381.tmp [error] => 0 [size] => 88285 )
Notice: Undefined variable: spr in c:\usr\apache\httpd\html\produkty\2.php on line 19

Notice: Undefined variable: spr in c:\usr\apache\httpd\html\produkty\2.php on line 23
Ścieżka nie istnieje!
EarthCitizen
Cytat
to mam takie błedy

Array ( [name] => 4.gif.jpg [type] => image/jpeg [tmp_name] => C:\DOCUME~1\admin\USTAWI~1\Temp\php381.tmp [error] => 0 [size] => 88285 )


To nie jest błąd! Usuń print_r($_FILES['zdj']);

Cytat
Notice: Undefined variable: spr in c:\usr\apache\httpd\html\produkty\2.php on line 19

Notice: Undefined variable: spr in c:\usr\apache\httpd\html\produkty\2.php on line 23


To jest bardziej ostrzeżenie/uwaga a nie błąd, usuń error_reporting(E_ALL)

Cytat
Ścieżka nie istnieje!


No tutaj to chyba wiesz co zrobić?snitch.gif
gosienkami
$spr= 'c:\usr\apache\httpd\html\produkty\galery'; zdjecia maja byc przechowywane w katalogu galery i krzyczy ze nie istnieje plik:(
EarthCitizen
Nie istnieje plik czy katalog? Jak nie istnieje to utwórz go smile.gif
gosienkami
Cytat(EarthCitizen @ 20.01.2009, 09:43:08 ) *
Nie istnieje plik czy katalog? Jak nie istnieje to utwórz go smile.gif


tzn mam 'c:\usr\apache\httpd\html\produkty\galery i ze ciezka nie istnieje katalog galery jest pusty
EarthCitizen
Cytat
katalog galery jest pusty


A co to ma do tego, że jest pusty? Wklej komunikat błędu, bo to co piszesz nie ma sensu!
gosienkami
tzn ze nie ma tam zadnego pliku bład jest tylko jak wyzej
EarthCitizen
Jaki błąd jak wyżej? Nie podałeś jeszcze tego błędu!
gosienkami
ok zapisuje mi zdjecia do katalogu galery tylko jeszcze mam problem z zapisem sciezki do bazy

  1. <?php
  2. $sql = mysql_query("INSERT INTO id SET
  3.    fotka1='$zdj'");
  4.    $wynik=mysql_query($sql);
  5.                  echo $zdj.'Zdjęcie dodane: ';
  6.                  }
  7. ?>


ok zapisuje mi zdjecia do katalogu galery tylko jeszcze mam problem z zapisem sciezki do bazy

  1. <?php
  2. $sql = mysql_query("INSERT INTO id SET
  3.    fotka1='$zdj'");
  4.    $wynik=mysql_query($sql);
  5.                  echo $zdj.'Zdjęcie dodane: ';
  6.                  }
  7. ?>
EarthCitizen
Wklej strukturę tabeli, do której chcesz zapisać...
gosienkami
#
# Table structure for table 'id'
#

DROP TABLE IF EXISTS id;
CREATE TABLE `id` (
`id` int(4) unsigned NOT NULL auto_increment,
`tytul` varchar(200) NOT NULL default '0',
`fotka1` varchar(20) default '0',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin2;
nospor
no ale troche samodzielnosci. skoro ci nie zapisuje to pewnie jest blad. wyswietl go sobie
  1. <?php
  2. $sql = mysql_query("INSERT INTO id SET
  3.   fotka1='$zdj'");
  4.   $wynik=mysql_query($sql) or die ('zapytanie: '.$sql.'   ---blad:'.mysql_error());
  5. ?>
gosienkami
Cytat(nospor @ 20.01.2009, 10:48:07 ) *
no ale troche samodzielnosci. skoro ci nie zapisuje to pewnie jest blad. wyswietl go sobie
  1. <?php
  2. $sql = mysql_query(&#092;"INSERT INTO id SET
  3.   fotka1='$zdj'&#092;");
  4.   $wynik=mysql_query($sql) or die ('zapytanie: '.$sql.'   ---blad:'.mysql_error());
  5. ?>


zapytanie: ---blad:Zapytanie było puste
EarthCitizen
Nospor wiem, że to mało edukacyjne, ale jak widzisz ciężki przypadek winksmiley.jpg

Poniżej masz zapytanie, które "powinno" działać... + obsługa błędu, którą napisał wcześniej nospor

  1. <?php
  2. $sql   = "INSERT INTO `id` (`tytul`, `fotka1`) VALUES ('tytul', 'nazwa_pliku')";
  3. $wynik = mysql_query($sql);
  4.  
  5. if ($wynik) {
  6.    echo 'ok';
  7. } else {
  8.    echo 'zapytanie: ' . $sql . '   ---blad: ' . mysql_error();
  9. }
  10. ?>
nospor
hihi, nie zwrocilem uwagi ze ona do sql przypisuje mysql_query() a potem to przepuszcza znowy przez mysql_query() winksmiley.jpg

poprawiona wersja:
  1. <?php
  2. $sql = "INSERT INTO id SET
  3.  fotka1='$zdj'";
  4.  $wynik=mysql_query($sql) or die ('zapytanie: '.$sql.'   ---blad:'.mysql_error());
  5. ?>

oczywiscie post EarthCitizena tez jest ok
gosienkami
zadnego błedu mi nie zwraca a w bazie dodaje pusty rekord
nospor
nie moglas od razu powiedziec ze dodaje pusty rekord? Musisz w pelni opisywac problem bo inaczej ruski miesiac bedziemy sie bujac (a raczej nie bedziemy bo wkoncu jakis modek sie wnerwi i zamknie temat za takie zagrywki)

daje sie puste bo $zdj=$_POST['zdj'];
Przeciez zdj to pole typu FILE i ono w $_FILES sie znajduje.

Patrz co wkladasz do zapytania. glupie echo rozwiązuje sprawe.

Obowiązkowa lektura
http://nospor.pl/php-faq-n29.html#faq-1
i inne z tego linku
gosienkami
wczesniej nic nie dodawało, dzieki za pomoc i cierpliwość
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.