2014-07-07 3 views
-2

J'essaie de générer dynamiquement une arborescence de menus avec une base de données. Le code ne semble pas enregistrer les fonctions JavaScript ni écrire correctement. Est-ce que quelqu'un a une idée?Intégrer des fonctions JavaScript avec PHP

<? php 
echo "<script type='text/javascript' src='dtree.js'></script>"; 

$db = new MyDB(); 

$sql =<<<EOF 
SELECT DISTINCT CATEGORY FROM ITEM; 
EOF; 

$ret = $db->query($sql); 
$i = 1; 
echo "<script type='text/javascript'>";   

    echo "d = new dTree('d');"; 
    echo "d.add(0,-1,'Introduction', 'index.html','','','img/blue.gif');";  
    while($row = $ret->fetchArray(SQLITE3_ASSOC)){ 
     echo "d.add(" . $i . ", 0, '" . $row['CATEGORY'] . "',);"; 
     $i++; 
    } 
echo "document.write(d);"; 

echo "</script>"; 
$db->close(); 

echo "Operation done successfully\n"; 

?> 
+2

Qu'est-ce qui est en cours d'écriture dans le navigateur? –

+2

quelle est la sortie? Est-ce exact? Avez-vous des erreurs javascript? Ou peut-être même des erreurs PHP? – giorgio

+0

Seul "Operation done successfully" est écrit. Il n'y a pas d'erreurs javascript ou php. :/ – L30

Répondre

0

Dans votre boucle while, vous avez omis le dernier paramètre du bouton dTree.add, vérifiez la première ligne dans la boucle while:

while($row = $ret->fetchArray(SQLITE3_ASSOC)){ 
    echo "d.add(" . $i . ", 0, '" . $row['CATEGORY'] . "',);"; 
    $i++; 
} 

Vous devez soit supprimer la virgule (,), ou ajouter une valeur de paramètre. Donc les deux exemples ci-dessous seraient corrects.

echo "d.add(" . $i . ", 0, '" . $row['CATEGORY'] . "', '');"; 
echo "d.add(" . $i . ", 0, '" . $row['CATEGORY'] . "');"; 

Pour le rendre un peu plus clair, la première ligne ci-dessous à quoi ressemble votre javascript comme en ce moment, les deux autres sont des exemples de javascript valables qui devraient être émis.

d.add(1, 0, 'A string',); // NOT correct, see the last comma 
d.add(1, 0, 'A string', ''); // correct, by adding an empty string, BUT LOOK IN THE DOCS FOR THE RIGHT PARAMETER TYPE 
d.add(1, 0, 'A string'); // Also correct, no fourth parameter 
Questions connexes