- WordPress :5.2
- Statut : résolu
- Ce sujet contient 11 réponses, 2 participants et a été mis à jour pour la dernière fois par Cecilia37, le il y a 4 années et 10 mois.
-
AuteurMessages
-
25 février 2020 à 16 h 09 min #2300056
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.
25 février 2020 à 22 h 34 min #2300100Bonjour,
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 ?
26 février 2020 à 8 h 48 min #2300126Oui 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.
26 février 2020 à 9 h 27 min #2300128Bonjour,
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.
26 février 2020 à 11 h 50 min #2300142Ç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.
26 février 2020 à 12 h 01 min #2300146<?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. »%' »));
}
?>26 février 2020 à 12 h 49 min #2300155J’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.
26 février 2020 à 13 h 08 min #2300183le problème vient de cette ligne :
$resultats = $wpdb->get_results($wpdb->prepare(« SELECT * FROM ex_client WHERE cp Like ‘ ».$rech. »%' »));
26 février 2020 à 14 h 17 min #2300193‘”.$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.
27 février 2020 à 9 h 18 min #2300309Quand 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);27 février 2020 à 10 h 33 min #2300329Bonjour,
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.
27 février 2020 à 10 h 53 min #2300333Cette 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.
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.