Les Allergies
Alimentaires
Posez votre question Signaler

PHP/MSQL requête complexe [Résolu]

Spykees 13Messages postés 15 octobre 2010Date d'inscription 17 octobre 2010Dernière intervention - Dernière réponse le 17 oct. 2010 à 12:50
Bonjour,
J'ai un souci avec l'une de mes requête j'ai 3 table, une article, une matiere et la dernière pour la liaison artplat.
Voici mon code
$req = "SELECT article.titre, matiere.nom FROM article,matiere,artplat WHERE article.id_article = artplat.idarticle" ; 

$sql = mysql_query($req); 

while($data = mysql_fetch_array($sql)) 
{ 
echo 'Nom du matériaux: '.$data['titre'].' disponible en '.$data['nom'].'<br>'; 
} 

le problème c'est que ca m'affiche au temps de titre qu'il y a d'enregistrements dans la table artplat donc si j'ai deux matières, je me retrouve avec
planche en bois
planche en fer
au lieu de planche en bois et en fer
comment faire ma requête pour ne pas doubler le titre mais garder la boucle while pour l'affichage des autres articles ?
Merci d'avance de votre aide
Lire la suite 

PHP/MSQL requête complexe »

4 réponses
Réponse
+0
moins plus
En tout SQL :
SELECT
article.id_article,
article.titre,
GROUP_CONCAT( matiere.nom SEPARATOR ' et ' ) AS matiere
FROM article
INNER JOIN artplat ON article.id_article = artplat.idarticle
INNER JOIN matiere ON matiere.id_matiere = artplat.idmatiere
GROUP BY article.id_article

Avec PHP :
$compositions = array();
while($data = mysql_fetch_array($sql))
{
$compositions[ $data['article'] ][] = $data['matiere'];
}
foreach( $compositions as $nom => $matieres )
{
echo 'Nom du matériaux: '.$nom.' disponible en '.implode( ' et ' , $matieres).'<br>';
}
Spykees- 16 oct. 2010 à 17:39
jDéjà merci pour cette aide, j'ai effectuer le code de la façon suivante :

$req = "SELECT
article.id_article,
article.titre,
GROUP_CONCAT( platform.nom SEPARATOR ' et ' ) AS platform
FROM article
INNER JOIN artplat ON article.id_article = artplat.idarticle
INNER JOIN platform ON platform.id_matiere = artplat.idmatiere
GROUP BY article.id_article " ;

$sql = mysql_query($req);

$compositions = array();
while($data = mysql_fetch_array($sql))
{
$compositions[ $data['article'] ][] = $data['matiere'];
}
foreach( $compositions as $nom => $matieres )
{
echo 'Nom du matériaux: '.$nom.' disponible en '.implode( ' et ' , $matieres).'<br>';
}


malheureusement ca me donne l'erreur:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/1f8890efd1fe693ea12cf874c43a90b9/web/testeconnect.php on line 61
Ajouter un commentaire
Réponse
+0
moins plus
Ce sont 2 solutions différentes :)
Vraisemblablement, il y a une erreur SQL dans cette dernière version, possible qu'un champ y soit mal nommé.

Retournes à la 1ère version de SQL et gardes ce nouveau PHP
Spykees- 17 oct. 2010 à 12:50
haaaa mais quel idiot, j'ai renommé les champs avec la deuxième variante du script ... décidément, Je te remercie beaucoup :)
Ajouter un commentaire
Ce document intitulé « PHP/MSQL requête complexe » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?