læsning af pdf fil, going wrong

Tags:    upload

Hej folkens,

Jeg har lavet et script der uploader pdf filer til en database.

Nu skal jeg så læse disse filer på en anden side, og her er der problemer, da jeg faktisk ikke kan få filerne frem:

Her er min add_pdfs.php side:
Fold kodeboks ind/udPHP kode 

Så er filerne endt i databasen:
derefter har jeg lavet en side hvor jeg viser filerne, som via et link sender bruger videre til den side hvor hele pdf filen (Den valgte, red.) skal vises (OG SOM ER DER HVOR DET GÅR GALT)
Fold kodeboks ind/udPHP kode 

Her er så siden hvor jeg vil vise pdf filerne, efter de er klikket på via ovenstående side:
Men jeg får en undefined variable= $row i browseren og INGEN pdf vises.
Fold kodeboks ind/udPHP kode 


Det virker til at denne linie ikke bliver læst:
if(file_exists($file)&&(is_file($file))){...


Kan nogen se hvad der skal laves for at få det til at virke?

Det er lidt en hastesag, og jeg har desværre ikke meget erfaring i file uploads, og visning af PDF'er.

Mvh,
Jan Klemmensen



Indlæg senest redigeret d. 16.08.2011 16:45 af Bruger #16555
8 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Du har en parantes for meget på linje 8 i sidste kodeblok (den linje du selv fremhæver).


Men sikke da et rod, du bør da få ryddet op i din kode. Tror du ville have fundet fejlen selv, hvis din kode var organiseret :)

Eksempel på sidste blok
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 16.08.2011 17:01 af Bruger #10216
Hej Michael,

Mange tak for dit svar!

Ja jeg er enig i at det er lidt en rode butik, jeg vil lave mere struktur på det når det funger..

Men nu har jeg det her kode, og får den samme fejl:
Fold kodeboks ind/udPHP kode 


Som du skriver, så skal php ført, og derefter html, hvilket jeg jo også har i mit eksempel?

Til sidst har jeg php i html, da jeg vel skal echo $row['description']; så brugerne kan læse pdf'en.

Men jeg får $row = undefined variable, og filen læses ikke.

Kan du se hvordan det kan være?
Er det forkert grebet an?

jeg har læst mig frem til ovenstående da jeg ikke har uploadet filer til DB før.

Hvordan kan det være at der skal laves: die(); i det hele taget? Kan man ikke bare køre videre gennem sriptet, og echo det der nu skal echo'es ud længere nede?

Kan jeg have defineret PDFS_DIR forkert? Hvis du vil se på det?
Det er meningen jeg vil tilbage til min root folder, og ind i includes/pdfs.
Fold kodeboks ind/udPHP kode 


Er dette korrekt?



Indlæg senest redigeret d. 16.08.2011 17:33 af Bruger #16555
Når du bruger konstanter så skal det være uden gnyffer rundt om. Det er fint når du definerer dem, men herefter skal du ikke...



Okay, jeg har fjernet de single quotes der var omkring, men det resulterer i det samme, hvilket ikke er så prangende meget..

Dvs. at det stadig ikke fungerer :roll:

Hvis der skulle være en der har en halv time, så sidder jeg bundet fast til stolen, og venter på at blive klogere, og ikke midst få fundet ud af hvordan jeg kan læse den PDF fra databasen :)




$query = 'SELECT title, description, file_name, FROM pdfs WHERE tmp_name='.mysqli_real_escape_string($connection, $_GET['id']).'';

Det ser pænt mærkeligt ud, er det virkelig navnet på en pdf fil du der får retur ?

Da du senere bruger din "row" er du ude af din if sætning, så der eksisterer din variablen jo ikke længere, den er kun defineret i din funktion deroppe.



Indlæg senest redigeret d. 16.08.2011 19:17 af Bruger #10576
Jeg har gjort det, at når en pdf bliver uploaded til databasen, så går navnet gennem en sha1, og det er så det jeg har trukket ned fra databasen og brugt i $_GET, dvs de links der bliver lavet.

Men som sagt så har jeg ikke lavet uploads før, så jeg kan ikke lige gennemskue pt hvad der ellers er den smarteste måde at gøre det på.

Forslag er velkomne.. :-)

PS: Jeg prøvede lige at echo $row['description']; inde i if sætningen, og der skete intet. Så der bliver vel ikke fundet noget som helst.

Kender du til en løsning eller en tutotial der viser præcist det jeg prøver på at lave?

Tak for svar!



1) Har du kørt din SELECT og set at der kommer data ud fra databasen ?
2) Hvad melder den af fejl nu?
3) Lav fx en if(isset($row]))
echo "OK";
else
echo "FEJL";

når du prøver at hente data ud, så du ved om du har fået data.
4) hvis ikke, check at du har en database forbindelse.
5) hvis der er db-forbindelse, check at du er på den rigtige database.
6) skriv igen :)

PS: Prøv også lige at hent ud med indexes, altså med $row[0] og se om den kan spytte data ud sådan i stedet evt.




Indlæg senest redigeret d. 16.08.2011 19:46 af Bruger #10576
Jeg har lige gået igennem tjeck listen :-)

Der sker ikke noget hverken når jeg tjekker om $row er set, eller ved at bruge indexes ved output.

Alt der kører efter:
9. if(file_exists($file) && is_file($file)){....

bliver ikke kørt virker det til. Så vidt jeg kan se, kan det så være noget med hvordan filerne bliver uploadet ELLER hvordan/HVOR de bliver gemt?

Altså hvordan jeg definere der hvor de skal gemmes midlertidigt? Hvis jeg har forstået processen korrekt.

Jeg kan prøve at lægge alt ud, dvs.

1)Filen hvor pdf'erne bliver uploadet.
2)Filen hvor pdf'erne bliver lavet til links, der går til siden hvor jeg gerne vil vise hele filen når den er valgt.
3)Filen som skal vise pdf'en (Som ikke kan finde den, eller hvad der sker)


1)
Fold kodeboks ind/udPHP kode 


2)
Fold kodeboks ind/udPHP kode 


3)
Fold kodeboks ind/udPHP kode 


I config.php, som inkluderers i toppen af hvert script, definerer jeg PDFS_DIR - Som jeg bruger i scriptet. Jeg er ikke sikker på jeg har gjort det rigtigt?

Her er den constant:
Fold kodeboks ind/udPHP kode 

Når jeg har uloadet nogen test pdf'er, så er det ikke i den folder der er kommet en fil, men ude i root niveau. Selvom jeg har forsøgt..at sende pdf'erne (tmp_name, er det ikke korrekt?) ind til includes/pdfs

Spørg endelig hvis denne forklaring ikke gav mening.

Men det er det jeg har nu, og der kan godt uploades, det er det sidste script, hvor jeg vil vise filerne der ikke virker. Men måske er der er sammenhæng hen over de 3 filer der ikke er ok?




Indlæg senest redigeret d. 16.08.2011 20:28 af Bruger #16555
t