1

I have a simple php variable i need to carry over to a javascript part.

Code:

<?php
if ($p == 'home') { $selected == '0'; }
if ($p == 'music') { $selected == '1'; }
if ($p == 'videos') { $selected == '2'; }
if ($p == 'search') { $selected == '3'; }
if ($p == 'about') { $selected == '4'; }
if ($p == 'contact') { $selected == '5'; }
?>
<script type="text/javascript">
//SYNTAX: tabdropdown.init("menu_id", [integer OR "auto"])
tabdropdown.init("colortab", $selected) <-- $selected is the variable I want to carry over
</script>
Quentin
949k136 gold badges1.3k silver badges1.4k bronze badges
asked Jul 22, 2011 at 6:58

5 Answers 5

8

It is the same as any other piece of text.

tabdropdown.init("colortab", <?php echo $selected; ?>)

Since the value is one of a set of known values which are all numbers, it doesn't need escaping or quoting.

answered Jul 22, 2011 at 7:00
Sign up to request clarification or add additional context in comments.

5 Comments

+1. Was just writing... Add a semicolon after the variable. :)
Of, course this won't work if you have your JS in a separate file. But, for the purposes of the question, perfect answer.
well what i posted resides in the same file, but the base js file is called into that page.
tabdropdown.init("colortab", ) is what gets printed out
Then none of the if statements is true.
4

First of all

<?php
$map = array(
 'home' => 0,
 'music' => 1,
 'videos' => 2,
 'search' => 3,
 'about' => 4,
 'contact' => 5 
);
$selected = $map[$p];
?>

And i would recommend to just use some variable, like :

?>
<script type="text/javascript">
var data = { /*something that you want to pass to the script */ };
</script>
<?php

And then , lower, when you include your external JS files ( they should be right before closing tag ) , you can check within the files if variable data is set. And then act upon that data .

answered Jul 22, 2011 at 7:10

Comments

0

Although the above solutions will help, it required you having JavaScript embedded your HTML/PHP file (which, granted you do have).

If you have a separate js file then you will need to take a different approach.

Store it in a hidden HTML variable:

<input type="hidden" id="ColorTabSelected" value="<?php echo($selected);?>">

Then in your js

var selected = document.getEelementById("ColorTabSelected").value;
tabdropdown.init("colortab", selected);

In general, I find this approach preferable anyway, it promotes separation and means that you don't have a executable module of code that is changeable and dynamic. This means you can isolate it effectively for unit testing.

answered Jul 22, 2011 at 7:04

Comments

0
<?php
$p = 'home';
$map = array(
 'home' => '0',
 'music' => '1',
 'videos' => '2',
 'search' => '3',
 'about' => '4',
 'contact' => '5'
);
$selected = isset($map[$p]) ? $map[$p] : $map['home'];
?>
<script type="text/javascript">
tabdropdown.init("colortab", <?=$selected?>)
</script>
answered Jul 22, 2011 at 7:39

Comments

-1

Try with :

<?php $yourVar = "hello"; ?>
<script>
 var yourVar = "<?php echo $yourVar ?>"
</script>
answered Jul 22, 2011 at 7:02

1 Comment

that will just echo the (string) value of $yourVar, you need to add something like "var yourVar = "

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.