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 :

Lecture BDD sous Wordpress


Sujet :

WordPress PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    -
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Lecture BDD sous Wordpress
    Bonjour,

    Débutant dans la programmation web, je cherche à afficher sur une page web la liste des boutiques renseignées dans une base de données.

    Je veux donc afficher seulement le nom et le siteweb des boutiques en lignes qui commence par la lettre 'a'.

    Ma base se découpe comme ceci :



    La capture d'écran n'est qu'un petit morceau de la liste. Il existe bel et bien des boutiques commençant par un a.

    'nom' et 'siteweb' sont deux chaîne de caractères.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php 
    $db = mysql_connect('*****', '*****', '*****'); 
    mysql_select_db('*****',$db); 
    $sql = "SELECT nom  , siteweb FROM ff_boutique_france WHERE nature = 'online' AND nom LIKE '%A' ";
    $req = mysql_query($sql) or die('Erreur SQL !'); 
    while($data = mysql_fetch_assoc($req)) {  
        echo .$data['nom'].' '.$data['siteweb'];
    }
    mysql_close(); 
    ?>
    Lors de l'affichage, rien ne s'affiche, ni erreur, ni données. Page blanche.

    Y'a t-il une chose particulière à savoir avec les bdd fournis par OVH?

    (Pour info, mon nom de serveur commence par mysql et se fini par .bdb, mon identifiant et ma base a le même nom, le pwd fonctionne ; connexion ok sur phpMyadmin)


    J'ai testé ma requête, elle fonctionne parfaitement.

    J'affiche cela dans une page Wordpress.


    Merci d'avance et désolé si je ne post pas au bon endroit.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    C'est pas du tout comme ça qu'on interroge une base dans WordPress.
    Il faut regarder dans la doc la méthode qui permet de faire ta requête (j'imagine qu'il doit y avoir une classe type DB).
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Candidat au Club
    Homme Profil pro
    -
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci Bovino.

    J'ai donc trouvé la classe $wpdb qui permet de faire des requêtes dans la base Wordpress.

    Malheureusement, à l’exécution du code, cela ne fonctionne pas non plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    global $wpdb;
     
    $resultats = $wpdb->get_results("SELECT nom FROM ff_boutique_france") ;
     
    // Parcours des resultats obtenus
    foreach ($resultats as $boutique) {
     echo $boutique->nom ;
     echo '<br/>' ;
    }
     
    ?>
    Le code devrait m'afficher juste le nom de toutes les boutiques.

    Mais, (parce qu'il y'a tjs un mais), cela m'affiche la majeure partie du code ci dessus.


  4. #4
    Candidat au Club
    Homme Profil pro
    -
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Evolution de mon problème.

    Je viens d'apprendre que par sécurité, Wordpress n’exécute pas de code php inseré dans une page.
    J'ai donc téléchargé une extension permettant d'insérer du code php.
    L'extension fonctionne sans problème. (test avec un simple echo).

    Mais lorsque j'affiche la page avec mon code+requete, la page cette fois ci reste blanche.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    AARGH!!

    Ne jamais exécuter du code PHP dans une page Wordpress. C'est l'équivalent de quitter une bijouterie avec les portes ouvertes. Si Wordpress l'interdit, c'est qu'il y a une raison importante. C'est un coup à te faire hacker ton site ça!

    Il faut soit utiliser le fichier functions.php et exécuter ton code avec un shortcode par exemple, ou créer un plugin, ou (le plus simple mais le moins propre) créer un template special pour la page (de la forme page-id.php où id est l'ID de la page, vois la documentation sur les templates pour plus de détail).

  6. #6
    Candidat au Club
    Homme Profil pro
    -
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Sacrilège!!!

    Je viens de créer mon shortcode pour afficher une liste de champs renseignés dans la base de données Wordpress. J'utilise donc $wpdb pour pouvoir faire mes requêtes. Le shortcode fonctionne mais je n’obtiens que la première valeur trouvée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function boutique_premiere_lettre ( $atts ) {
        global $wpdb;
        $sql = "SELECT nom  , siteweb FROM ff_boutique_france WHERE nature = 'online' AND nom LIKE 'A%'";
        $results = $wpdb->get_results($sql, ARRAY_A);
        foreach($results as $boutique){
            return $boutique["nom"] . $boutique["siteweb"];
        }
    }
    add_shortcode( 'shortcode_lettre', 'boutique_premiere_lettre');
    Une idée? Merci d'avance.

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Tu fais un return dans un foreach !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Candidat au Club
    Homme Profil pro
    -
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Tu fais un return dans un foreach !
    Et?

    Il se réinitialise à chaque fois?

    Je devrais placer le return en dehors de la boucle?

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Candidat au Club
    Homme Profil pro
    -
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Même en faisant ceci, je n'ai toujours que le premier résultat qui s'affiche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function boutique_premiere_lettre ( $atts ) {
    	global $wpdb;
    	$sql = "SELECT nom  , siteweb FROM ff_boutique_france WHERE nature = 'online' AND nom LIKE 'A%'";
    	$results = $wpdb->get_results($sql, ARRAY_A);
    	$tableau = '';
    	foreach($results as $boutique){
    		$tableau = $boutique['nom'] . ' ' . $boutique['siteweb'] . '</br>';
    	}
    	return $tableau;
    }
    add_shortcode( 'shortcode_lettre', 'boutique_premiere_lettre');

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut


    Si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $nb = 1;
    $nb = 2;
    $nb = 3;
    $nb = 4;
    $nb = 5;
    Que vaudra $nb à la fin selon toi ? 12345 ou 5 ?

    Si tu affectes ta variable à chaque itération de la boucle, c'est normal qu'en sortie, tu n’aies que la dernière valeur !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  12. #12
    Candidat au Club
    Homme Profil pro
    -
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Et donc comment je pourrais m'y prendre?

    Un truc du genre?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function boutique_premiere_lettre ( $atts ) {
    	global $wpdb;
    	$sql = "SELECT nom  , siteweb FROM ff_boutique_france WHERE nature = 'online' AND nom LIKE 'A%'";
    	$results = $wpdb->get_results($sql, ARRAY_A);
    	$i = '0';
    	$tableau = '';
    	foreach($results as $boutique){
    		$tableau [$i] = $boutique['nom'] . ' ' . $boutique['siteweb'] . '</br>';
    		$i++;
    	}
    	return $tableau;
    }
    add_shortcode( 'shortcode_lettre', 'boutique_premiere_lettre');
    Désolé si ca te parait invraisemblable. C'est la première fois que je gère ce genre de choses.

Discussions similaires

  1. CONNEXION BDD MYSQL DISTANTE SOUS WORDPRESS
    Par baldeadama dans le forum WordPress
    Réponses: 4
    Dernier message: 03/07/2015, 16h20
  2. Aide sur la création d'une bdd sous MySQL
    Par Shellai-93 dans le forum Débuter
    Réponses: 20
    Dernier message: 18/08/2006, 12h15
  3. [VB.NET] Enregistrer une BDD sous un autre format
    Par botanique dans le forum Windows Forms
    Réponses: 9
    Dernier message: 16/01/2006, 15h42
  4. [Mysql] Connection delphi à une bdd sous easyphp...
    Par pataluc dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/06/2004, 10h07
  5. Quel etait le secret de Rapid File, la bdd sous DOS
    Par Robert A. dans le forum Autres SGBD
    Réponses: 5
    Dernier message: 27/05/2003, 05h53

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