logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

utilisateurs:hypathie:tutos:php_jquery-ajax_autocomplete [09/06/2021 18:36] (Version actuelle)
Hypathie créée
Ligne 1: Ligne 1:
 +====== PHP_Jquery_AJAX_Autocomplete ======
 +
 +  * Objet : Remplir un menu déroulant avec le data d'une base de données
 +  * Niveau requis : {{tag>​avisé}}
 +  * Commentaires : //Contexte d'​utilisation du sujet du tuto. // FIXME
 +  * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
 +
 +===== Code =====
 +
 +=== Jquery fonction $.ajax ===
 +
 +<code php>
 +// file name : formulairePersonne.php
 +
 +   <​div>​
 +
 +
 +        <div class="​formulaire">​
 +            <form method="​post"​ action="<?​php echo htmlspecialchars($_SERVER["​PHP_SELF"​]);?>">​
 +            <input type="​text"​ hidden name="​idMembre"​ value="<?​php echo $infosAdrr['​idMembre'​] ?>">​
 +            <​legend>​ Informations complémentaires : </​legend>​
 +            </br>
 +            <label style="​font-weight:​bold;">​Pour le membre :</​label>​
 +            <​label>​ <?php echo $infosAdrr['​nom'​] ?> </​label>​
 +            <​label><?​php echo $infosAdrr['​prenom'​] ?></​label>​
 +            </br>
 +            <label style="​font-weight:​ bold;">​Pseudo :</​label>​
 +            <​label><?​php echo $infosAdrr['​pseudo'​] ?></​label>​
 +            </br>
 +            <​p><​span class="​error">​* Champs obligatoires</​span></​p>​
 +            <label style="​font-weight:​bold;">​Numéro de rue</​label>​
 +            </br>
 +            <input style="​width:​40px;"​ type="​text"​ name="​numRue"​ value="<?​php echo $infosAdrr['​numRue'​] ?>">​
 +            </​br></​br>​
 +            <label style="​font-weight:​bold;">​Libellé adresse</​label>​
 +            <span class="​error">​*</​span>​
 +            </br>
 +            <​input ​ style="​width:​350px;"​ type="​text"​ name="​adrrText"​ value="<?​php echo $infosAdrr['​adrrText'​] ?>">​
 +            </​br></​br>​
 +            <label style="​font-weight:​bold;">​Département</​label>​
 +            <span class="​error">​*</​span>​
 +            </br>
 +            <input style="​width:​150px;"​ type="​text"​ name="​dpt"​ id="​rechercheDepartements"​ value="<?​php echo $infosAdrr['​dpt'​] ?>">​
 +            <script language='​javascript'>​
 +                $('#​rechercheDepartements'​).autocomplete({
 +                    source: function( request, response ) {
 +                        $.ajax({
 +                            url : '​../​../​outils/​autocomplete.php',​
 +                            dataType: "​json",​
 +                                data: {
 +                                    filtreDepartement:​ request.term,​
 +                                    type: '​departements'​
 +                                },
 +                                    success: function( data ) {
 +                                    response( $.map( data, function( item ) {
 +                                            return {
 +                                                    label: item,
 +                                                    value: item
 +                                            }
 +                                    }));
 +                                }
 +                        });
 +                    },
 +                    autoFocus: true,
 +                    minLength: 0         
 +                });
 +            </​script> ​   ​
 +            </​br></​br>​
 +            <label style="​font-weight:​bold;">​Ville</​label>​
 +            <span class="​error">​*</​span>​
 +            </br>
 +            <input style="​width:​150px;"​ type="​text"​ name="​ville"​ id="​rechercheVilles"​ value="<?​php echo $infosAdrr['​ville'​] ?>">​
 +                <script language='​javascript'>​
 +                    $('#​rechercheVilles'​).autocomplete({
 +                        source: function( request, response ) {
 +                            $.ajax({
 +                                url : '​../​../​outils/​autocomplete.php',​
 +                                dataType: "​json",​
 +                                    data: {
 +                                        filtreVille:​ request.term,​
 +                                        filtreDepartement : $('#​rechercheDepartements'​).val(),​
 +                                        type: '​villes'​
 +                                    },
 +                                        success: function( data ) {
 +                                        response( $.map( data, function( item ) {
 +                                                return {
 +                                                        label: item,
 +                                                        value: item
 +                                                }
 +                                        }));
 +                                    }
 +                            });
 +                        },
 +                        autoFocus: true,
 +                        minLength: 2         
 +                    });
 +                </​script>  ​
 +            </​br></​br>​
 +            <label style="​font-weight:​bold;">​Code postal</​label>​
 +            <span class="​error">​*</​span>​
 +            </br>
 +            <input style="​width:​53px;"​ type="​text"​ name="​codePostal"​ id="​rechercheCp"​ value="<?​php echo $infosAdrr['​codePostal'​] ?>">​
 +                <script language='​javascript'>​
 +                    $('#​rechercheCp'​).autocomplete({
 +                        source: function( request, response ) {
 +                            $.ajax({
 +                                url : '​../​../​outils/​autocomplete.php',​
 +                                dataType: "​json",​
 +                                    data: {
 +                                        filtreCp: request.term,​
 +                                        filtreV : $('#​rechercheVilles'​).val(),​
 +                                        type: '​codePostal'​
 +                                    },
 +                                        success: function( data ) {
 +                                        response( $.map( data, function( item ) {
 +                                                return {
 +                                                        label: item,
 +                                                        value: item
 +                                                }
 +                                        }));
 +                                    }
 +                            });
 +                        },
 +                        autoFocus: true,
 +                        minLength: 0         
 +                    });
 +                </​script> ​            
 +            </​br></​br>​
 +            <label style="​font-weight:​bold;">​Téléphone</​label>​
 +            <span class="​error">​*</​span>​
 +            </br>
 +            <input style="​width:​110px;"​ type="​text"​ name="​telephone"​ value="<?​php echo $infosAdrr['​telephone'​] ?>">​
 +            </​br></​br>​
 +            <label style="​font-weight:​bold;"​ >​Genre</​label>​
 +            <span class="​error">​*</​span></​br>​
 +            </br>
 +            <label style="​border:​1px;​border-radius:​5px;​ box-shadow:​1px 1px 2px #C0C0C0 inset;
 +                          background-color:#​F2F2F2;​ margin-left:​6px;​ padding:​3px;">​Femme</​label> ​           ​
 +            <input style="​margin-left:​50px;"​ type="​radio"​ name="​sexe" ​
 +                <?php if (isset($infosAdrr['​sexe'​]) && $infosAdrr['​sexe'​]=="​F"​) echo "​checked";​ ?> value="​F">​
 +
 +            </​br></​br>​
 +            <label style="​border:​1px;​border-radius:​5px;​ box-shadow:​1px 1px 2px #C0C0C0 inset;
 +                          background-color:#​F2F2F2;​ margin-left:​6px;​ padding:​3px;">​Homme</​label>​
 +            <input style="​margin-left:​48px;"​ type="​radio"​ name="​sexe" ​
 +                <?php if (isset($infosAdrr['​sexe'​]) && $infosAdrr['​sexe'​]=="​M"​) echo "​checked";?>​ value="​M">​
 +            <input hidden type="​radio"​ name="​sexe"​ value="​pasRepondu" ​
 +                <?php if ($infosAdrr['​sexe'​]==""​) echo "​checked";?> ​
 +                <?php if (isset($infosAdrr['​sexe'​]) && $infosAdrr['​sexe'​]!="​pasRepondu"​) echo "​unchecked";?>>​
 +            </​br></​br> ​           ​
 +            <label style="​font-weight:​bold;">​Mot de passe actuel</​label>​
 +            <span class="​error">​*</​span>​
 +            </br>
 +            <input style="​width:​150px;"​ type="​password"​ name="​motPasse"​ placeholder="​**************"  ​
 +                   ​value="<?​php echo $infosAdrr['​motPasse'​] ?>">​
 +            </​br></​br></​br>​
 +            <input type="​submit"​ value="​Envoyer" ​
 +            <?php '<​script type="​text/​javascript">​location.reload();</​script>'​ ?> 
 +            />           
 +            </​form>​
 +        </​div>​
 +    </​div>​
 +
 +
 +</​code>​
 +
 +
 +
 +=== Requetage php servi à ajax ===
 +
 +
 +<code php>
 +<?php
 +
 +require '​ManagerAutocomplete.class.php';​
 +$managerAutocomplete = new ManagerAutocomplete();​
 +
 +
 +
 +
 +if($_GET['​type'​] == '​departements'​){ ​  
 +
 +    $data = $managerAutocomplete->​getNomsDepartements($_GET['​filtreDepartement'​].'​%'​);​
 +    echo json_encode($data);​
 +}
 +
 +
 +
 +if($_GET['​type'​] == '​villes'​){ ​  
 +
 +    $data = $managerAutocomplete->​getVillesFranceParDpt($_GET['​filtreVille'​].'​%',​ $_GET['​filtreDepartement'​].'​%'​);​
 +    echo json_encode($data);​
 +
 +
 +
 +if($_GET['​type'​] == '​codePostal'​){ ​  
 +
 +    $data = $managerAutocomplete->​getCodePostalParVille($_GET['​filtreCp'​].'​%',​ $_GET['​filtreV'​].'​%'​);​
 +    echo json_encode($data);​
 +
 +
 +</​code>​
 +
 +<code php>
 +// file name : ManagerAutocomplete.class.php
 +
 +<?php
 +
 +error_reporting(E_ALL);​
 +ini_set('​display_errors',​ '​1'​);​
 +include_once '​../​dto/​RequetesMembre.class.php';​
 +
 +class ManagerAutocomplete
 +{
 +
 +    private $requete;
 +
 +    public function __construct()
 +    {
 +        $this->​requete = new RequetesMembre();​
 +    }
 +
 +//////////////////////////////////////////////////////////////////////////////////////////////////////////// ​   ​
 +/////////////////////////////////////////// ​ Gestion affichage des pages ///////////////////////////////////​
 +////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 +
 +    public function getNomsDepartements($filtreDpt)
 +    {
 +        $data = $this->​requete->​getNomsDepartements($filtreDpt);​
 +        return $data;
 +    }
 +
 +
 +    public function getVillesFranceParDpt($filtreVille,​ $filtreDpt)
 +    {
 +        $data = $this->​requete->​getVillesFranceParDpt($filtreVille,​ $filtreDpt);​
 +        return $data;
 +    }
 +
 +    public function getCodePostalParVille($filtreCodePostal,​ $filtreVille)
 +    {
 +        $data = $this->​requete->​getCodePostalParVille($filtreCodePostal,​ $filtreVille);​
 +        return $data;
 +    }
 +
 +
 +    public function estUnePersonne($idMembre)
 +    {
 +        $bool = $this->​requete->​estUnePersonne($idMembre);​
 +        return $bool;
 +    }
 +}
 +
 +</​code>​
 +
 +=== Requetes ===
 +
 +<code php>
 +// RequetesMembre.class.php
 +
 +<?php
 +error_reporting(E_ALL);​
 +ini_set('​display_errors',​ '​1'​);​
 +
 +require '​Connexion.class.php';​
 +
 +class RequetesMembre
 +{
 +
 +    public function __construct()
 +    {
 +       ​$this->​pdo = Database :: connect();
 +       ​$this->​pdo->​setAttribute(PDO::​ATTR_ERRMODE,​ PDO::​ERRMODE_EXCEPTION); ​
 +    }
 +    ​
 +    public function estUnePersonne($idMembre)
 +    {
 +        $sql="​select personne.personne_id from personne";​
 +        $sql.="​ join membre on personne.idMembre=membre.membre_id where membre.membre_id=$idMembre;";​
 +        $q = $this->​pdo->​query($sql)->​fetchColumn();​
 +        return (bool)$q;
 +    }
 +
 +    public function getNomsDepartements($filtreDpt)
 +    {
 +      ​
 +        $result = $this->​pdo->​prepare("​SELECT nom FROM Departements WHERE nom LIKE :​paramDepartement"​);​
 +        $result->​execute(array(':​paramDepartement'​ => $filtreDpt));​
 +        $data = array();
 +        foreach($result as $row)
 +        {
 +            array_push($data,​ $row['​nom'​]);​
 +        }
 +        return $data;
 +       
 +    }
 +  ​
 +
 +    public function getVillesFranceParDpt($filtreVille,​ $filtreDpt)
 +    {
 +        $result = $this->​pdo->​prepare("​SELECT Villes_france.ville_nom_reel FROM Villes_france INNER JOIN Departements ON  Villes_france.departement_code=Departements.num_departement WHERE Villes_france.ville_nom_simple LIKE :paramVille AND Departements.nom LIKE :​paramDepartement"​);​
 +        $result->​execute(array(':​paramVille'​ => $filtreVille,​ ':​paramDepartement'​ => $filtreDpt));​
 +        $data = array();
 +        foreach($result as $row)
 +        {
 +            array_push($data,​ $row['​ville_nom_reel'​]);​
 +        }   
 +        return $data;
 +    }
 +
 +
 +    public function getCodePostalParVille($filtreCodePostal,​ $filtreVille)
 +    {
 +        $result = $this->​pdo->​prepare("​select ville_code_postal from Villes_france where ville_nom_reel LIKE :paramVille AND ville_code_postal LIKE :​paramCp"​);​
 +        $result->​execute(array(':​paramCp'​ => $filtreCodePostal,​ ':​paramVille'​ => $filtreVille));​
 +        $data = array();
 +        foreach($result as $row)
 +        {
 +            array_push($data,​ $row['​ville_code_postal'​]);​
 +        }   
 +        return $data;
 +    }
 +    ​
 +}
 +
 +
 +</​code>​
 +
  
utilisateurs/hypathie/tutos/php_jquery-ajax_autocomplete.txt · Dernière modification: 09/06/2021 18:36 par Hypathie

Pied de page des forums

Propulsé par FluxBB