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 19/03/2011, 14h33   #1
Invité de passage
 
Homme
Inscription : juillet 2008
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : juillet 2008
Messages : 8
Points : 1
Points : 1
Par défaut Problème avec jointures

Bonjour à tous,

Voici mes tables:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
--
-- Base de données: `scmoreuil`
--
 
-- --------------------------------------------------------
 
--
-- Structure de la table `matchs`
--
 
CREATE TABLE IF NOT EXISTS `matchs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_correspondance` int(11) NOT NULL,
  `id_equipe1` int(11) NOT NULL,
  `id_equipe2` int(11) NOT NULL,
  `score` varchar(100) NOT NULL,
  `semaine` varchar(2) NOT NULL,
  `jour` varchar(1) NOT NULL,
  `date` bigint(20) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
 
--
-- Contenu de la table `matchs`
--
 
INSERT INTO `matchs` (`id`, `id_correspondance`, `id_equipe1`, `id_equipe2`, `score`, `semaine`, `jour`, `date`) VALUES
(1, 1, 1, 1, '0 - 0', '11', '7', 1300616157);
 
-- --------------------------------------------------------
 
--
-- Structure de la table `matchs_correspondance`
--
 
CREATE TABLE IF NOT EXISTS `matchs_correspondance` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
 
--
-- Contenu de la table `matchs_correspondance`
--
 
INSERT INTO `matchs_correspondance` (`id`, `nom`) VALUES
(1, 'Seniors A');
 
-- --------------------------------------------------------
 
--
-- Structure de la table `matchs_equipe`
--
 
CREATE TABLE IF NOT EXISTS `matchs_equipe` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
 
--
-- Contenu de la table `matchs_equipe`
--
 
INSERT INTO `matchs_equipe` (`id`, `nom`) VALUES
(1, 'SC Moreuil'),
(2, 'Amiens SC');
Ce que je voudrais c'est afficher ceci:

"
Seniors A
SC Moreuil 0 - 0 Amiens SC
"

On a besoin de jointure mais je ne sais pas comment faire.

pouvez-vous m'aider?

merci
psgmn80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 12h10   #2
Invité régulier
 
Homme Kévin
Inscription : mars 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 12
Points : 9
Points : 9
Salut

En admettant que ta base de données soient en MySQL, la solution que je te propose doit être correcte :

Code :
SELECT e.nom | " " | m.score | " " | p.nom FROM match m LEFT JOIN match_equipe e ON m.id_equipe1 = e.id, match_equipe p ON m.id_equipe2 = p.id;
Bon j'ai pas testé, y a peu être des erreurs, mais normalement ça doit être quelque chose du genre
spydemon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 17h36   #3
Invité de passage
 
Homme
Inscription : juillet 2008
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : juillet 2008
Messages : 8
Points : 1
Points : 1
Merci pour ta solution.

Je vais la tester mais à quoi sert les | " " |?

Merci
psgmn80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 23h47   #4
Invité régulier
 
Homme Kévin
Inscription : mars 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 12
Points : 9
Points : 9
Les pipes ( | ) permette de concaténer le tout ensemble.

En gros :
Code :
e.nom | " " | m.score | " " | p.nom
Retournera le nom de la première équipe + un espace + le score + un espace + le nom de la seconde équipe
spydemon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 20h51   #5
Invité de passage
 
Homme
Inscription : juillet 2008
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : juillet 2008
Messages : 8
Points : 1
Points : 1
Je ne comprends pas ton code.

peux tu me faire un exemple?
psgmn80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 10h21   #6
Invité régulier
 
Homme Kévin
Inscription : mars 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 12
Points : 9
Points : 9
Tu as testé ma requête ?
Si jamais elle fonctionne, je pense que ça sera un bon exemple
spydemon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 10h33   #7
Invité de passage
 
Homme
Inscription : juillet 2008
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : juillet 2008
Messages : 8
Points : 1
Points : 1
En faite j'ai fait cela:

Code :
1
2
$retour=mysql_query('SELECT e.nom | " " | m.score | " " | p.nom FROM match m LEFT JOIN match_equipe e ON m.id_equipe1 = e.id, match_equipe p ON m.id_equipe2 = p.id');
$donnees=mysql_fetch_array($retour);
Mais je fait comment pour afficher sur mon site:

echo ????

Merci
psgmn80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 14h01   #8
Futur Membre du Club
 
83pulse@gmail.com 83pulse@gmail.com
Inscription : février 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : 83pulse@gmail.com 83pulse@gmail.com

Informations forums :
Inscription : février 2011
Messages : 33
Points : 17
Points : 17
Si t'es dans une fonction, tu peux lancer return $donnees, sinon oui, echo $donnees
kfa1983 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 17h12   #9
Invité de passage
 
Homme
Inscription : juillet 2008
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : juillet 2008
Messages : 8
Points : 1
Points : 1
Oui mais donnees('nom'] ne fonctionne pas.

Merci de m'expliquer comment afficher.

Merci
psgmn80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 21h01   #10
Invité régulier
 
Homme Kévin
Inscription : mars 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 12
Points : 9
Points : 9
Code :
1
2
3
4
5
 
$resultat_requette = mysql_query("SELECT e.nom | " " | m.score | " " | p.nom FROM match m LEFT JOIN match_equipe e ON m.id_equipe1 = e.id, match_equipe p ON m.id_equipe2 = p.id;"); 
 
while ($affichage_ligne = mysql_fetch_array($resultat_requette)) 
      echo $affichage_ligne;
C'est comme ça que tu dois faire pour afficher les matchs de façon itérative (c'est à dire sans utiliser d'objet, ici en l’occurrence l'objet PDO).

Je te conseil de chercher sur internet si tu ne comprend pas ce bout de code. C'est des requêtes basiques en interrogation de base de données, c'est pas complexe à comprendre, et les infos abondent sur internet
spydemon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 11h50   #11
Invité de passage
 
Homme
Inscription : juillet 2008
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : juillet 2008
Messages : 8
Points : 1
Points : 1
J'ai cette erreur:

Parse error: parse error in C:\Program Files\Programmes\Internet\wamp\www\Scmoreuil v2_1\matchs_test.php on line 77

C'est la première ligne de ton code.

Merci
psgmn80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 23h52   #12
Membre actif
 
Inscription : décembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 184
Points : 198
Points : 198
faut échapper les doubles quotes
Code :
$resultat_requette = mysql_query("SELECT e.nom | \" \" | m.score | \" \" | p.nom FROM match m LEFT JOIN match_equipe e ON m.id_equipe1 = e.id, match_equipe p ON m.id_equipe2 = p.id;");
ou ecrire la chaine en simple quote
Code :
$resultat_requette = mysql_query('SELECT e.nom | " " | m.score | " " | p.nom FROM match m LEFT JOIN match_equipe e ON m.id_equipe1 = e.id, match_equipe p ON m.id_equipe2 = p.id;');
Helfima est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 18h23   #13
Invité de passage
 
Homme
Inscription : juillet 2008
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : juillet 2008
Messages : 8
Points : 1
Points : 1
J'ai cette erreur maintenant:
Code :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Program Files\Programmes\Internet\wamp\www\Scmoreuil v2_1\matchs_test.php on line 111
Voici mon code:
Code :
1
2
3
4
5
 
$resultat_requette = mysql_query('SELECT e.nom | " " | m.score | " " | p.nom FROM match m 
									LEFT JOIN match_equipe e ON m.id_equipe1 = e.id, match_equipe p ON m.id_equipe2 = p.id;');
while ($affichage_ligne = mysql_fetch_array($resultat_requette)) 
		echo $affichage_ligne;
Ligne 111:

Code :
1
2
 
while ($affichage_ligne = mysql_fetch_array($resultat_requette))

Merci
psgmn80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 02h39   #14
Membre actif
 
Inscription : décembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 184
Points : 198
Points : 198
je pense que ta requete retourne une erreur

Code :
1
2
3
$resultat_requette = mysql_query('SELECT e.nom | " " | m.score | " " | p.nom FROM match m 
									LEFT JOIN match_equipe e ON m.id_equipe1 = e.id, match_equipe p ON m.id_equipe2 = p.id;') or
die("Erreur requete : " . mysql_error());
en ajoutant le or die pour voire ce qui va pas aiderai mais bon j'utilise pas mysql donc j'en sais pas plus

a tien en lisant la doc c'est bien ca soit mysql_query retourne une ressource soit false
donc moi je ferai ceci (code ré agencé pour l'exemple et requête normalement corrigée)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
// constante permettant l'affichage ou non des bugs
// true pour les test et false en production
define('DEBUG_ON',true);
 
// ecrire sous cette fore facilite la lecture, la modification et la correction
$sql = ' SELECT e.nom | " " | m.score | " " | p.nom';
$sql.= ' FROM match m';
$sql.= ' LEFT JOIN match_equipe e';
$sql.= ' ON m.id_equipe1 = e.id';
$sql.= ' LEFT JOIN match_equipe p';
$sql.= ' ON m.id_equipe2 = p.id';
$sql.= ';';
// try/catch intercepte les exceptions
try {
	$resultat_requette = mysql_query($sql);
	// en théorie on teste toute variable avant utilisation
	if($resultat_requette){
		while ($affichage_ligne = mysql_fetch_array($resultat_requette)) {
			// petit test du retour pas vraiment utile dans notre cas mais tellement plus propre
			// surtout pour des codes avec des traitements derrieres
			// c'est pour l'exemple
			if(!is_null($affichage_ligne)){
				echo $affichage_ligne;
			}
		}
	} else {
		$message =  'Erreur requete : ';
		$message =  $sql.'<br>';
		$message.=  mysql_error();
		// renvoie une erreur (normalement)
		throw new Exception($message);
	}
 
} catch (Exception $e) {
	if(DEBUG_ON){
		throw $e;
	}
}
Helfima 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 22h44.


 
 
 
 
Partenaires

Hébergement Web