1

I have a php webpage that displays a calendar with specific dates displayed on it.

The dates are stored in a MySql database.

At the beginning of the webpage, I do the following:

<?php
//Load in database

$query = "SELECT ID, Full_Name, Arrival_Date, Departure_Date FROM bookings ORDER BY Arrival_Date";

if ($result = $dbc->query($query))       //Retrieve all the booking details
{
    $numrows = $result-> num_rows;

    $id_array;
    $name_array;
    $arrival_array;
    $departure_array;

    for ($count = 0; $count < $numrows; $count++)
    {
        $row = $result->fetch_assoc();

        $id_array[$count] = $row['ID'];
        $name_array[$count] = $row['Full_Name'];
        $arrival_array[$count] = $row['Arrival_Date'];
        $departure_array[$count] = strval($row['Departure_Date']);
    }
}
else
{
    //Error
}
?>

ID is a number Full_Name is a string Arrival_Date and Departure_Date are dates (YYYY-MM-DD)

The calendar is a javascript object therefore I need to get the booking information into my javascript function to be able to use it.

This is how I am trying to do that:

<script type="text/javascript">
    var array_ID = [<?php echo implode(",",$id_array); ?>];
    var array_name = [<?php echo implode(",",$name_array); ?>];
    var array_arrival = [<?php echo implode(",",$arrival_array); ?>];                                           
    var array_departure = [<?php echo implode(",",$departure_array); ?>]; 

    var booking_numbers = <?php echo $numrows; ?>;
</script>

However, I am getting an error 'Uncaught SyntaxError: Unexpected Identifier' on the line:

var array_name = [<?php echo implode(",",$name_array); ?>];

I suspect this is because some of the names have spaces in as the array is coming up as

var array_name = [Pippa,Pippa Smith,Pippa Smith];

When the php values are put in.

So here's my question. How can I tell javascript to treat those inputs as a string.

And I'm aware this might be a terrible way of combining javascript and php, so if anyone has any better suggestions, I'll happily take them!

2
  • Please show us the generated js code. If the values in $name_array are strings, you're at least missing quotes around them. Commented Mar 8, 2013 at 13:10
  • @Pippa Rose Smith, Can you look following URL? stackoverflow.com/questions/15090128/… Commented Mar 8, 2013 at 14:01

2 Answers 2

3

1) one way around is using implode in php and spliting it in javasciript using split..

best way though is to use echo json_encode($id_array) in php so that it converts the array into javascript object

Sign up to request clarification or add additional context in comments.

2 Comments

Upvoted, json_encode is the way to go here. You're asking for a world of hurt to try to encode strings from PHP into JavaScript objects any other way, given that the functionality is already a) available easily and b) well tested.
Ok, so do you mean var array_ID = [<?php echo json_encode($id_array); ?>];
1

You have to mark string literals for javascript by putting them between quotes.

var array_name = ["Pippa","Pippa Smith","Pippa Smith"];

Use json_encode() to get a valid javascript object literal from your php value(s).


on a side-note: why do you change the structure of the data from

[1] x y z
[2] X Y Z

to

 [1]  [2]
  x    X
  y    Y
  z    Z

i.e. why do you have those separate variables array_ID, array_name, array_arrival, array_departure instead of one array holding all the information?

Comments

Your Answer

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.