Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Upload plików - problem
Forum PHP.pl > Forum > Przedszkole
konradinho
Witam.

Mam mały problem. Upload plików działa bardzo dobrze, lecz gdy użytkownik dodaje opis do zdjęcia(klucz) to zapisuje go do bazy w formie cyfrowej(zamienia ciąg znaków na cyfry). W bazie to pole ustawione jest jako text więc wszystko powinno być ok. Czy ktoś wie może jak to rozwiązać? Wydaje mi się, że to wszystko jest przez:
  1. enctype="multipart/form-data"
ale za bardzo nie wiem jak to rozwiązać.

  1. <br /><br /><fieldset style="width: 300px; text-align: center;">
  2. <form method="post" enctype="multipart/form-data" id="upload" action="upload.php?action=upload">
  3. <p>Maksymalny rozmiar pliku to 500kB. Akceptowane rozszerzenia to: *.jpg, *.gif oraz *.png.
  4. </p>
  5. <p>&nbsp; </p>
  6. <table>
  7. <tr><td width="115">Wybierz plik:</td><td width="349" style="text-align:left"><input type="file" name="plik" /></td></tr>
  8. <tr><td height="88">Opis zdjecia:</td><td style="text-align:left"><textarea name="klucz" cols="50" rows="10"></textarea></td></tr>
  9. <tr><td>Wybierz sport:</td><td style="text-align:left"><p>
  10. <select name="kategoria">
  11. <option value="0">Wybierz</option>
  12. <?php
  13. $kategorie = new Kategorie;
  14. foreach($kategorie->pokazKategorie() as $numer => $nazwa)
  15. {
  16. if($nazwa!="")
  17. echo '<option value="'.$numer.'">'.$nazwa.'</option>';
  18. }
  19. unset($kategorie);
  20. ?>
  21. </select>
  22. </p>
  23. </td></tr>
  24. </table>
  25. <td><input type="submit" id="send" value="Wrzuc zdjecie" /></td>
  26. </form></fieldset>
  27. <?php
  28. //wrzucanie sygnatury
  29. if($_GET['action']=='upload')
  30. {
  31. $plik = new Pliki;
  32. if($plik->upload($_POST['kategoria'],$_SESSION['u_id'],$_FILES['plik']['tmp_name'],$_FILES['plik']['name'],$_FILES['plik']['size'],$_POST['klucz']))
  33. echo('<center><b style="text-decoration:underline">Zdjecie zostalo wrzocone na serwer</b></center>');
  34. else
  35. echo('<center><b style="text-decoration:underline">Rozmiar pliku przekracza 500kB lub nie wybrano Kategorii!</b></center>');
  36. }
  37.  
  38.  
  39.  
  40. ?>
MateuszS
Pokaż klasę Pliki (kod)
konradinho
Klasa ogólnie ma dużą zawartość ale tylko ten kawałek tyczy się uploadu plików:

  1. //upload pliku z formularza
  2. function upload($kategoria,$uzytkownik,$plik,$nazwaPliku,$klucz)
  3. {
  4. $rozmiar=$_FILES['plik']['size'];
  5. $maxrozmiar=0.5*1024*1024;
  6. if($kategoria!='0' AND $rozmiar<$maxrozmiar)
  7. {
  8. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  9. $rozszerzenie = substr($nazwaPliku,-4,4);
  10. if($rozszerzenie=='.jpg' || $rozszerzenie=='.gif' || $rozszerzenie=='.png')
  11. {
  12. $nazwaPliku = $kod.$rozszerzenie;
  13. if(move_uploaded_file($plik,'images/tmp/'.$nazwaPliku))
  14. {
  15. $uzytkownik=$_SESSION['u_id'];
  16. //tworzymy miniature
  17. $this->tworzMiniaturke($nazwaPliku);
  18. $this->zmniejszFoto($nazwaPliku);
  19. $this->usuntmp($nazwaPliku);
  20. //dodajemy informacje o pliku do bazy danych
  21. $zapytanie = "INSERT INTO fotos(klucz,nazwaPliku,user,kategoria,dataDodania) VALUES('$klucz','$nazwaPliku',$uzytkownik,$kategoria,NOW())";
  22. $zap2 = "UPDATE users SET u_iloscFoto=u_iloscFoto+1 WHERE u_id=$uzytkownik";
  23. if((mysql_query($zapytanie) && mysql_query($zap2)) or die(mysql_error()))
  24. return true;
  25. else
  26. return false;
  27. }
  28. else
  29. return false;
  30. }
  31. else
  32. return false;
  33. }
  34. else
  35. return false;
  36.  
  37. }
MateuszS
Rozumiem że chcesz żeby klucz nie był ciągiem cyfr tylko normalnym tekstem tak? W tej metodzie którą pokazałeś ze zmienną klucz się nic nie dzieje ;P Pokaż metody w których cokolwiek dzieje się ze zmienną $klucz
konradinho
O to chodzi, że z tą zmienną nic się nie dzieje w innych plikach. Po prostu odbieram ją z formularza i dodaje rekord do bazy smile.gif

Nie ma nikt żadnego pomysłu smile.gif?

@edit

Problem rozwiązany, pomógł mi kumpel. A mianowicie:

  1. if($plik->upload($_POST['kategoria'],$_SESSION['u_id'],$_FILES['plik']['tmp_name'],$_FILES['plik']['name'],$_FILES['plik']['size'],$_POST['klucz']))


  1. function upload($kategoria,$uzytkownik,$plik,$nazwaPliku,$klucz)



Czyli krótko mówiąc do zmiennej $klucz przypisywałem posta zawierającego rozmiar pliku winksmiley.jpg I tutaj cały szkopuł. Zmieniłem miejscami i jest ok winksmiley.jpg
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.