Celui qui y arrive gagne... un grand merci ! [Résolu]

nougitch 431 Messages postés mercredi 22 octobre 2003Date d'inscription 17 novembre 2008 Dernière intervention - 9 mars 2005 à 11:34 - Dernière réponse : simonano 20 Messages postés jeudi 26 février 2009Date d'inscription 2 mars 2009 Dernière intervention
- 23 févr. 2009 à 22:05
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
";


}


}


?>
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
arnal69130 445 Messages postés lundi 17 février 2003Date d'inscription 22 mars 2007 Dernière intervention - 11 mars 2005 à 12:41
3
Merci
Ce fut un plaisir ;o)
A+

Arnaud

Merci arnal69130 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de arnal69130
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 9 mars 2005 à 12:18
0
Merci
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.
Commenter la réponse de malalam
nougitch 431 Messages postés mercredi 22 octobre 2003Date d'inscription 17 novembre 2008 Dernière intervention - 9 mars 2005 à 12:25
0
Merci
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...



@+
Commenter la réponse de nougitch
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 9 mars 2005 à 13:04
0
Merci
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)
Commenter la réponse de malalam
nougitch 431 Messages postés mercredi 22 octobre 2003Date d'inscription 17 novembre 2008 Dernière intervention - 9 mars 2005 à 13:15
0
Merci
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 !
Commenter la réponse de nougitch
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 9 mars 2005 à 13:28
0
Merci
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 ;-)
Commenter la réponse de malalam
nougitch 431 Messages postés mercredi 22 octobre 2003Date d'inscription 17 novembre 2008 Dernière intervention - 9 mars 2005 à 14:26
0
Merci
:-( 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 "
";
Commenter la réponse de nougitch
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 9 mars 2005 à 14:48
0
Merci
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>";
Commenter la réponse de malalam
nougitch 431 Messages postés mercredi 22 octobre 2003Date d'inscription 17 novembre 2008 Dernière intervention - 9 mars 2005 à 15:31
0
Merci
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 :'(
Commenter la réponse de nougitch
arnal69130 445 Messages postés lundi 17 février 2003Date d'inscription 22 mars 2007 Dernière intervention - 10 mars 2005 à 10:10
0
Merci
Allons, allons, un peu de courage ;o)
où en es-tu ?
Commenter la réponse de arnal69130
nougitch 431 Messages postés mercredi 22 octobre 2003Date d'inscription 17 novembre 2008 Dernière intervention - 10 mars 2005 à 10:44
0
Merci
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...
Commenter la réponse de nougitch
arnal69130 445 Messages postés lundi 17 février 2003Date d'inscription 22 mars 2007 Dernière intervention - 11 mars 2005 à 09:19
0
Merci
Ta variable $notes est-elle correctement remplie ? Essaie juste ça :
$notes=getNotes();
echo "";
print_r($notes);
echo "

";

Qu'obtiens-tu ?
Commenter la réponse de arnal69130
nougitch 431 Messages postés mercredi 22 octobre 2003Date d'inscription 17 novembre 2008 Dernière intervention - 11 mars 2005 à 11:15
0
Merci
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
)

)
Commenter la réponse de nougitch
arnal69130 445 Messages postés lundi 17 février 2003Date d'inscription 22 mars 2007 Dernière intervention - 11 mars 2005 à 12:12
0
Merci
<?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
Commenter la réponse de arnal69130
nougitch 431 Messages postés mercredi 22 octobre 2003Date d'inscription 17 novembre 2008 Dernière intervention - 11 mars 2005 à 12:21
0
Merci
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 !
Commenter la réponse de nougitch
simonano 20 Messages postés jeudi 26 février 2009Date d'inscription 2 mars 2009 Dernière intervention - 23 févr. 2009 à 22:05
0
Merci
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  
Commenter la réponse de simonano

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.