Avatar billede krk Nybegynder
05. juli 2007 - 10:09 Der er 17 kommentarer og
1 løsning

php i javaScript

Hej
hvordan kan jeg bruge en php variabel i JS?

Min php kode ser såadan ud:
<?php                                             
function num_files($directory='.')               
{                                                 
    return count(glob($directory."/../images/stor/*"));
}
print"Antal filer i mappen: ";
echo num_files();                                                                   
?>

og jeg kunne godt tænke mig at bruge num_files() værdien nede i mit JavaScript

<script type="text/JavaScript">
var numFiles = ???;

Er der nogen der kan hjælpe?
Avatar billede argmhz Nybegynder
05. juli 2007 - 11:45 #1
ja det kan jeg !

i og med php er noget der foregår på serveren og javascript er noget der foegår hos klienten (i din browser) så er du nød til at udskrive javascripten med phpén

noget i denne retning:

<?php                                           
function num_files($directory='.')             
{                                               
    return count(glob($directory."/../images/stor/*"));
}
print"Antal filer i mappen: ";
$output =  'var numFiles=' . $num_files . "\n";                                                               
?>
<script type="text/JavaScript">

<?php echo $output; ?>

håber det kunne hjælpe
Avatar billede krk Nybegynder
05. juli 2007 - 12:07 #2
Det virker ikke
og hvis jeg skriver echo $output; i phpén så udskrives der " Antal filer i mappen: var numFiles=  "
Avatar billede krk Nybegynder
05. juli 2007 - 12:26 #3
Kan man ikke lave det noget i denne retning:

<?php                                             
function num_files($directory='.')               
{                                                 
    return count(glob($directory."/../images/mellem/*"));
}
print"Antal filer i mappen: ";
$output= num_files();

echo "$output";                                                                   
?>

og så nede i js:
<script type="text/JavaScript">
var numFiles = <?php $output ?>

altså, jeg ved godt det ikke virker, men det var egentligt mit udgangspunkt
Avatar billede crazysnap Seniormester
05. juli 2007 - 12:26 #4
Hej krk,

Du burde kunne gøre noget lignende dette:


<?php                                             
function num_files($directory='.')               
{                                                 
    return count(glob($directory."/../images/stor/*"));
}

print"Antal filer i mappen: ";
echo num_files();

$numf = num_files();
?>


<script type="text/JavaScript">

var numFiles = '<?php echo $numf; ?>';

alert(numFiles);

</script>


Ganske vidst utestet, men prøv ad. :)


Mvh.

- Snap
Avatar billede olebole Juniormester
05. juli 2007 - 12:26 #5
<ole>

Læs, hvad argmhz skriver  ;o)

PHP kører på serveren - der virker JavaScript ikke
JavaScript kører på klienten - der virker PHP ikke

/mvh
</bole>
Avatar billede olebole Juniormester
05. juli 2007 - 12:27 #6
- hov, der kom to kommentarer mere, mens jeg skrev. Min kommentar var til (05/07-2007 12:07:45)  =)
Avatar billede olebole Juniormester
05. juli 2007 - 12:28 #7
- men der skal ikke gåseøjne om variablen. Så tror JS, der er tale om en streng ... ikke et tal  =)

var numFiles = <?php echo $numf; ?>;
Avatar billede olebole Juniormester
05. juli 2007 - 12:29 #8
- og det var vist ikke særlig klar tale. Der skulle have stået:
  "- men der skal ikke gåseøjne om variablen. Ellers tror JS, der er tale om en streng ... ikke et tal  =)
"
Avatar billede crazysnap Seniormester
05. juli 2007 - 12:33 #9
Hej krk,

Det er vitalt der er gåseøjne om, ellers virker det ikke!

Og det er muligt, har selv benyttet det ved en tidligere lejlighed, det er godt nok noget tid siden. Så prøv mit eksempel og se om det ikke virker.


Mvh.

- Snap :)
Avatar billede krk Nybegynder
05. juli 2007 - 12:38 #10
Hej Snap
Dit eksempel virker fint. Jeg kan bare ikke forstå hvad det er jeg har gjort galt, for det var min idé at skrive det på denne måde, men jeg kunne bare ikke få det til at virke.
Men nu virker det fint med dit eksempel.
Du henter bare point og så sammeligner jeg lige vores eksempler :-)
Avatar billede crazysnap Seniormester
05. juli 2007 - 12:40 #11
Hej krk,

Ja du nåede selv lige at komme med et ligende eksempel som mit nogen sek før jeg postede første gang. Det du mangler i dit er gåseøjnene omkring <?php $output ?> samt tilføje echo til strengen! :)


Men glad for at høre du fik det til at virke fra mit eksempel! :)



Mvh.

- Snap
Avatar billede krk Nybegynder
05. juli 2007 - 12:41 #12
Ja, jeg mangler gåseøjne og en lille ;
Sådan går det når man er nybegynder, så kan man sidde i timevis.. ;-)
Tak for hjælpen
Avatar billede crazysnap Seniormester
05. juli 2007 - 13:17 #13
Det var så lidt!

Og tak for pointene!.. :)

Mvh.

- Snap
Avatar billede olebole Juniormester
06. juli 2007 - 14:35 #14
crazysnap >> "Det er vitalt der er gåseøjne om, ellers virker det ikke!" >> det er noget vrøvl!

Det er netop vitalt, der _ikke_ er gåseøjne om JavaScript-variablen, da JS ellers ser variablen som en tekststreng ... ikke et tal.

Prøv f.eks:
    var numFiles = '5';
    alert(numFiles + 5); // returnerer: 55

- og derefter:
    var numFiles = 5;
    alert(numFiles + 5); // returnerer: 10

- pokkers til forskel, ikk'?  ;o)
Avatar billede crazysnap Seniormester
06. juli 2007 - 15:07 #15
Suk olebole, lad det nu ligge...

Selvfølgelig kender jeg forskellen på String og Integer. Men for at assigne php-variablen til javascript variablen er det nødvendigt med gåseøjne omkring, ellers virker det ikke og derfor jeg kalder det vitalt!? Hvis han så senere skal bruge variablen som en Integer må han benytte parseInt().

(Og jeg er så træt af din ofte arrogante og angribende fremtræden. Synes det ærgeligt du skriver sådan, specielt når du sidder inde med så meget viden om javascript)


- Snap
Avatar billede olebole Juniormester
08. juli 2007 - 20:17 #16
Det er noget lodret vrøvl! Prøv lige dette:

<?php                                             
$num = 5;
?>

<script type="text/JavaScript">
var num = <?=$num?>; // Tal
var num2 = '<?=$num?>'; // Streng

alert(num + 5); // skal returnere noget andet end 10, hvis jeg er arrogant
alert(num2 + 5); // skal returnere noget andet end 55, hvis jeg er arrogant
</script>

Nu, da vi har fundet ud af, jeg ikke har opført mig arrogant i denne tråd, hvad synes du så, vi skal kalde dig?  =)
Avatar billede crazysnap Seniormester
08. juli 2007 - 21:21 #17
Tjah ok, var ikke klar over man kunne assigne variable fra php til javascript med <?= $v ?> i stedet for '<?php echo $v; ?>'. Det er jo super (godt fundet), så behøver man ikke bruge parseInt() hvis man vil have det som en Integer...


Mvh.

- Snap
Avatar billede olebole Juniormester
09. juli 2007 - 11:02 #18
PHP assigner intet til JavaScript ... det er en misforståelse.

PHP udskriver indhold i form af tekst. Dette foregår på serveren - og om PHP udskriver tekst (herunder tal) mellem et par script-tags eller ej, er fuldstændig ligemeget ... det er blot tegn i en virtuel fil af typen text/html. Når 'filen' forlader serveren, har PHP intet med den at gøre længere.

Når 'filen' efterfølgende rammer browseren, har denne ikke kinamands chance for at vide, om et bestemt tegn i 'filen' er skrevet af dig - eller af PHP ... og den er da også rystende ligeglad  :)
Derfor har JavaScript-fortolkeren heller ikke forbehold overfor noget, der er udskrevet af PHP.

Det har med andre ord intet at sige, hvordan du udskriver et tegn/bogstav/tal med PHP ... bare du udskriver det. At jeg brugte PHP's shorthand syntaks, var et rent tilfælde. Jeg kunne ligeså godt have valgt at bruge print eller echo. De 'vitale' gåseøjne er under alle omstændigheder fuldstændig overflødige.

I det lys er det (undskyld udtrykket) tåbeligt, aktivt at ændre en JS-variabels type fra integer til string - og senere lade JS ændre den tilbage igen.
Nu er JS godtnok et svagt typed sprog, men principielt er det vitalt at undlade den slags ... med mindre, der er en rigtig god, specifik årsag.
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