Code : Tout sélectionner
`classse` char(20) character set latin1 collate latin1_general_ci NOT NULL,
`numero` int(5) unsigned NOT NULL,
Code : Tout sélectionner
`Numero` int(5) unsigned NOT NULL auto_increment,
`Identite` varchar(50) character set utf8 NOT NULL,
PRIMARY KEY (`Numero`)
Code : Tout sélectionner
Array
(
[0] => Array
(
[Classe] => 85-86
)
)
Array
(
[0] => Array
(
[Classe] => 85-86
)
[1] => Array
(
[Classe] => 86-87
)
)
Array
(
[0] => Array
(
[Classe] => 85-86
)
[1] => Array
(
[Classe] => 86-87
)
[2] => Array
(
[Classe] => 87-88
)
)
Array
(
[0] => Array
(
[Classe] => 85-86
)
[1] => Array
(
[Classe] => 86-87
)
[2] => Array
(
[Classe] => 87-88
)
[3] => Array
(
[Classe] => 88-89
)
)
Array
(
[0] => Array
(
[Classe] => 85-86
)
[1] => Array
(
[Classe] => 86-87
)
[2] => Array
(
[Classe] => 87-88
)
[3] => Array
(
[Classe] => 88-89
)
[4] => Array
(
[Classe] => 90-91
)
)
Array
(
[0] => Array
(
[Classe] => 85-86
)
[1] => Array
(
[Classe] => 86-87
)
[2] => Array
(
[Classe] => 87-88
)
[3] => Array
(
[Classe] => 88-89
)
[4] => Array
(
[Classe] => 90-91
)
[5] => Array
(
[Classe] => 91-92
)
)
.
.
etc
.
.
<pre>
<b>La base de données:</b>
--
-- Structure de la table `classe`
--
-- Création: Lun 04 Mai 2009 à 10:54
-- Dernière modification: Lun 04 Mai 2009 à 10:59
--
CREATE TABLE IF NOT EXISTS `classe` (
`classse` char(20) NOT NULL,
`numero` int(5) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Contenu de la table `classe`
--
INSERT INTO `classe` (`classse`, `numero`) VALUES
('90-91', 1),
('90-91', 2),
('91-92', 3),
('91-92', 4);
-- --------------------------------------------------------
--
-- Structure de la table `fichier`
--
-- Création: Lun 04 Mai 2009 à 10:56
-- Dernière modification: Lun 04 Mai 2009 à 10:57
--
CREATE TABLE IF NOT EXISTS `fichier` (
`numero` int(5) NOT NULL AUTO_INCREMENT,
`identite` varchar(50) NOT NULL,
PRIMARY KEY (`numero`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- Contenu de la table `fichier`
--
INSERT INTO `fichier` (`numero`, `identite`) VALUES
(1, 'Dupont'),
(2, 'Durand'),
(3, 'Leroy'),
(4, 'Petit');
<hr />
<b>Les données stockées dans un tableau multi-dimentions:</b>
<?php
//Lire les données de la base
$sql = "SELECT classse, f.numero, identite
FROM classe c
JOIN fichier f ON f.numero = c.numero
ORDER BY classse, identite";
$query = mysql_db_query("test", $sql, mysql_connect("localhost", "root"));
$table = array();
while ($query && $row = mysql_fetch_assoc($query)){
$classe = $row["classse"];
$identite = $row["identite"];
$table[$classe][$identite] = $row; // classement par classe et identite
}
mysql_close();
print_r($table);
?>
</pre>
Le tri est réalisé par la requête SQL clause : ORDER BY classse, identiteCode : Tout sélectionner
Array
(
[90-91] => Array
(
[Dupont] => Array
(
[classse] => 90-91
[numero] => 1
[identite] => Dupont
)
[Durand] => Array
(
[classse] => 90-91
[numero] => 2
[identite] => Durand
)
)
[91-92] => Array
(
[Leroy] => Array
(
[classse] => 91-92
[numero] => 3
[identite] => Leroy
)
[Petit] => Array
(
[classse] => 91-92
[numero] => 4
[identite] => Petit
)
)
)
Code : Tout sélectionner
$sql = "SELECT classse, f.numero, identite
FROM classe c
JOIN fichier f ON f.numero = c.numero
ORDER BY classse, identite";
Code : Tout sélectionner
WHERE f.Numero = '$numeleve'
table classe :
id annee
01 81-82
02 82-83
...
tables individus
id nom ...
02 Dupont
03 Durant
table eleves
annee ideleves
01 02
01 03
02 03
...
table Prof
annee Prof
01 Monprof
02 Monprof
....
ainsi avec une requete du genre :
$sql = mysql_query('SELECT annee FROM eleves WHERE ideleves = "'.$idEleveReference.'"');
$t = '';
while($r = mysql_fetch_row($sql))
$t.=', '.$r[0];
$req = mysql_query('SELECT c.annee, i.nom, p.prof
FROM
classes c,
individus i,
eleves e,
prof p
WHERE
c.id IN ('.substr($t, 1).') &&
c.id = e.annee &&
c.id = p.annee &&
i.id = e.ideleves');
tu aurais une bonnes liaison et tous les éléments .... rangés par ligne de manière suivante :
La requête est :Bonjour Sadeq,
Je suis en train de tester ton code, mais j'ai un probleme.
Dans le codej'ai ajoutéCode : Tout sélectionner
$sql = "SELECT classse, f.numero, identite FROM classe c JOIN fichier f ON f.numero = c.numero ORDER BY classse, identite";pour ne prendre que ce qui correspond a un individu donné (du moins je pense que c'est ce qu'il faut que je fasse)Code : Tout sélectionner
WHERE f.Numero = '$numeleve'
Mais cela ne marche pas.
Je pense que f.numero correspond au champ Numero de la table fichier. Mais je ne vois pas comment dans ton code comment est associé Numero de fichier à f.numero?
A+
$sql = "SELECT classse, f.numero, identite
FROM classe c
JOIN fichier f ON f.numero = c.numero
WHERE f.Numero = '$numeleve'
ORDER BY classse, identite";
$sql = "SELECT classse, f.numero, identite
FROM classe c
JOIN fichier f ON f.numero = c.numero
WHERE f.Numero = $numeleve
ORDER BY classse, identite";
Enlève les quote '$numeleve' met juste $numeleve parce que ton champ f.numero est un entier.