Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Upload zdjęć a zapis nazwy do bazy
Forum PHP.pl > Forum > Przedszkole
krispak
Witam

Mam upload zdjec, ktory bez problemu dodaje zdjecie na serwer we wskazana lokalizacje ale problem polega na tym ze gdy zapisuje nazwe do bazy to nie zapisuje powiedzmy zdjecie.jpg tylko powiedzmy wrzuca cos takiego tmp/phpT6wt
Zapisuje tak jakby nazwe tymczasowa, co moze byc tego powodem?

Za wszelka pomoc dziekuje
mike
Cytat(krispak @ 20.10.2008, 12:27:43 ) *
Zapisuje tak jakby nazwe tymczasowa, co moze byc tego powodem?
Błąd w kodzie, który napisałeś.
krispak
tak wygląda skrypt

  1. <?php
  2.  if (isset($_POST['avatar'])) {
  3.  $avatar = $_POST['avatar'];
  4.  $sql = "UPDATE admin SET
  5.      avatar='$plik'
  6.         WHERE id='$id'";
  7.  if (mysql_query($sql)) {
  8.    echo '<p>Dane zostały zaktualizowany.</p>';
  9.  } else {
  10.    exit('<p>Problem podczas aktualizowania danych: ' .
  11.        mysql_error() . '</p>');
  12.  }
  13. }
  14. $plik_nazwa = $_FILES['plik']['name'];
  15. $plik_tmp = $_FILES['plik']['tmp_name'];
  16. $plik_rozmiar = $_FILES['plik']['size'];
  17.  
  18. if(is_uploaded_file($plik_tmp)) {
  19.     move_uploaded_file($plik_tmp, "images/avatar/$plik_nazwa");
  20.    echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  21.    <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";
  22. }
  23. ?>
  24. <form action="?eprofil" enctype="multipart/form-data" method="post">
  25. <input type="file" name="plik" />
  26. <input type="hidden" name="MAX_FILE_SIZE" value="50000" />
  27. <input type="submit" value="AKTUALIZUJ" />
guilty82
a skad bierzesz zmienna $plik?
mike
W budowanym zapytaniu masz zmienne $plik i $id. Skąd one się biorą?
Bo rozumiem, że to w bazie zapisuje Ci złą nazwę pliku?
krispak
id tyczy sie konkretnej osoby ale wycialem skrypt wyswietlajacy bo jest to plik edycji stad id

a nazwe zle zapisuje w bazie bo jest typu tmp/php64rer
mike
W bazie zapisujesz to co jest w zmiennej $plik. Skoro wartość jest zła to zawartość tej zmiennej jest zła.
Skąd bierzesz wartość zmiennej $plik? Bo to tu leży problem.
guilty82
No to skoro Ci zle zapisuje a nie chcesz pokazac skad biora sie te zmienne w zapytaniu to ciezko bedzie pomoc smile.gif
krispak
zmienilem

avatar='$plik' na avatar='$plik_nazwa'

oraz dodalem

<input type="hidden" name="plik_nazwa" />

aby pobierac zmienna z

$plik_nazwa = $_FILES['plik']['name'];

i teraz nic nie dodaje do bazy a plik do katalogu jest ladowany
guilty82
A po co tak?

zmien kolejnosc i nie musisz nic przesylac w hidden

  1. <?php
  2. if (isset($_POST['avatar'])) {
  3.  
  4. $plik_nazwa = $_FILES['plik']['name'];
  5. $plik_tmp = $_FILES['plik']['tmp_name'];
  6. $plik_rozmiar = $_FILES['plik']['size'];
  7.  
  8. $sql = "UPDATE admin SET
  9.     avatar='$plik_nazwa'
  10.        WHERE id='$id'";
  11. ?>
krispak
wielkie dzieki - DZIAŁA smile.gif
wystarczylo zamienic kolejnosc smile.gif

sorka za pisanie jedno pod drugim

ale mam jeszcze prosbe jak zrobic aby ograniczyc tylko przesylanie plikow typu jpg czy np png questionmark.gif
Cienki1980
Cytat(krispak @ 20.10.2008, 14:41:38 ) *
sorka za pisanie jedno pod drugim

ale mam jeszcze prosbe jak zrobic aby ograniczyc tylko przesylanie plikow typu jpg czy np png questionmark.gif


Wystarczy sprawdzić rozszerzenie pliku ( np explode() ) i sprawdzić czy ostatni element tablicy to rozszerzenie które Ciebie interesuje lub korzystasz z getimagesize()" title="Zobacz w manualu PHP" target="_manual i sprawdzasz jaką wartość ma element tablicy o indexie 2
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.