comment utiliser le flux rss sur des cutoms fields de wordrpess

Mammouth du PHP | 506 Messages

22 nov. 2021, 09:01

Merci pour le lien
Mais après des essais voici la requête dont j ai besoin

Code : Tout sélectionner

'SELECT * FROM postmeta WHERE meta_key = ville_peche or meta_key = cours_deau or meta_key = titre'
du moins dans php myadmin cela me donne ce que je recherche

et donc ma requête complète

Code : Tout sélectionner

$bdd =new PDO("mysql:host=localhost;dbname=u48f;charset=utf8", "u3Yd", "S02"); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } $reponse = $bdd->query('SELECT * FROM _postmeta WHERE meta_key = ville_peche or meta_key = cours_deau or meta_key = titre'); // On affiche chaque entrée une à une while ($donnees = $reponse->fetch()) { var_dump($donnees); }
Mais rien ne s affiche

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 nov. 2021, 10:59

Passe ta gestion d'erreur PDO en WARNING, c'est plus simple pour debuguer.
https://www.php.net/manual/fr/pdo.error-handling.php

Ou alors si tu le mets en exception, il faut tout ton code lié à PDO dans le try... catch
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 506 Messages

22 nov. 2021, 11:03

merci pour la réponse de cette façon alors pour la connexion

Code : Tout sélectionner

<?php $dsn = 'mysql:dbname=testdb;host=127.0.0.1'; $user = 'dbuser'; $password = 'dbpass'; try { $dbh = new PDO($dsn, $user, $password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo 'Échec lors de la connexion : ' . $e->getMessage(); } ?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 nov. 2021, 11:12

Si tu as une erreur au niveau de ton query() ou de ton fetch() et qu'ils ne sont pas dans le try... catch ça ne sert à rien.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 506 Messages

22 nov. 2021, 11:29

merci pour l aide
donc je dois ajouter ma requête

Code : Tout sélectionner

$reponse = $bdd->query('SELECT * FROM _postmeta WHERE meta_key = ville_peche or meta_key = cours_deau or meta_key = titre'); // On affiche chaque entrée une à une while ($donnees = $reponse->fetch()) { var_dump($donnees); }
après echo échec lors de la connexion

Avatar du membre
Mammouth du PHP | 1564 Messages

22 nov. 2021, 12:44

Je travail en procédural mais en orienté objet, il me semble qu'il faut préparer la requête, du coup tes SELECT doivent être précédées de deux points:
WHERE meta_key = :ville_peche
Mais je vois que tu utilise query() donc, sans marque substitutive

En revanche il te faut donc réellement mettre ce que tu recherche:
WHERE meta_key = ' ton terme'

Mammouth du PHP | 506 Messages

22 nov. 2021, 20:09

merci pour vos aides

voici donc la requête qui fonctionne mais ne me retourne pas ce que j'ai dans les colonnes

Code : Tout sélectionner

"SELECT * FROM 2605flexi2202_postmeta WHERE meta_key = 'ville_peche' or meta_key = 'cours_deau' or meta_key = 'titre'"
lorsque j exécute un var_dump

j ai ceci

Code : Tout sélectionner

object(PDOStatement)#2 (1) { [“queryString”]=> string(119) “SELECT * FROM 2_postmeta WHERE meta_key = ‘ville_peche’ or meta_key = ‘cours_deau’ or meta_key = ‘titre'” }

Avatar du membre
Mammouth du PHP | 1564 Messages

22 nov. 2021, 20:47

Si tu cherche 'ville_peche' il faut qu'il y ai exactement 'ville_peche' dans la table, si dans la table c'est 'ville pêche', tu dois rechercher 'ville pêche'

Mammouth du PHP | 506 Messages

22 nov. 2021, 22:17

dans ma table j ai deux colonnes qui m intéresse pour l exemple
je souhaite donc trier la colonne meta_key sur peche_ville et récupérer la meta_value correspondante
Image

Avatar du membre
Mammouth du PHP | 1564 Messages

22 nov. 2021, 22:37

Te faut pas faire un var_dump mais faire un mysqli_fetch_assoc de ta requête exécutée.

Tu peux aussi metre des parenthèses si ta recherche concerne un lot, ex: (meta_key = 'ville_peche' or meta_key = 'cours_deau' or meta_key = 'titre')

Tu peux aussi taper des commande SQL dans ton phpmyadmin pour les tester avant de les faire en PHP, attention quand même car c'est direct, pas le droit à l'erreur! Si tu supprime quelque chose il te demandera confirmation mais prudence.

Mammouth du PHP | 506 Messages

22 nov. 2021, 23:10

Merci pour le temps et l aide que tu m accordes
c est bien ce que j ai fait avant tout
dans phpmyadmin
j obtiens ce que je souhaite avec cette requête
SELECT * FROM `postmeta` WHERE `meta_key` = 'ville_peche' or `meta_key` = 'cours_deau'or `meta_key` = 'titre'

oui oui je reste prudent dans phpmyadmin et bien entendu ce qui m intéresse c est de récupérer les valeurs de la colonne meta_value

Mammouth du PHP | 506 Messages

23 nov. 2021, 00:34

voila j ai enfin fini par trouver
je parviens a tout afficher ce que je veux
Mais il me reste un petit soucis
c est que dans mon exemple j ai besoin de recueillir les informations de ville_peche et de cours_deau
avec l affichage des résultats tel que je l ai
j 'ai bien les villes et ensuite les cours d eaux
mais j aurais souhaiter avoir
ville
cours d'eau
ville
cours d'eau
ect....

Code : Tout sélectionner

$reponse = $bdd->query("SELECT * FROM postmeta WHERE (meta_key = 'ville_peche' )OR (meta_key = 'cours_deau' ) "); // On affiche chaque entrée une à une while ($donnees = $reponse->fetch()) { ?> <p> le nom du cours d eau est<?php echo $donnees['meta_value']; ?> <br /> </p> <?php }

Avatar du membre
Mammouth du PHP | 1564 Messages

23 nov. 2021, 00:47

vilel c'est meta_value ? où est le cours d'eau dans la table postmeta ? si c'est dans une autre table il te faudra jointer les deux tables avec une commande JOIN: https://sql.sh/cours/jointures
//Ne sert à rien:
(meta_key = 'ville_peche' )OR (meta_key = 'cours_deau' )

//c'est comme écrire:
meta_key = 'ville_peche'  OR meta_key = 'cours_deau' 

//tu peux éventuellement faire ceci pour avoir du sens:
(meta_key = 'ville_peche'  OR meta_key = 'cours_deau')

Mammouth du PHP | 506 Messages

23 nov. 2021, 01:01

merci pour les codes
oui ville et cours d eaux sont dans la même table
mais le résultat est pareil
d abord s'affichent toutes les villes et en dessous tous les cours d eaux

Avatar du membre
Mammouth du PHP | 1564 Messages

23 nov. 2021, 01:06

Regarde ce que tu as dans $donnees et sert toi des donées que tu veux.