Exécuter du code php

Fermé
barale61 Messages postés 1192 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 17 avril 2024 - 27 juil. 2016 à 17:59
barale61 Messages postés 1192 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 17 avril 2024 - 28 juil. 2016 à 19:32
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>

2 réponses

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 1192 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 17 avril 2024 110
Modifié par barale61 le 27/07/2016 à 21:39
Oui mais en PHP je ne peux pas atteindre le DOM et exécuter mon code seulement si la classe est la bonne.
0
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 1192 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 17 avril 2024 110 > ranx
28 juil. 2016 à 19:32
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