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 24/07/2011, 17h21   #1
Invité de passage
 
Homme
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 2
Points : 2
Par défaut Ne pas afficher plusieurs fois un champ

Bonsoir !

J'ai un problème dont je ne trouve pas la solution. Au lieu d'afficher ça :

Code :
1
2
3
4
Test		Lorem ipsum		Curabitur
Nest		Nullam tempor		Rhoncus
Test		Lorem ipsum		Curabitur
Test		Lorem ipsum		Curabitur
J'aimerais afficher simplement ça :

Code :
1
2
Test x3		Lorem ipsum		Curabitur
Nest		Nullam tempor		Rhoncus
Voici ma table et son contenu de test :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
--
-- Structure de la table `equipements`
--

CREATE TABLE IF NOT EXISTS `equipements` (
`d_id` int(6) NOT NULL AUTO_INCREMENT,
`d_joueur` int(6) NOT NULL,
`d_objet` int(6) NOT NULL,
PRIMARY KEY (`d_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

--
-- Contenu de la table `equipements`
--

INSERT INTO `equipements` (`d_id`, `d_joueur`, `d_objet`) VALUES
(1, 6, 1),
(2, 6, 2),
(3, 5, 1),
(4, 5, 2),
(5, 6, 1),
(6, 6, 1),
(7, 6, 1);
Je n'ai aucune idée de comment procéder mais j’espère que vous pourrez m'aider !
Fr3sh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2011, 17h32   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
Code SQL :
1
2
3
SELECT d_id, COUNT(d_ id) AS nblignes,d_joueur,d_objet
FROM equipements
GROUP BY d_id,d_joueur,d_objet
Ceci dit, le jeu d'enregistrements que tu proposes ne correspond absolument pas à ce que tu cherches à faire.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2011, 18h33   #3
Invité de passage
 
Homme
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 2
Points : 2
Merci, j'ai testé ce code (que je n'ai pas trop compris) mais ça ne marche pas. Et que voulez-vous dire par "le jeu d'enregistrements" ?
Fr3sh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2011, 21h46   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 015
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 015
Points : 18 298
Points : 18 298
Envoyer un message via MSN à CinePhil
C'est plutôt en enlevant d_id du SELECT et du GROUP BY !
Code :
1
2
3
SELECT COUNT(*) AS nblignes, d_joueur, d_objet
FROM equipements
GROUP BY d_joueur,d_objet
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 09h22   #5
Invité de passage
 
Homme
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 2
Points : 2
Merci d'essayer de m'aider mais c'est sans succès avec ce code-ci ! Je vais détailler concisément comment je procède :

Tout d'abord, je sélectionne les bons objets qui vont avec les bons joueurs :

Code :
1
2
3
4
5
$req3 = mysql_query("
SELECT * FROM joueurs, equipements, objets
WHERE '". $data["a_id"] ."' = d_joueur AND d_objet = c_id
GROUP BY d_objet
");
Sachez que $data["a_id"] est l'ID du joueur pour mettre les objets qui vont avec les bonnes personnes.

Le problème est maintenant d'afficher un petit nombre à côté des objets pour dire combien de fois il est porté par un joueur. Tentative avec le dernier code donné (non modifié) :

Code :
1
2
3
4
5
$req4 = mysql_query("
SELECT COUNT(*) AS nblignes, d_joueur, d_objet
FROM equipements
GROUP BY d_joueur,d_objet
");
Et ça ne marche pas. Voici comment j'affiche ce tableau :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
while ($data3 = mysql_fetch_array($req3))
{
while ($data4 = mysql_fetch_array($req4))
{
?>
<tr>
<td>Obtenu : <?php echo $data4[2]; ?> <?php echo $data3[11]; ?> 					<?php echo utf8_encode($data3[10]); ?></td>
<td><?php echo utf8_encode($data3[12]); ?></td>
<td><?php echo $data3[14]; ?></td>
</tr>
<?php
}
}
?>
Ce serait génial si vous pouviez m'aider !
Fr3sh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 12h54   #6
Invité de passage
 
Homme
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 2
Points : 2
J'ai finalement trouvé la réponse qui était bien loin de vos dires !

D'abord, je fais la requête de base :


Code :
$req3 = mysql_query("SELECT * FROM joueurs, equipements, objets WHERE d_joueur = '". $data["a_id"] ."' AND d_objet = c_id GROUP BY d_objet");
Puis je compte et je supprime les doublons :

Code :
$req4 = mysql_query("SELECT COUNT(d_objet) FROM equipements WHERE d_joueur = '". $data["a_id"] ."' GROUP BY d_objet");
Finalement, j'affiche :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
while (($data3 = mysql_fetch_array($req3)) && ($data4 = mysql_fetch_array($req4)))
{
?>
	<tr>
		<td>x<?php echo $data4[0]; ?> <?php echo $data3[11]; ?> <?php echo utf8_encode($data3[10]); ?></td>
		<td><?php echo utf8_encode($data3[12]); ?></td>
		<td><?php echo $data3[14]; ?></td>
	</tr>
<?php
}
?>

Merci quand même !
Fr3sh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h50.


 
 
 
 
Partenaires

Hébergement Web