Exécuter du code php

barale61 Messages postés 1326 Statut Membre -  
barale61 Messages postés 1326 Statut Membre -
Bonjour,

Je souhaite exécuter du code php dans du js en appelant une fonction, mais cela ne marche pas.
Je vous remercie de votre aide.

            <DIV ID="DIR" class="hide-on-med-and-down ORDI">
                <?php 
                    function code(){
                        echo "<div>Contenu du dossier</div>";
                        $dossier = mb_strtoupper(suppAccent($donnees['denomination']));
                        $d = dir("Dossiers_Clients/".$dossier."/");
                        while($entree = $d->read()) {
                            echo "<div><a href='Dossiers_Clients/".suppAccent($donnees[' rel="nofollow" target="_blank"denomination'])."/".$entree."'>$entree</a><br>\n</div>";
                        }
                        $d->close();
                    }
                ?>
                <SCRIPT>
                    var element = document.getElementById("DIR");
                    if (element.className == "hide-on-med-and-down ORDI") {
                        element.innerHTML = ("<?php code(); ?>");
                    }
                    else{
                        element.innerHTML = ("");
                    } 
                </SCRIPT>
            </DIV>
A voir également:

2 réponses

ranx
 
Salut,

en effet c'est impossible d’exécuter(interpréter plutôt) PHP.
PHP nécessite un serveur Apache et comme son nom l'indique(preprocessor) celui ci s’exécute avant que la page existe, donc avant qu'il y ait du HTML ou du javascript.

Pour faire ça il faut utiliser AJAX qui consiste à créer un fichier temporaire(méta-données) qui sera ensuite lu par javascript.

AJAX = Asynchronymous Javascript And XML( même si le XML n,'est plus obligatoire(remplacé par json ou autre).

Donc rends les données à utilisées de façon asynchrone, cela permet de faire des chargements plus rapide ou de ne pas recharger une page pour l'interactivité qui ne le nécessiterais pas.

Sinon autant tout faire en PHP, les boucles (while ou autres)seront sur le même principe.

http://www.w3schools.com/php/php_ajax_php.asp
0
barale61 Messages postés 1326 Statut Membre 110
 
Oui mais en PHP je ne peux pas atteindre le DOM et exécuter mon code seulement si la classe est la bonne.
0
ranx
 
la solution simple est donc de nommer la classe selon la BDD, donc

echo '<element class='.$classe__utiliser'.'> etc...</element>';


et bien sûr de traiter cela avant par PHP:
if($donnees=='blanc'){
$classe_a_utiliser='blanc';
}
if($donnees=='noir'){
$classe_a_utiliser='noir';
}
etc...


ainsi le javascript peut être utilisé:
var tab_noir=document.getElementByClassName('noir');

tab_noir[0].doSomething(this);
0
barale61 Messages postés 1326 Statut Membre 110 > ranx
 
J'essai en php seulement mais cela m'affiche quand même le contenu en grands écrans comme sur les smartphones alors que j'ai un display à none sur ma class hide-large:
 /* DEBUT POUR LISTER LE DOSSIER SUR CLASSE SMARTPHONE */
            $divSmartphone = "<DIV ID=\"DIR\" class=\"hide-large SMARTPHONE\">";
            $maDivSmartphone = $divSmartphone;
                    function code_smartphone(){
                        global $bdd;
                        #Requête préparée
                        $reponse = $bdd->prepare('select * , DATE_FORMAT(date_ajout, "%d/%m/%Y") AS date  FROM fiche_client WHERE id = :id');
                        $reponse->execute(array('id' => $_GET['id']));
                        while ($donnees = $reponse->fetch()){
                                        echo "<div>Contenu du dossier</div>";
                                        $dossier = mb_strtoupper(suppAccent($donnees['denomination']));
                                        $d = dir("Dossiers_Clients/".$dossier."/");
                                        while($entree = $d->read()) {
                                            echo "<div><a href='Dossiers_Clients/".suppAccent($donnees[' rel="nofollow" target="_blank"denomination'])."/".$entree."'>$entree</a><br>\n</div>";
                                        }//while
                                        $d->close();
                                    }//code()
                        }//while
                            if ($maDivSmartphone == $divSmartphone){
                                    code_smartphone();
                            }
                            else{echo"";}
            echo "</DIV>";
0