Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/06/2011, 02h18   #1
Invité de passage
 
Inscription : juillet 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 7
Points : 0
Points : 0
Par défaut Requête un rien difficile

Bonjour,

Désolé tout d'abord d'arriver avec une question de quasi novice, mais là, j'ai un peu de mal à faire simple...
J'utilise un CMS et je ne peux pas changer la structure de ma base malheureusement. Je dois pouvoir afficher dans une page toutes les infos contenues dans la table "cms_content_props" pour un identifiant donné.
Par exemple toutes les infos qui concernent le livre dont l'identifiant(content_id) est "83".
Pour mieux m'expliquer voici le schéma de la structure (c'est plus simple qu'un long discours ) :



Je sais récupérer une série d'enregistrements avec les valeurs pour chaque champ, mais là, cela dépasse mes maigres compétences !
Merci d'éclairer ma lanterne
padoberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 02h42   #2
Membre actif
 
Inscription : février 2009
Messages : 150
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 150
Points : 198
Points : 198
Salut,
C'est peu être bien simplement ça que tu recherche :
Code :
SELECT * FROM cms_content_props WHERE content_id = 83
Pis ensuite une boucle sur mysql_fetch_array par exemple.
nextdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 07h43   #3
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Bonjour,

si le contenu de la table cms_content peut changer suivant l'id, il faut faire 2 requêtes:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$id= 83;
$sql = "SELECT prop_name FROM cms_content WHERE content_id = ".$id;
$res = mysql_query($sql) or die (mysql_error());
 
$sql = "SELECT ".mysql_result($res, 1)." FROM cms_content_props WHERE content_id = ".$id;
$res = mysql_query($sql) or die (mysql_error());
$resultats = mysql_fetch_array($res);
 
echo "<pre>";
print_r($resultats);
echo "</pre>";
en espérant que cela t'aide à comprendre...
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 11h35   #4
Invité de passage
 
Inscription : juillet 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 7
Points : 0
Points : 0
Merci, mais dans mon cas les id des deux tables correspondent forcément (cela l'a permis de jeter un œil à la doc sql pour mysql_result, ce qui n'est pas un mal).
J'ai mal posé ma question je crois, c'est encore plus basique que cela.
Bien voilà, pour repêcher(même le vocabulaire me trahit) le titre du livre je sais faire "au coup par coup" comme cela:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
$id= 84;
$req=mysql_query("select * from cms_content_props where content_id=84 and prop_name='titre_livre'");
 
while ($cms_content_props=mysql_fetch_object($req))
{
 
$titrelivre=$cms_content_props->content;
 
 
echo $titrelivre;;
 
 
 
}
par contre je suppose que si je souhaite récupérer pour un même content_id les seules propriétés 'titre_livre' 'longueur_livre' et 'date_livre' pour les afficher, il existe un moyen de le faire sans passer par trois requêtes séparées ?
padoberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 12h44   #5
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Citation:
Envoyé par nextdev Voir le message
Code :
SELECT * FROM cms_content_props WHERE content_id = 83
Bonjour,

je rajouterai juste ceci:

Code :
1
2
 
SELECT * FROM cms_content_props WHERE content_id = 83 and prop_name='titre_livre' or prop_name='longueur_livre' or prop_name='date_livre'
après tu es obligé de traité au cas par cas pour afficher les données...
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 13h45   #6
Invité de passage
 
Inscription : juillet 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 7
Points : 0
Points : 0
Merci, cela m'a bien aidé.
Pour info voici la façon dont je récupère mes données, je reste persuadé qu'il existe une solution beaucoup moins vorace en ressources et plus élégante.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$id= 84;
$req=mysql_query("select * from cms_content_props where content_id=84 and prop_name='titre-livre'
or prop_name='auteur-livre'");
 
  while($data = mysql_fetch_assoc($req))
  {
  $tablo[]=$data;
  }
 
  //les valeurs à afficher
  $titre=$tablo[0]['content'];
 $auteur=$tablo[1]['content'];
 
 
 
echo "<pre>";
echo $titre;
echo $auteur;
echo "</pre>";
Cela fonctionne oui, mais cela me semble être du bricolage alors si quelqu'un a une solution plus aboutie...
En attendant, je ne marque pas "résolu".
padoberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 15h22   #7
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
Bonjour padoberg,

La table que tu as créé est très générique et tu peux y insérer tout ce que tu veux, hors tu veux faire du spécifique de part de ta demande (CMS ... ). Par ailleurs, le jeu de données entre des enregistrements que tu nous montres est similaire dans la colonne "prop_name". Ne serait-il pas plus judicieux d'en faire un table à moins que tu sois contraint d'utiliser cette table?
Sinon la bricole est nécessaire. Tu devrais faire une fonction récupère les données d'un livre et les mettre dans un tableau sur une ligne. En gros tu construit la table en php.

Cdlt.
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 19h21   #8
Invité de passage
 
Inscription : juillet 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 7
Points : 0
Points : 0
J'ai simplifié pour l'exemple, mais il s'agit de deux tables intégrées à un CMS. Au niveau structure le truc me paraît un peu limite. Une autre table avec les propriétés de prop_name en nom de champ serait bien préférable mais je ne peux pas modifier.....
Si mon bricolage ne semble pas trop exubérant à ceux qui utilisent souvent php/mysql je vais rester avec cette solution
padoberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 01h44   #9
Membre actif
 
Inscription : février 2009
Messages : 150
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 150
Points : 198
Points : 198
Tu t'en ais très bien sorti
Bien vu pour le $tablo[]=$data; ce cas est parfait quand y'a la table qui va bien

Je pense qu'ont pourra pas faire grand chose de mieux que dans ce genre :
Code :
1
2
3
4
5
6
$id = 83;
$req = mysql_query('SELECT * FROM cms_content_props WHERE content_id = '.$id);
while($data = mysql_fetch_assoc($req)) { $livre[$data['prop_name']] = $data['content']; }
 
//print_r($livre);
echo $livre['titre_livre'].' : '.$livre['auteur_livre'];
Bon codage
nextdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h37.


 
 
 
 
Partenaires

Hébergement Web