Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wysylanie pliku na serwer, a inkrementacja nazwy plikow
Forum PHP.pl > Forum > Przedszkole
darkwalker
Witam, mam taki prosty skrypcik do wysylania plikow na serwer. Robie galerie zdjec i chce go wykorzystac, ale nazwy plikow sa kodowane w md5, natomiast ja chcialbym zeby ten skrypt nadawal plikom nazwy w liczbach po kolei np. 1.jpg, 2.jpg, 3...Jak to zrobic?

  1. <?php
  2. $p_pojemnosc=$_FILES['plik']['size'];
  3. $p_typ=$_FILES['plik']['type'];
  4. $p_nazwa=$_FILES['plik']['name'];
  5. $p_smiec=$_FILES['plik']['tmp_name'];
  6.  
  7. $p_roz= array_pop(explode(".", $p_nazwa));
  8.  
  9. $max_size=round(($_POST['max_file_size']/1048576),3)."MB";
  10.  
  11. $poj_MB=round(($p_pojemnosc/1048576),2).'MB'; 
  12.  
  13. [color=blue]$p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;[/color]
  14.  
  15. $folder="pliki/";
  16.  
  17. //---Kolorki HTML---
  18. $k_cze="<font color=#ff0000>";
  19. $f_koniec="</font>";
  20. $k_nieb="<font color=#0000ff>";
  21.  
  22. if ($p_pojemnosc <= 0)
  23. {
  24. echo ("Plik jest pusty nie mogę go przesłać <b>".$k_cze.$p_nazwa." ".$poj_MB.$f_koniec."</b><br />");
  25. echo "<a href=index.php>Wracaj ...</a>";
  26. }
  27.  
  28. if ($poj_MB > $max_size)
  29. {
  30. echo("Plik jest za duży maksymalnie można wysłać <b>".$k_cze.$max_size.$f_koniec."</b>"." .Plik wysyłany ma rozmiar <b><i>".$k_nieb.$poj_MB.$f_koniec."</b></i><br />");
  31. echo "<a href=index.php>Wracaj ...";
  32. }
  33.  
  34. if (file_exists($folder.$p_nazwa_zm))
  35. {
  36. echo ("Plik o takiej nazwie jest już na serwerku <b><i>".$p_nazwa_zm."</b></i><br />");
  37. echo "<a href=index.php>Wracaj ...";
  38. }
  39.  
  40. else {
  41. if(!@move_uploaded_file($p_smiec, $folder.$p_nazwa_zm))
  42. exit('Nie mozna zachowac pliku. Prawdopodobnie nie ma folderu lub nie można w nim zapi
    sać'
    );
  43.  
  44. echo "Przeslanie udało się - <b>".$k_nieb.$p_nazwa."</b>"." ".$poj_MB."<br />";
  45. $path_file=$folder.$p_nazwa_zm;
  46. $conn = mysql_connect('*, '*', '*') or die('Error connecting to mysql');
  47. mysql_select_db('*');
  48. $zapytanie=mysql_query("insert into  nazwa_tabeli values(NULL,'$p_pojemnosc','$path_file','$p_typ)");
  49. echo "<a href=index.php>Wracaj ...";
  50. }
  51. ?>
MILICJA
Dodaj do kazego pliku id (klucz). Pliki beda nazwyaly sie tak jak klucz z bazy.
Jeżeli plik został wysłany na serwer to najpierw dodaj do bazy informacje o nim
  1. <?php
  2. $zapytanie=mysql_query("insert into  nazwa_tabeli values(NULL,'$p_pojemnosc','$path_file','$p_typ')");
  3. ?>


Następnie pobierz id ostatniego rekordu dodanego do bazy i zmien nazwe pliku. na taki jak id.
  1. <?php
  2. $id = mysql_insert_id();
  3. ?>



Osobiscie rozwiazal bym sprawe inaczej. Zmienil bym nazwe pliku tak :
  1. <?php
  2. $nowaNazwa = md5($staraNazwa.date("G:i,s");
  3. ?>
webdice
Przenoszę na Przedszkole.
darkwalker
W sumie w bazie stworzylem id, tylko ze wyNULLowalem je w zapytaniu.
Tak to wyglada:

http://www.speedyshare.com/550653714.html



Fajnie by bylo gdyby szlo to sobie dodawac po dacie, ale napisalem juz skrypt, ktory wczytuje mi zdjecia
z katalogu "pliki/", oraz opis do kazdego zdjecia znajdujacy sie w pliku tekstowym o takiej samej nazwie
co zdjecie np. 1.jpg, 1.txt.




Zadeklarowalem zmienna $id (jak napisales), i zmienilem
$p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
na
$p_nazwa_zm=(md5($id)).".".$p_roz;




No napewno cos tu zrobilem zle. Teraz kiedy wysylam plik, to skrypt wysyla info ze plik o takiej nazwie juz istnieje.
Tak mysle, czy nie powinienem do nowej nazwy dodac $id+1, ale wtedy tez nie dziala.
Masz moze jeszcze jakies pomysly?


Moja przygoda z php dopiero sie zaczyna wiec nie wiem wszystkiego.
I dziekuje ze mi odpisales.
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.