Création d'un tableau adapté en fonction du nombre de lignes dans la BDD

vincent621200 - 7 févr. 2013 à 08:58
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 - 7 févr. 2013 à 21:10
Bonjour,

Je dois créer un bulletin de BTS blanc et sur une page de saisie de note, j'aimerais qu'en choisissant une matière dans un menu déroulant puis une classe dans un autre, apparaissent un tableau de saisie de note( 2 colonnes : nom de l'élève et note) qui m'affiche 16 lignes s'il y a 15 élèves et 30 s'il y en a 29...

Seulement voila, je ne sais pas comment faire pour afficher la liste des matières( j'ai une table matière dans ma BDD) via une requête sql. Une fois cela de fait je pourrais faire la même chose pour les classes et après je ne sais pas comment faire pour qu'un tableau apparaisse dans lequel, on pourra saisir des notes et ainsi les enregistrer dans la BDD.

Pour l'instant j'ai ca sur ma page web :
<script language="Javascript" type="text/javascript" >
function choix(formulaire)
{
var j;
var i = formulaire.matiere.selectedIndex;
if (i == 0)
for(j = 1; j <3; j++)
formulaire.classe.options[j].text="";

else{
switch (i){
case 1 : var text = new Array( "SIO1","SIO2", "CGO1");
break;
case 2 : var text = new Array("CGO2","MUC1");
break;

case 3 : var text = new Array("DCG1","DCG2","SIO1");
break;
}

for(j = 0; j<3; j++)
formulaire.classe.options[j+1].text=text[j];
}
formulaire.classe.selectedIndex=0;
}
</script>

<form name="formulaire">
<select name="matiere" onChange="choix(this.form)">
<option selected>Choisissez une matière</option>
<option>culture générale et expression</option>
<option>langue vivante 1</option>
<option>slam3</option>
</select>

<select name="classe">
<option selected>Choisissez une classe</option>
<option></option>
<option></option>
<option></option>
</form>
</select>


Ca me permet de choisir des classes après un choix de matières mais j'aimerais le faire sous forme de requetes

9 réponses

toutes vos idées sont les bienvenues
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 3
7 févr. 2013 à 09:49
Salut, accroche toi car tu n'as rien à présenter en ligne de code et tu es très loin d'avoir terminé.

Donc, tu as besoin de trois tables, "matieres" qui sera la table parente de la table "classes" et qui sera elle même parente de la table "eleves".

Par la suite, tu devras faire un SELECT dans la base de données sur la table matieres et avec les valeurs retournées, afficher une combobox (liste déroulante).

Après la sélection de la matière, avec la valeurs retournée donc matieres.m_id, tu fais un SELECT sur la table classes et tu récupères les bons résultats avec la clause WHERE matieres.m_id = classes.c_m_id.
Comme tu l'as constaté, il y a un champ avec l'id parent dans la table enfant "classes.c_m_id" qui est la référence des deux tables.

Par la suite, tu fait SELECT sur la table eleves et tu récupères les bons résultats avec la clause WHERE classes.c_id = eleves.e_c_id; ici pareil l'id parent dans la table enfant est "eleves.e_c_id".
Avec le résultat, tu peux enfin afficher le tableau des élèves.

Quand tu auras créé tes tables et après validation ;) moi ou un membre du forum t'expliquerons la suite si tu as besoin d'aide bien-sûr.

stéph
0
voici le mcd que j'ai fais :

J'ai trouvé ca sur le net :

<select name="liste">
<?
mysql_connect($mysql_localhost, $mysql_root, $mysql_); // j'ai mis $mysql_ car je n&#8217;ai pas de mdp 
mysql_select_db($mysql_bulletin); // selection bdd intitulé bulletin
$resultats=mysql_query("SELECT nom_matiere FROM matiere"); // requete 
while ($resultat=mysql_fetch_array($resultats)) {
<?>
option value=<?php echo $resultat['nom_matiere'];?></option>
}
mysql_close();
?>


Je n'affiche qu'un petit combobox vide, je pense que c'est le echo qui pose problème...


Qu'en penses-tu ?
0
j'ai rajouté le < devant option bien sur
Mes tables sont créées sur le modèle du MCD.
Les requêtes :
select nom_matiere from matiere;
select nom_classe from classe c inner join matiere m on m.id_matiere= c.id_classe where m.id_matiere= c.id_classe;

Comme on ne peut pas comparer un id d'une matière avec un id d'une classe j'imagine qu'il me faut un champ id_classe dans matière ?

merci pour ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 3
7 févr. 2013 à 11:24
Re,


matieres.m_id = classes.c_m_id
Comme tu l'as constaté, il y a un champ avec l'id parent dans la table enfant "classes.c_m_id" qui est la référence des deux tables.


Oui, comme je te l'avais suggérer dans mon premier post.
Mais les erreurs viennent des tag PHP.

Essaie ceci :
<select name="liste">
<?php
mysql_connect($mysql_localhost, $mysql_root, $mysql_); // j'ai mis $mysql_ car je n&#8217;ai pas de mdp 
mysql_select_db($mysql_bulletin); // selection bdd intitulé bulletin
$resultats=mysql_query("SELECT nom_matiere FROM matiere"); // requete 
while ($resultat=mysql_fetch_array($resultats)) { ?>
<option value=<?php echo $resultat['nom_matiere'];?></option>
<?php } 
mysql_close();
?>


stéph
0
toujours rien...

Le fichier tel qu'il est :
<html>
{% include 'AdminBulletinBundle:Default:base.html.twig' %}

 

<select name="liste">
<?php
mysql_connect($mysql_localhost, $mysql_root, $mysql_);
mysql_select_db($mysql_bulletin); // selection bdd intitulé bulletin
$resultats=mysql_query("SELECT nom_matiere FROM matiere"); // requete 
while ($resultat=mysql_fetch_array($resultats)) 
                { ?>
<option value=<?php echo $resultat['nom_matiere'];?></option>
<?php } 
mysql_close();
?>

</select>

</html>


Ce code est dans un html.twig vu que je travaille avec symfony. Le base me sert à appeler la mise en page avec les menus latéraux bref...
Je ne comprends pas pourquoi cela ne fonctionne pas
Cette requête la est vraiment simple comparée aux autres en plus donc pas d'erreur possible
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 3
7 févr. 2013 à 12:27
Tu travailles de cette façon avec Symfony :)
Tu n'utilises pas de base de données relationnelle avec Doctrine ?

stéph
0
J'avais essayé de créer les entités puis les setter & getter mais j'avais eu quelques problèmes...
La je ré-essaye, on verra bien
En cours, on a fait que 2 entités et un seul :
/**
* @ORM\ManyToOne(targetEntity="YW\GsbBundle\Entity\categorie")
* @ORM\JoinColumn(nullable=false)
*/

Dans le cas du bulletin, j'ai fais des ManyToOne et ManyToMany à chaque entité (0 pour prof, manytoone et 1 manytomany pour l'entité epreuve.
Le MCD a changé suite aux remarques d'une prof et j'ai donc :

Sais tu s'il faut mettre un à plusieurs manyToOne/Many par entité ?
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 3
7 févr. 2013 à 21:10
Ok, je te proposes de créer un diagramme de class pour modélisé correctement ton application.
N'hésite pas d'utiliser des patterns pour la maitrise de la POO.

stéph
0