I would like to create Javascript arrays with some data from a PDO object. Here is my code:
$req = $bdd->query('SELECT
id AS user_id,
fname AS user_fname,
lname AS user_lname
FROM mand_users');
$autocomplete_users = '<script type="text/javascript"> var names_users = new Array(';
$users_ids = 'var users_ids = new Array(';
$i = -1;
while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) {
print_r($donnees);
$i++;
$user_full_name = $donnees['user_fname'].' '.$donnees['user_lname'];
$user_id = $donnees['user_id'];
if ( $i < count($donnees)-1) {
$autocomplete_users .= $user_full_name.', ';
$users_ids .= $user_id.', ';
} else {
$autocomplete_users .= $user_full_name.');';
$users_ids .= $user_id.');';
}
}
echo $autocomplete_users . $users_ids .'</script>';
print_r
returns
Array
(
[user_id] => 1
[user_fname] => Bob
[user_lname] => Smith
)
Array
(
[user_id] => 2
[user_fname] => Alice
[user_lname] => Smith
)
so the object's length would be 2. In this case, the JS code would look like this
<script type="text/javascript">
var names_users = new Array(Bob Smith, Alice Smith);
var users_ids = new Array(1, 2);
</script>
but instead I get this
<script type="text/javascript">
var names_users = new Array(Bob Smith, Alice Smith, var users_ids = new Array(1, 2, </script>
which means that the code in the else
is not executed. So I checked the object's length with count()
and it returned 3. How could you explain this ?