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

Langage SQL Discussion :

Problème requête SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Par défaut Problème requête SQL
    Bonjour à tous!
    Je travaille actuellement sur un petit site basé sous Wordpress, et je tombe sur un problème de requête SQL en essayant de créer un petit script en Ajax qui récupère via un fichier PHP des données dans ma base...

    En fait les données à récupérer sont dispersées sur 2 tables de Wordpress "wp_posts" et "wp_postmeta"

    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
    (table wp_posts)
    id		post_content			post_title
    
    1		Contenu				Titre
    
    (table wp_postmeta)
    post_id		meta_key			meta_value
    
    1		Heure				15h30
    1		_rivasliderpro			a:0:{}
    1		_edit_last			1
    1		_edit_lock			1363555689:1
    1		_wp_page_template		default
    1		Genre				ska
    1		Origine				Nancy
    1		Myspace				http://fr.myspace.com/aaa
    1		Facebook			https://www.facebook.com/aaa
    1		Site				www.aaa.fr
    à partir de ça je dois extraire les données (en rouge) pour les afficher sur mon site, mon fichier PHP et la requête SQL se présentent comme ça pour l'instant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $query = "SELECT post_content,post_title,meta_key,meta_value FROM `wp_posts` JOIN `wp_postmeta` ON `wp_posts`.`id` = `wp_postmeta`.`post_id` WHERE id=1";
     
    $result = mysql_query($query,$dblink) or die (mysql_error($dblink));
     
    //Boucle sur le resultat
    while ($data = mysql_fetch_array($result)) {
          // Affichage du résultat
          echo 'Contenu : '.$data['post_content'].'<br/>';
          echo 'Titre : '.$data['post_title'].'<br/>';
    	  echo $data['meta_key'].': '.$data['meta_value'].'<br/><br/>';
    }  
    ?>
    J'ai joint les 2 tables dans ma requête, ce qui donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    post_id / id		post_content	post_title	meta_key			meta_value
    
    1			Contenu		Titre		Heure				15h30
    1			Contenu		Titre		_rivasliderpro			a:0:{}
    1			Contenu		Titre		_edit_last			1
    1			Contenu		Titre		_edit_lock			1363555689:1
    1			Contenu		Titre		_wp_page_template		default
    1			Contenu		Titre		Genre				ska
    1			Contenu		Titre		Origine				Nancy
    1			Contenu		Titre		Myspace				http://fr.myspace.com/aaa
    1			Contenu		Titre		Facebook			https://www.facebook.com/aaa
    1			Contenu		Titre		Site				www.aaa.fr
    Le PHP me renvoi pour chaque meta_key" / "meta_value" le contenu et le titre.
    Je ne sais pas du tout si je suis parti dans la bonne direction en joignant les tables, mon but étant de récupérer uniquement les données qui m’intéressent et ce, de la manière la plus propre possible...
    Pouvez vous me dire quel est le moyen d’optimiser ma requête pour arriver à mes fins? (plusieurs requêtes? écriture différente?...)
    J'avoue être un peu perdu à ce point...

    Merci de votre aide

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Par défaut
    Bon, j'ai juste trié les données récupérées avec PHP pour avoir ce que je veux:

    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
     
    $affiche = false;
    while ($data = mysql_fetch_array($result)) {
          // Affichage des résultats
    	 if($affiche == false){
    		echo 'Contenu : '.$data['post_content'].'<br/>';
          		echo 'Titre : '.$data['post_title'].'<br/>';
    		$affiche=true;
    	 }
     
    	 switch ($data['meta_key']) { 
    		case 'Genre':
    		case 'Heure':
    		case 'Origine':
    		case 'Myspace':
    		case 'Facebook':
    		case 'Site':
    		echo $data['meta_key'].': '.$data['meta_value'].'<br/>';
    		break;
    	}
    }
    après je crois que c'est très mal écrit...
    Si quelqu'un a une autre méthode ou une idée pour optimiser la requête ou le PHP, je suis preneur...

  3. #3
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Je remarque que les "meta_key" que tu ne veux pas avoir sont ceux commençant par "_". Alors tu peux ajouter And LEFT(meta_key,1)<>"_" pour éviter ces lignes.
    @+

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Par défaut
    Ah! Bien vu! Cela m'allège un peu le code en supprimant le "switch"
    Merci beaucoup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT post_content,post_title,meta_key,meta_value FROM `wp_posts` JOIN `wp_postmeta` ON `wp_posts`.`id` = `wp_postmeta`.`post_id` WHERE id=303 AND LEFT(meta_key,1)<>\"_\"";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $affiche = false;
    while ($data = mysql_fetch_array($result)) {
          // Affichage des résultats
    	 IF($affiche == false){
    		echo 'Contenu : '.$data['post_content'].'<br/>';
          		echo 'Titre : '.$data['post_title'].'<br/>';
    		$affiche=true;
    	 }
     
    	echo $data['meta_key'].': '.$data['meta_value'].'<br/>';
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème requête SQL
    Par mandaillou dans le forum Langage SQL
    Réponses: 15
    Dernier message: 03/10/2005, 11h37
  2. Problème requête SQL dans page ASP
    Par rocs dans le forum ASP
    Réponses: 14
    Dernier message: 26/07/2005, 15h38
  3. problème requête sql
    Par psychoBob dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/07/2005, 17h50
  4. problème requête sql
    Par perfectdams dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/06/2005, 18h09
  5. Réponses: 8
    Dernier message: 23/10/2003, 16h22

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