IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WordPress PHP Discussion :

Création flux RSS (2 tables mysql)


Sujet :

WordPress PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut Création flux RSS (2 tables mysql)
    Bonjour,

    j'ai récemment lancé un site d'offre de stage en entreprise qui tourne sur wordpress (theme acheté).

    Je souhaite réalisé un flux xml reprenant différentes informations.

    Mes données concernant les offres de stage sont sur deux tables :

    wp_posts et wp_postmeta

    Structure (synthétisée) wp_posts : ID / post_title / post_content / guid / post_date
    Structure wp_postmeta : meta_id / post_id /meta_key / meta_value

    Voici le code utilisé pour créer mon flux rss :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
        header("Content-Type: application/rss+xml; charset=ISO-8859-1");
     
        DEFINE ('DB_USER', 'root');
        DEFINE ('DB_PASSWORD', 'root');
        DEFINE ('DB_HOST', 'localhost:8888');
        DEFINE ('DB_NAME', 'wordpress'); 
     
        $rssfeed = '<?xml version="1.0" encoding="ISO-8859-1"?>';
        $rssfeed .= '<rss version="2.0">';
        $rssfeed .= '<channel>';
        $rssfeed .= '<title>My RSS feed</title>';
        $rssfeed .= '<link>http://www.mywebsite.com</link>';
        $rssfeed .= '<description>This is an example RSS feed</description>';
        $rssfeed .= '<language>en-us</language>';
        $rssfeed .= '<copyright>Copyright (C) 2009 mywebsite.com</copyright>';
     
        $connection = @mysql_connect(localhost, root, root)
            or die('Could not connect to database');
        mysql_select_db(wordpress)
            or die ('Could not select database');
     
        $query = "SELECT * FROM wp_posts,wp_postmeta WHERE  `post_status` LIKE  'publish' AND  `post_type` LIKE  'job_listing' AND wp_posts.ID = wp_postmeta.post_id  ORDER BY post_date DESC";
        $result = mysql_query($query) or die ("Could not execute query");
     
        while($row = mysql_fetch_array($result)) {
            extract($row);
     
            $rssfeed .= '<item>';
            $rssfeed .= '<id>' . $ID . '</id>';
            $rssfeed .= '<title>' . $post_title . '</title>';
            $rssfeed .= '<description>' . $post_content . '</description>';
            $rssfeed .= '<link>' . $guid . '</link>';
            $rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($post_date)) . '</pubDate>';
            $rssfeed .= '<company>' . ??????? . '</company>';
            $rssfeed .= '</item>';
        }
     
        $rssfeed .= '</channel>';
        $rssfeed .= '</rss>';
     
        echo $rssfeed;
    ?>
    Tout fonctionne bien... Mais je ne sais pas comment aller chercher "company" (meta_value renvoyée par meta_key dans la table wp_postmeta)...

    A noter que ID dans wp_posts correspond à post_id dans wp_postmeta

    Voici un screenshot de la table wp_postmeta (où 16 correspont au post_id soit ID dans wp_posts) :



    Merci beaucoup pour votre aide !

  2. #2
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    Bonjour,

    Tu as essayé $row['meta_key'] pour afficher la donnée ? Sinon il faut voir comment fonctionne extract($row) et les variables qu'elle va générer et comment les récupérer.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rssfeed .= '<company>' . $row['meta_key'] . '</company>';
    Cordialement,

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut
    Merci pour ton retour, mais ce n'est pas l'idéal.

    En effet, en utilisant $row['meta_key'], je récupère _Company. En utilisant $row['meta_value'], je récupère le nom de l'entreprise (ce que je veux). Donc un point est résolu.

    Le souci c'est que j'ai également besoin de récupérer d'autres info dans cette table (wp_metapost) comme par exemple la valeur que renvoie la clé "geo_address"

    Une idée ?

  4. #4
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    Bonjour,

    Il faut rajouter ta table dans la requête et donc pour cela il te faut trouver un champ qui les relis.

    Tu peux nous donner la structure des tables s'il te plaît ?

    Cordialement,

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut
    Voici la structure des tables :

    wp_posts :


    wp_postmeta :


    Merci pour votre aide !

  6. #6
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    Vous avez oublié la table wp_metapost

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut
    erreur de frappe : wp_postmeta = wp_postmeta :-)

    A noter que ID dans wp_post correspond à post_ID dans wp_postmeta

  8. #8
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    Ah ok je voie mieu en effet.

    Dans ce cas tu vas devoir faire une requête dans ta boucle...

    Donc en version corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
        header("Content-Type: application/rss+xml; charset=ISO-8859-1");
     
        DEFINE ('DB_USER', 'root');
        DEFINE ('DB_PASSWORD', 'root');
        DEFINE ('DB_HOST', 'localhost:8888');
        DEFINE ('DB_NAME', 'wordpress'); 
     
        $rssfeed = '<?xml version="1.0" encoding="ISO-8859-1"?>';
        $rssfeed .= '<rss version="2.0">';
        $rssfeed .= '<channel>';
        $rssfeed .= '<title>My RSS feed</title>';
        $rssfeed .= '<link>http://www.mywebsite.com</link>';
        $rssfeed .= '<description>This is an example RSS feed</description>';
        $rssfeed .= '<language>en-us</language>';
        $rssfeed .= '<copyright>Copyright (C) 2009 mywebsite.com</copyright>';
     
        $connection = @mysql_connect(localhost, root, root)
            or die('Could not connect to database');
        mysql_select_db(wordpress)
            or die ('Could not select database');
     
        $query = "SELECT * FROM wp_posts,wp_postmeta WHERE  `post_status` LIKE  'publish' AND  `post_type` LIKE  'job_listing' AND wp_posts.ID = wp_postmeta.post_id  ORDER BY post_date DESC";
        $result = mysql_query($query) or die ("Could not execute query");
     
        while($row = mysql_fetch_array($result)) {
            extract($row);
     
            $rssfeed .= '<item>';
            $rssfeed .= '<id>' . $ID . '</id>';
            $rssfeed .= '<title>' . $post_title . '</title>';
            $rssfeed .= '<description>' . $post_content . '</description>';
            $rssfeed .= '<link>' . $guid . '</link>';
            $rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($post_date)) . '</pubDate>';
     
            //-- A partir de la tu as besoin de X info dans wp_postmeta
            $InfoPostMeta = mysql_query("SELECT * FROM wp_postmeta WHERE   post_id=".$ID." ");
     
            //-- On va ranger tes données dans un tableau
            $LesInfosRanger = array();
     
            while( $UneMeta = mysql_fetch_array($InfoPostMeta) )
                 $LesInfosRanger[$UneMeta['meta_key']] = $UneMeta['meta_value'];
     
            //-- Exemple pour compagny j'ai fait remonté les valeurs de meta_key en clé de mon tableau pour te simplifier la vie
            $rssfeed .= '<company>' . $LesInfosRanger['_Company'] . '</company>';
     
            //-- et donc pour la geo_address
            $rssfeed .= '<geoadress>' . $LesInfosRanger['geo_address'] . '</geoadress>';
     
     
            $rssfeed .= '</item>';
        }
     
        $rssfeed .= '</channel>';
        $rssfeed .= '</rss>';
     
        echo $rssfeed;
    ?>
    En espérant avoir été clair

    Cordialement,

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut
    Un grand merci, c'est TOP !

    Une dernière question..Sais tu (je suppose que oui) comment faire pour que fichier génère automatiquement un xml ?

    merci d'avance

  10. #10
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    faire pour que fichier génère automatiquement un xml ?
    Pas tout compris je dois bien avoué

    Cordialement,

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut
    En gros, la on a un script php... : www.domaine.com/flux.php

    Serait il possible d'obtenir un fichier www.domaine.com/flux.xml généré automatiquement à partir du script ?

  12. #12
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    Ah oui tout à fait à la fin de ton script au lieu de faire un "echo" tu sauvegarde le tout dans un fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    //-- en fin de code (on part du principe que tu as déjà créé le fichier et qu'il est accessible en écriture)
     
    file_put_contents('flux.xml',$rssfeed);
    ?>
    Cordialement,

  13. #13
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Regarde ce post.

    Meilleures salutations.

Discussions similaires

  1. [MySQL] création flux RSS personnalisé
    Par dezpfab dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 24/10/2011, 23h10
  2. Création directe de tables Mysql ?
    Par guidav dans le forum Outils
    Réponses: 2
    Dernier message: 25/01/2006, 11h49
  3. probléme avec la création de table Mysql 5
    Par developpeur_mehdi dans le forum Outils
    Réponses: 3
    Dernier message: 19/10/2005, 19h08
  4. Création de table MySQL
    Par dehbi dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 15/04/2004, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo