Avatar billede brevkasserne Nybegynder
29. januar 2003 - 13:18 Der er 14 kommentarer og
1 løsning

Upload billede til mappe og DB!

Jeg bruger noget lign. dette til at uploade med:

@copy($_FILES['fil']['tmp_name'], "upload/".$_FILES['fil']['name']);
mysql_query("insert into upload (titel,sti) values ('$_POST[titel]','')");

Det jeg nu gerne vil, det er at det billede jeg uploade kommer til at hedde et tal, samt dets filtype (f.eks. 1.jpg eller 54.gif).
I databasen skal billedets navn så indsættes som sti!
Tallene som billederne får skal nok bare stige efterhånden som der kommer flere ind, men der må ikke være to billeder der har samme tal, forståeligt nok!

Nogen der har en idé?
Avatar billede sukos Juniormester
29. januar 2003 - 13:40 #1
Du kan vel bruge fopen() det dir som billedet gemmes i, tælle antal filer, lægge en til og bruge det som navn?
Avatar billede brevkasserne Nybegynder
29. januar 2003 - 13:49 #2
Kan du ikke komme med lidt mere kode... Kender ikke fopen() :-)
Avatar billede sukos Juniormester
29. januar 2003 - 14:05 #3
<?php
$sti = $_SERVER['DOCUMENT_ROOT'] ."/dir/test/";

$path = opendir($sti);

$dirlist = array();
while (false !== ($dir = readdir($path))){

    if ($dir == "." || $dir == ".." || is_dir($dir)) {
continue;
    }else{
    $dirlist[] = $dir;
    }
}
closedir($path);

$antal = count($dirlist)+1;

if (isset($_FILES['fil'])) {

$filtype = explode(".", $_FILES['fil']['name']);
$nytnavn = $antal .".". $filtype[1];

move_uploaded_file($_FILES['fil']['tmp_name'], $sti . $nytnavn);
    }


?>
Avatar billede sukos Juniormester
29. januar 2003 - 14:23 #4
æh, selvf. ændrer du $sti til dit brug! :O)
Og lægger din query efter move_uploadede_file:
mysql_query("insert into upload (titel,sti) values ('$_POST[titel]','$nytnavn')");

Men du bør nok lave et bedre tjek på hvad du uploader, og at filen rent faktisk har et "hale" navn
Avatar billede brevkasserne Nybegynder
29. januar 2003 - 15:10 #5
Vil det ikke være et problem hvis nogle af billederne bliver slettet?
Avatar billede sukos Juniormester
29. januar 2003 - 15:16 #6
Inden du laver et link til billedet, kan du jo tjekke at det eksisterer med
file_exists()
http://dk.php.net/manual/en/function.file-exists.php
Avatar billede brevkasserne Nybegynder
29. januar 2003 - 15:26 #7
Jeg mener hvis den skal tælle antallet af billeder sammen og derefter lægge 1 til, som så skal være navnet på det nye billede.

Hvad hvis man har uploadet 3 billeder, 1.jpg, 2.jpg og 3.jpg. Derefter slettet 2.jpg!
Nu uploades et nyt billede, der tælles antallet af billeder sammen som bliver 2 og så bliver det nye billede kaldt 3!
Avatar billede sukos Juniormester
29. januar 2003 - 15:44 #8
hmm er ikke helt med.
Du uploader et billede ad gangen?
Og så er problemet, at hvis det ene billede slettes, mens det stadig figurer i DB'en?
Det kan jeg godt se, men enten, så lav det så hvis du sletter info i DB'en sletter du osse billedet, eller brug evt. time() til at navngi' billedet, så billednavn bli'r noget a'la'
1043176020.jpg
Avatar billede sukos Juniormester
29. januar 2003 - 15:49 #9
Så ville det blive noget med:

<?php
$sti = $_SERVER['DOCUMENT_ROOT'] ."/dir/test/";

if (isset($_FILES['fil'])) {
$navn = time();

$filtype = explode(".", $_FILES['fil']['name']);
$nytnavn = $navn .".". $filtype[1];

move_uploaded_file($_FILES['fil']['tmp_name'], $sti . $nytnavn);
    }


?>
Avatar billede brevkasserne Nybegynder
29. januar 2003 - 15:52 #10
Den med time()-funktionen er ikke helt dårlig!
Prøver den!
Avatar billede brevkasserne Nybegynder
29. januar 2003 - 15:53 #11
Er time()-funktionen ikke noget med sekunder siden et eller andet årstal?
Avatar billede sukos Juniormester
29. januar 2003 - 16:28 #12
siden 1-1-1970
Avatar billede brevkasserne Nybegynder
29. januar 2003 - 17:57 #13
Yes... Den time()-funktion virker fint!!!
sukos, laver du ikk' lige et svar?
Avatar billede sukos Juniormester
29. januar 2003 - 18:15 #14
jow, det kan jeg godt! :O)
Avatar billede brevkasserne Nybegynder
29. januar 2003 - 19:20 #15
Takker for alle svar :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester