Avatar billede webcreator Nybegynder
02. juli 2003 - 15:52 Der er 31 kommentarer og
1 løsning

Registrere download

Hej.

Ved download af en fil, ønsker jeg at forhøje værdien i mit felt "dnld" (DowNLoaD) med 1. Det jeg ikke kan finde ud af er, hvordan jeg får hentet filen, og samtidig starter et PHP script, der forhøjer værdien.

Har tænkt på noget med onclick="og så noget kode her" - men det har jeg ikke haft held med. Nogen forslag ?
Avatar billede tipsen Nybegynder
02. juli 2003 - 16:00 #1
Du linker direkte til et php-script med et nummer som identificerer din download og udfører følgende:

//kobl op til db
//opdater tabel udfra download-id
//send diverse headere der matcher typen på den fil der skal downloades og fortæller browseren at filen er beregnet til download
//send filen afsted

Der bliver ikke sendt noget konkret html-output til browseren på denne måde og dermed bliver man stående på samme side som linket til filen og får bare en boks op med hvor filen skal gemmes henne!

Jeg har ikke selv et færdigt script liggende, men det er der nok andre der har!
Avatar billede webcreator Nybegynder
02. juli 2003 - 16:02 #2
ja, det er jo let nok. men skal også tilbage igen :)
Avatar billede webcreator Nybegynder
02. juli 2003 - 16:03 #3
(sådan så min første version nemlig også ud :)
Avatar billede webcreator Nybegynder
02. juli 2003 - 16:04 #4
og så er der problemet med tekst-filer mm. som åbner i browseren :o/
Avatar billede ohmish Nybegynder
02. juli 2003 - 16:17 #5
så må du finde de forskellige typer headere der kan sættes til hver filtype.

en god en er:  header("Content-type: application/ms-download");
Avatar billede tipsen Nybegynder
02. juli 2003 - 16:17 #6
tilbage til hvad?

Ovenstående giver ikke html-output, så du bliver stående på den oprindelige side, hvis det er ordentligt lavet!

Og problemet med at tekst-filer vises kan styres med de rigtige headere som fortæller browseren hvad den skal gøre - det største problem er så at tage højde for IE som ikke opfører sig efter standarderne og der derfor skal laves specialkode så det også fungerer i denne browser.
Avatar billede webcreator Nybegynder
02. juli 2003 - 16:18 #7
Ah, den bliver stående. Ja, det er self. en smart ting. Havde jeg ikke tænkt på
Avatar billede webcreator Nybegynder
02. juli 2003 - 16:19 #8
Det med header og content-type - kan jeg få lidt mere forklaring på det ?
Avatar billede webcreator Nybegynder
02. juli 2003 - 16:22 #9
Kan man ikke få en fælles content-type, der dækker alle filer uden undtagelse ?
Avatar billede tipsen Nybegynder
02. juli 2003 - 16:24 #10
Jo - og det vil fungere i alle browsere som følger standarden - dvs. ikke i IE...

Du kan kigge på et af mine gamle spørgsmål:

Jeg nåede dog aldrig selv at kode det pga. tidsnød!
Avatar billede tipsen Nybegynder
02. juli 2003 - 16:24 #11
Avatar billede webcreator Nybegynder
02. juli 2003 - 16:27 #12
Geneialt, jeg har selv fået det til at virke. Manglede bare ideen med at have det i samme dokument :)

Og sjovt nok, virker det fint med højreklik, og Save Target as...

Men kigger lige på stuff'et, tip :-)
Avatar billede webcreator Nybegynder
02. juli 2003 - 16:57 #13
Hm, jeg kan ikke helt få update til at virke. Min kode :

if ($kate != "" && $file != "") {
    $q = mysql_query("SELECT dnld FROM uploads WHERE id = '$id'");
    $rowq = mysql_fetch_array($q);
    $dnld = $rowq["dnld"];   
    $dnld = $dnld+1;
    mysql_query("UPDATE uploads SET dnld = '$dnld' where id = '$id'");
    header("location:upload/" . $kate . "/" . $file . "");
    }

$kate, $id og $file er udfyldt. Den henter nemlig filen.
Men der ændres intet i databasen :(

Den burde hente nummeret 1 fra mit integer-felt, lægge det sammen med 1, og smide den nye værdi tilbage i feltet.
Avatar billede webcreator Nybegynder
02. juli 2003 - 17:04 #14
Hm, kan da nu se, at den ikke henter nogen værdi - men mit felt hedder dnld - mærkeligt.
Avatar billede ohmish Nybegynder
02. juli 2003 - 17:05 #15
husker du at bruge $_GET ?
Avatar billede webcreator Nybegynder
02. juli 2003 - 17:06 #16
Jeg bruger REQUEST - klare det hele :)
Avatar billede schaefner Juniormester
02. juli 2003 - 17:06 #17
if ($kate != '' && $file != "") {
    mysql_query("UPDATE uploads SET dnld = dnld+1 WHERE id = $id");
    header("Location: upload/$kate/$file");
}
Avatar billede ohmish Nybegynder
02. juli 2003 - 17:07 #18
ok.. og id ER også udfyldt?
Avatar billede schaefner Juniormester
02. juli 2003 - 17:07 #19
if (isset($kate,$file)) {
    mysql_query("UPDATE uploads SET dnld = dnld+1 WHERE id = $id") or die(mysqL-error());
    header("Location: upload/$kate/$file");
}
Avatar billede ohmish Nybegynder
02. juli 2003 - 17:07 #20
prøv at rette til: mysql_query("UPDATE uploads SET dnld = dnld+1 WHERE id = $id") or die (mysql_error());
Avatar billede webcreator Nybegynder
02. juli 2003 - 17:07 #21
Ja, den er self. lettere :)
Men vil alligevel gerne vide, hvad der er galt med :
    $q = mysql_query("SELECT dnld FROM uploads WHERE id = '$id'");
    $rowq = mysql_fetch_array($q);
Avatar billede schaefner Juniormester
02. juli 2003 - 17:07 #22
ahhh:
or die(mysql_error());
Avatar billede ohmish Nybegynder
02. juli 2003 - 17:08 #23
hehe
Avatar billede webcreator Nybegynder
02. juli 2003 - 17:08 #24
Nåå, jeg får ikke ID'et med tilbage, når jeg trykker på linket. Derfor ! :)
Avatar billede ohmish Nybegynder
02. juli 2003 - 17:09 #25
go' sommer til alle. jeg smutter til byen
Avatar billede webcreator Nybegynder
02. juli 2003 - 17:11 #26
I lige måde :)
Avatar billede webcreator Nybegynder
02. juli 2003 - 17:13 #27
Schaefner > Jeg synes du skal have points - kan godt lide den korte version , hehe :)
Avatar billede webcreator Nybegynder
02. juli 2003 - 17:14 #28
Ohmish > Hov, du spurgte jo rent faktisk tidligere, om ID var udfyldt. Jamen så får du også lidt :-D
Avatar billede schaefner Juniormester
02. juli 2003 - 17:15 #29
jamen, vi kan da dele ;)
Avatar billede tipsen Nybegynder
02. juli 2003 - 18:41 #30
Glad for at du fik det til at virke - husk lige at få testet løsningen i nogle forskellige webbrowsere for en sikkerheds skyld!
Avatar billede thorus Nybegynder
05. juli 2003 - 20:59 #31
Prøv her -> www.phpuniverset.dk 

Det er primært kun om PHP/mySQL
Avatar billede ohmish Nybegynder
18. juli 2003 - 17:38 #32
nå, det gjorde vi så ikke.. :)
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