[Résolu] Connexion à une table non wordpress (Créer un compte)

  • WordPress :5.2
  • Statut : résolu
12 sujets de 1 à 12 (sur un total de 12)
  • Auteur
    Messages
  • #2300056
    Cecilia37
    Participant
    Padawan WordPress
    51 contributions

    Bonjour,
    <div id= »fwf_content »>Ma configuration WP actuelle :

    • – Version de WordPress : 5.3.2
    • – Version de PHP/MySQL : 7.2.19 / 5.6.43
    • – Thème utilisé : Hestia Pro
    • – Thème URI : https://themeisle.com/themes/hestia-pro/
    • – Extensions en place : Additional Variation Images Gallery for WooCommerce (1.1.37), All In One SEO Pack (3.3.5), API KEY for Google Maps (1.2.0), ARVE Advanced Responsive Video Embedder (8.10.20), Autoptimize (2.6.2), Autoptimize CriticalCSS.com Power-Up (1.18.0), Caldera Forms (1.8.10), Caldera Forms Anti Spam (0.2), Cookie Notice (1.2.50), Download Monitor (4.4.2), Elementor (2.9.2), Email Encoder – Protect Email Addresses (2.0.6), Email Templates (1.3.1.2), Enable Media Replace (3.3.10), Final Tiles Grid Gallery – Image Gallery (3.4.18), Folders (2.4.2), Forum_wordpress_fr (4.2), Gutenberg Blocks and Template Library by Otter (1.4.0), Ivory Search (4.4.6), MaxButtons (7.13.4), Orbit Fox Companion (2.9.2), Redirection (4.7), Sendinblue Subscribe Form And WP SMTP (2.9.11), Shortcodes Ultimate (5.7.0), Title and Nofollow For Links (1.09), Variation Swatches for WooCommerce (1.0.76), WooCommerce (3.9.2), WP-Advanced-Search (3.3.3), YITH WooCommerce Catalog Mode (1.6.16)
    • – Adresse du site : https://weser.fr
    • – Nom de l’hébergeur : Apache

    </div>
    Problème(s) rencontré(s) :

     

    Bonjour j’ai intégré une table personnelle dans ma base de donnée WordPress que j’utilise pour un extranet développé en PHP.

    Je souhaiterai pouvoir me connecter à cette table dans une Page WordPress via un formulaire de recherche.

    Savez-vous comment faire?

    Merci pour votre retour.

    #2300100
    ferman
    Modérateur
    Maître WordPress
    7366 contributions

    Bonjour,

    Avec $wpdb, il est possible de se connecter à une table non-wordpress mais comment comptez-vous interagir avec elle? Par des requêtes toutes prêtes ?

    #2300126
    Cecilia37
    Participant
    Padawan WordPress
    51 contributions

    Oui j’ai commencé à utiliser $wpdb.

    Je ne pensais pas développer en PHP mais je pense que je ne vais pas avoir le choix. Je connais le php, donc je vais pouvoir faire me propre requête.

    Pour le moment, je créé un modèle de page, j’ai bien réussi à me connecter à la table.

    <?php
    // 1st Method – Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP object

    $rech=$_POST[« cp »];

    global $wpdb;

    // séléction des clients dont le code postal contient la recherche
    $results = $wpdb->get_results( « SELECT * FROM ex_client WHERE cp Like % ».$rech. »% », OBJECT );

    ?>

    Reste plus qu’à créer un formulaire et la page de résultat dans ce modèle.

    Je vous tiens tiens au courant.

     

    #2300128
    ferman
    Modérateur
    Maître WordPress
    7366 contributions

    Bonjour,

    Pour des raisons de sécurité il vaut mieux faire la requête « SELECT » avec « prepare » mais vous y avez sans doute pensé. Le « OBJET » n’est pas nécessaire; c’est ce qui est retourné par défaut.

    #2300142
    Cecilia37
    Participant
    Padawan WordPress
    51 contributions

    Ça faisait un moment que je n’avais pas développé en PHP, il y a beaucoup de changement maintenant. Merci pour l’info.

    Je mets mon code à jour.

    #2300146
    Cecilia37
    Participant
    Padawan WordPress
    51 contributions

    <?php
    // 1st Method – Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP object

    //isset détermine si la variable est nulle

    if (isset($_POST[« cp »])!= » »)
    {
    $rech=$_POST[« cp »];

    global $wpdb;

    // séléction des clients dont le code postal contient la recherche

    $results = $wpdb->get_results($wpdb->prepare(« SELECT * FROM ex_client WHERE cp Like ‘% ».$rech. »%' »));
    }
    ?>

    #2300155
    Cecilia37
    Participant
    Padawan WordPress
    51 contributions

    J’ai mis ça comme code :

    <?php
    // 1st Method – Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP object

    //isset détermine si la variable est nulle

    if (isset($_POST[« cp »])>0)
    {
    $rech=$_POST[« cp »];
    echo « Liste des distributeurs pour le département : « .$rech. »<br> »;

    global $wpdb;

    // séléction des clients dont le code postal contient la recherche

    $resultats = $wpdb->get_results($wpdb->prepare(« SELECT * FROM ex_client WHERE cp Like ‘ ».$rech. »%' »));

    // Parcours des resultats obtenus
    foreach ($resultats as $post) {
    echo $post->societe ;
    echo ‘<br/>’ ;
    }

    }
    ?>

    Le résultat s’affiche bien, Sauf que j’ai l’erreur suivante : <b>Notice</b>: Undefined offset: 0 in<b>/home/hebergemhb/weser.fr.2019/wp-includes/wp-db.php</b>

    De quoi cela peut-il venir?

    • Cette réponse a été modifiée le il y a 4 années et 11 mois par Cecilia37.
    #2300183
    Cecilia37
    Participant
    Padawan WordPress
    51 contributions

    le problème vient de cette ligne :

    $resultats = $wpdb->get_results($wpdb->prepare(« SELECT * FROM ex_client WHERE cp Like ‘ ».$rech. »%' »));

    #2300193
    ferman
    Modérateur
    Maître WordPress
    7366 contributions

    ‘”.$rech.”%’”)); Déjà, les deux  » ‘  » ne sont pas les mêmes.

    Ensuite je ne sais pas bien ce que sont le % ni les points « . » avant et après $rech. Essayez pour voir …. LIKE %d, $rech »));

    (%d si cp est un nombre). J’imagine que c’est le cas.

    #2300309
    Cecilia37
    Participant
    Padawan WordPress
    51 contributions

    Quand on met Like ‘valeur%’ ça veut dire commence par valeur.

    Ça ne fonctionne pas sans les côtes.

    Ca fonctionne sans le prepare. En quoi est-il indispensable?

    $rech_sql= »SELECT * FROM ex_client WHERE cp like ‘$rech%’ order by ville »;
    $resultats = $wpdb->get_results($rech_sql);

    • Cette réponse a été modifiée le il y a 4 années et 10 mois par Cecilia37.
    • Cette réponse a été modifiée le il y a 4 années et 10 mois par Cecilia37.
    #2300329
    ferman
    Modérateur
    Maître WordPress
    7366 contributions

    Bonjour,

    Je sais bien ce que veut dire le % simplement je ne comprenais pas la syntaxe ‘”.$rech.”%’”) que vous avez d’ailleurs modifiée.

    En plus je croyais que vous vouliez faire une recherche simple par code postal (pas besoin de % dans ce cas) mais en fait je vois que c’est un peu plus compliqué et que le code postal est inclus dans une expression.

    Le prepare  n’est absolument pas nécessaire, c’est juste une mesure de sécurité recommandée pour les requêtes SQL de type « select ». Vous pouvez vous en dispenser si vous voulez.

    #2300333
    Cecilia37
    Participant
    Padawan WordPress
    51 contributions

    Cette syntaxe ‘”.$rech.”%’” est une habitude que j’ai pris dans mes précédents développements pour que la variable soit bien prise en compte et pas considérée comme un texte simple, mais je me rends bien compte quelle n’est plus indispensable, c’est pourquoi j’ai changé le code.

    Merci beaucoup pour votre aide.

    Bonne journée.

12 sujets de 1 à 12 (sur un total de 12)
  • Vous devez être connecté pour répondre à ce sujet.