nemt syntax problem

Tags:    php

Hejsa

Efter en lang årrække hvor jeg ikke har brugt php og mysql er jeg løbet ind i et problem.

Jeg får et resultat ud fra min database som indeholder et link:

$row['sti']

indholdet af variablen er images/IMG_1912.JPG hvilket er helt som det skal være, men jeg vil gerne have " " omkring linket, da jeg skal bruge dette i forbindelse med at jeg skal slette en fil, som i nedenstående eksempel:

$myFile = "testfilnavn.jpg";
$fh = fopen($myFile, 'w') or die("can't open file");
fclose($fh);
unlink($myFile);

Hvordan skal jeg skrive det for at få $myFile til at være "images/IMG_1912.JPG" ??

$myFile = $row['sti']; Sætter jo $myFile = images/IMG_1912.JPG uden " " og jeg synes snart jeg har prøvet alt muligt med hensyn til " ' og \







Indlæg senest redigeret d. 08.03.2009 13:07 af Bruger #14768
Er du sikker på at det er tilfældet? Det fungerer ikke rigtigt på den måde, og jeg spekulerer hårdt over hvordan du er nået frem til det. Hvad har du gjort for at finde det præcise indhold af $row['sti'] ? Hvis du har udskrevet det, har den naturligvis ikke taget gåseøjnene med - de er ikke, og skal ikke være, en del af strengen.

Er du sikker på, at grunden til at du ikke kan åbne $row['sti'] med fopen ikke er fordi stien ikke er komplet (måske skal du igennem nogle undermapper før images/ eller sådan noget) eller fordi filen og/eller mappen den ligger i, ikke har skriverettigheder, og dermed ikke kan åbne med 'w' ?



Umiddelbart vil jeg sige at det du allerede har lavet vil virke, PHP skulle gerne automatisk opfatte det som en string, ikke en konstant (Som er sådan nogle uden " eller ' om, f.eks. $myFile = images/IMG_1912.JPG, her er images/IMG_1912.JPG altså navnet på en konstant)

EDIT: Eller bare følg hvad Per siger, det er hvad jeg får ud af at lege med katten imens jeg skriver



Indlæg senest redigeret d. 08.03.2009 13:29 af Bruger #8049
Hmm jeg har lavet en echo $row['sti']; og der kommer stien images/IMG_1912.JPG frem uden " " , men jeg havde slet ikke tænkt over at det skulle være sådan ;-)

Jeg har prøvet at skrive stien direkte, som nedenstående og så virker det fint, og filen bliver slettet:

$myFile = "images/IMG_1912.JPG";
$fh = fopen($myFile, 'w') or die("can't open file");
fclose($fh);
unlink($myFile);

men nedenstående virker som sagt ikke

$myFile = $row['sti'];
$fh = fopen($myFile, 'w') or die("can't open file");
fclose($fh);
unlink($myFile);



Dette kalder på noget god gammeldags debugging.

Prøv at lave dette script:
Fold kodeboks ind/udKode 


post så enten et link til scriptet eller copy/paste dit output her.



Indlæg senest redigeret d. 08.03.2009 14:03 af Bruger #8223
Hvorfor åbner og lukker du filen før du sletter den?

Det er slet ikke nødvendigt.

unlink($row['sti']);



Hvorfor åbner og lukker du filen før du sletter den?

Det er slet ikke nødvendigt.

unlink($row['sti']);

Muligvis ikke nødvendigt, men det er god kodepraksis at lukke alle forbindelser man åbner :) Derudover har det ikke noget med det reelle problem at gøre.

Det kunne jo fx tænkes at han på et senere tidspunkt skal bruge filen til noget andet, inden han sletter den. og så er det da meget rart at vide, hvorfor den sql-genererede streng ikke er gyldig :)



Indlæg senest redigeret d. 08.03.2009 14:08 af Bruger #8223
t