Celui qui y arrive gagne... un grand merci !

Résolu
Signaler
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008
-
Messages postés
20
Date d'inscription
jeudi 26 février 2009
Statut
Membre
Dernière intervention
2 mars 2009
-
Bonjour,





Le principe est très simple : des élèves (colonnes), des matières (lignes) et des notes (cellules).





Je souhaite que quand je clique sur une cellule, ce qui correspond à la
note d'un élève pour une matière, je puisse ajouter ou modifier la
note.





Je vous remercie par avance pour l'aide que vous pourrez m'apporter !





J'aimerai générer un tableau html de ce type :





 ,

nom élève 1, nom élève
2, nom élève 3, nom élève
4,

----

nom matiere 1,

note élève 1, note élève
2, note élève 3, note élève
4,

----

nom matiere 2,

note élève 1, note élève
2, note élève 3, note élève
4,

----

nom matiere 3,

note élève 1, note élève
2, note élève 3, note élève
4,

----

nom matiere 4,

note élève 1, note élève
2, note élève 3, note élève
4






Ceci, grâce à PHP.


Mes données sont les suivantes :





################################


# Base de données `note`


################################





################################


# Structure de la table `eleve`


################################


CREATE TABLE eleve (


id_eleve int(8) unsigned NOT NULL auto_increment,


nom_eleve varchar(255) NOT NULL default '',


PRIMARY KEY (id_eleve)


) TYPE= MyISAM;


##############################


# Contenu de la table `eleve`


##############################


INSERT INTO eleve VALUES (1, 'Nicolas');


INSERT INTO eleve VALUES (2, 'Nelly');


INSERT INTO eleve VALUES (3, 'Axel');


INSERT INTO eleve VALUES (4, 'Peggy');





##################################


# Structure de la table `matiere`


##################################


CREATE TABLE matiere (


id_matiere int(8) unsigned NOT NULL auto_increment,


lib_matiere varchar(255) NOT NULL default '',


PRIMARY KEY (id_matiere)


) TYPE=MyISAM;


#################################


# Contenu de la table `matiere`


#################################


INSERT INTO matiere VALUES (1, 'Maths');


INSERT INTO matiere VALUES (2, 'Anglais');


INSERT INTO matiere VALUES (3, 'Sport');





###############################


# Structure de la table `note`


###############################


CREATE TABLE note (


ce_eleve int(8) unsigned NOT NULL default '0',


ce_matiere int(8) unsigned NOT NULL default '0',


valeur_note varchar(255) NOT NULL default '',


PRIMARY KEY (ce_eleve,ce_matiere)


) TYPE=MyISAM;


#############################


# Contenu de la table `note`


#############################


INSERT INTO note VALUES (1, 1, '0');


INSERT INTO note VALUES (1, 2, '1');


INSERT INTO note VALUES (1, 3, '3');


INSERT INTO note VALUES (2, 1, '1');


INSERT INTO note VALUES (2, 2, '3');


INSERT INTO note VALUES (2, 3, '2');


INSERT INTO note VALUES (3, 1, '1');


INSERT INTO note VALUES (3, 2, '1');


INSERT INTO note VALUES (3, 3, '2');


INSERT INTO note VALUES (4, 1, '1');


INSERT INTO note VALUES (4, 2, '2');


INSERT INTO note VALUES (4, 3, '1');





#############################


# Ma page PHP : index.php


#############################


<?


$link = mysql_connect('localhost','root','');


mysql_select_db('note',$link);


//---------------------------------------------------------------------


function getNotes() {


$notes=array();

$query=mysql_query("select e.nom_eleve as nom , m.lib_matiere as
matiere , n.valeur_note as note FROM eleve e, matiere m, note n WHERE
n.ce_eleve=e.id_eleve AND n.ce_matiere=m.id_matiere");


while($note=mysql_fetch_array($query)) {


$notes[$note["nom"]][$note["matiere"]]=$note["note"];


}


return $notes;


}


//---------------------------------------------------------------------


$notes=getNotes();


foreach($notes as $eleve=>$eleve_notes){


echo " Nom de l'élève : $eleve
";


foreach($eleve_notes as $matiere =>$eleve_note){


echo "$matiere : $eleve_note
";


}


}


?>

16 réponses

Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
Ce fut un plaisir ;o)
A+

Arnaud
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,




bah le mieux est encore que tu affiches ca directement dans un formulaire, non ?


Pour ls script complet...je ne te le ferai pas lol. Cherche un peu ;-)


Mais le principe est
simple : chaque champ (chaque ligne de ton tableau ici) est lie a un
eleve, avec les requetes de tes fonctions. L'update va faire exactement
la meme chose, mais au lieu d'un SELECT, tu auras un UPDATE...en gros.
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

Petit merci malalam !



Ma consigne est de mettre ça de cette manière. C'est clair qu'il y a
des façons bien plus simples de réaliser ceci mais au niveau
ergonomique, l'idée du tableau avec des cellules cliquables est bien
meilleure, et puis même si elle ne l'est pas, le patron a dit...



@+
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Bon....en gros :





$notes=getNotes();

echo &nbsp;,

foreach($notes as $eleve=>$eleve_notes){

echo \"Nom de l'élève : $eleve, \";

echo '';

foreach($eleve_notes as $matiere=>$eleve_note){

echo \"----
$matiere : $eleve_note, \";

echo


}




Mais ce fera pas ce que tu veux exactement. C'est juste pour te montrer
a peu pres comment faire...il faudra modifier tes fonctions pour
obtenir ce que tu veux, je pense.



Pour les liens...il faut faire un lien sur l'eleve, en passant son id dans l'url, et l'id de la matiere.

(gebnre :lien'id_eleve=
$note['e.id_eleve']&...pareil pour la matiere)

Mais c'est pour ca que tu dois modifier tes fonctions. En l'etat,
tu ne pourras pas, a priori, faire ce que tu veux exactement.


Sur
la page qui recupere ce lien, tu auras l'id. Suffit de creer un petit
formulaire pour modifier la note, soumettre, et updater ta base (le
tout en fonction de l'id de l'eleve et de la matiere)
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

Le merci pousse malalam ! Il pourrait devenir un "grand merci" si tu continues à m'aider :-)



Plus sérieusement, je vais essayer de faire ce que tu m'as dit dans l'après-midi.

Je te tiens au courant.



Merci encore pour ton aide !
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
OPas besoin de modifier ta fonction au fait...je viens de verifier lol.
Vais grailler, ert je reviens voir ton avancement et pousser encore un
peu puisque t'es gentil ;-)
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

:-( Toujours pô...

Je n'arrive pas à récupérer LA note de L'élève.



Voilà ce que j'ai tenté :



$notes=getNotes();

echo "\";

foreach($notes as $eleve=>$eleve_notes){

echo \"$eleve, \";

}

echo \"\";

foreach($eleve_notes as $matiere=>$eleve_note){

echo \"----
$matiere : $eleve_note, \";

foreach(?????=>$la_note) [

echo \"$la_note, \";

}

echo \"\";

}

echo "
";
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Comment ca, recuperer la note de l'eleve ?



elle est la ta note :



foreach($eleve_notes as $matiere=>$eleve_note){

echo "<tr><td>$matiere : $eleve_note</td>";
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

Désolé,



Je ne sais pas vraiment où j'en suis.

A chaque fois il y a quelque chose qui ne fonctionne pas.

Je m'avoue vaincu :'(
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
Allons, allons, un peu de courage ;o)
où en es-tu ?
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

Salut,



A vrai dire, j'en suis au point de départ puisque tout ce que j'ai tenté n'a abouti à rien.

J'arrive donc à afficher les élèves, les matières, mais pas "les notes
des élèves pour une matière", et encore moins dans un tableau :-(



Merci pour votre attention, si quelqu'un peut faire quelque chose pour une âme desespérée...
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
Ta variable $notes est-elle correctement remplie ? Essaie juste ça :
$notes=getNotes();
echo "";
print_r($notes);
echo "

";

Qu'obtiens-tu ?
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

Salut Arnaud (puisque je viens de t'envoyer un post sur le forum JavaScript :-)



En effet, en mettant ce que tu m'as recommandé, j'obtiens bien les bonnes notes !

Mais je ne vois toujours pas comment je vais pouvoir mettre ça dans un
tableau HTML puisque cela reste tout de même linéaire et peut
confortable lorsque la liste est longue.



Merci pour ta patience !



Voici ce que j'ai :



Array
(
[Nicolas] => Array
(
[Maths] => 0
[Anglais] => 1
[Sport] => 3
)

[Nelly] => Array
(
[Maths] => 1
[Anglais] => 3
[Sport] => 2
)

[Axel] => Array
(
[Maths] => 1
[Anglais] => 1
[Sport] => 2
)

[Peggy] => Array
(
[Maths] => 1
[Anglais] => 2
[Sport] => 1
)

)
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
<?php
$notes=getNotes();

echo "MATIERES, \";
foreach($notes as $eleve=>$eleve_notes)
{ echo \"$eleve, \"; }
echo \"\";
foreach(reset($notes) as $matiere=>$n)
{
echo \"----
$matiere, \";
foreach($notes as $eleve=>$eleve_notes)
{ echo \"".$eleve_notes[$matiere].", \"; }
echo \"\";
}
echo "
";
?>

Cela te convient-il ?
Arnaud
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

Arnaud, arnaud, arnaud !



J'ai l'honneur et le bonheur (surtout) de t'offrir le "GRAND MERCI" !

Waouh, ça fait un moment que je suis sur cet os, et personne n'avait approfondi.



C'est vraiment cool !

Merci encore pour ta patience et ton aide !



@ bientôt j'espère !
Messages postés
20
Date d'inscription
jeudi 26 février 2009
Statut
Membre
Dernière intervention
2 mars 2009

l'ignorance est une maladie qui se soigne
je suis encore débutant en php /mysql si vous voyait que je mérite pas ton aide c'est pas grave