Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Jak zapobiec nadpisywaniu pliku ?, Unikatowe nazwy plików wgrywanych na serwer.
grattz
post
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


Wysyłam plik na serwer:
  1. <?php
  2. if (isset($_FILES['Plik']))
  3. {
  4.  if (move_uploaded_file($_FILES['Plik']['tmp_name'],'./uploads/'.$_FILES['Plik']['name']))
  5. ?>

Jak zmienić nazwe pliku zapisywanego . Np tak zeby dodawał sie ID z tabeli przed nazwą pliku. ( chyba będzie to trudno uzyskać - może jakieś są inne metody ?)

A to wysyłam do MYSQL:
  1. <?php
  2. mysql_query("INSERT INTO banery VALUES('" . $_FILES['Plik']['name'] . "',NULL)")
  3. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
chyba będzie to trudno uzyskać

bez przesady... ostanio dodane ID:
http://forum.php.pl/index.php?showtopic=30...;hl=ostatnie+id
Go to the top of the page
+Quote Post
grattz
post
Post #3





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


Moje marne możliwości wymyśliły cos takiego :
  1. <?php
  2. if (move_uploaded_file($_FILES['Plik']['tmp_name'],'./uploads/'.printf ("%dn", mysql_insert_id()).''.$_FILES['Plik']['name']))
  3. ?>

Ane to chyba marny pomysł bo nie działa (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif) Dziwne bo wyświetla sie "0" na początku strony a potem - tak jak było wcześniej.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




printf wyswietla informacje na ekran, stad te 0, a 0 masz dlatego, ze mysql_insert_id zapewne wywolujesz przed insertem a nie po, lub tez insert zwraca ci false.

  1. <?php
  2. //tu sobie wykonaj inserta...
  3. // a teraz lecim z pobraniem id:
  4. $id = mysql_insert_id();
  5. if (move_uploaded_file($_FILES['Plik']['tmp_name'],'./uploads/'.$id.$_FILES['Plik']['name']))
  6. //....
  7. ?>
Go to the top of the page
+Quote Post
grattz
post
Post #5





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


(IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Pliki juz ładnie zapisują sie na serwerze. ID mają przed nazwą.
Problem mam tylko jeszcze by w tablicy MSQL nazwa pliku była taka sama.
Wpisałem tak:
  1. <?php
  2. mysql_query("INSERT INTO banery VALUES('". $id ."". $_FILES['Plik']['name'] . "',NULL)") or die(mysql_error());
  3. ?>

Ale nie dodaje mi ID przed nazwą pliku.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Ale nie dodaje mi ID przed nazwą pliku.
no ba, przeciez tego id jeszcze nie masz. to id pojawia sie dopiero po wpisie do bazy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
PO wpisie do bazy mozesz zrobic np. update tego rekordu i wpisac mu juz poprawna nazwe pliku, gdyz juz wowczas bedziesz mial id

edit:
albo olac to id w bazie. wystarczy tylko nazwa bazowa. przy pobieraniu danych z bazy bedziesz lączyl to id z nazwa bazowa i juz
Go to the top of the page
+Quote Post
grattz
post
Post #7





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


Zaoszczędziłeś mi czas i nerwy. To będzie najlepsze wyjście. Nie trzeba kombinować z UPDATE bazy.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 18:46