Requête mysql en php

greg60200
Invité n'ayant pas de compte PHPfrance

19 mai 2010, 18:26

Bonjour,

Je suis débutant en Php, j'ai besoin d'un coup de main pour modifier un script utilisé dans une application de validation de compétences pour des élèves de collège.
Je souhaite récupérer et afficher le nombre de validations obtenues par chaque élève pour chaque compétence (item) à partir d'une base de données Mysql comportant plusieurs tables.
Celle où se trouve le nb de validations par item pour chaque élève est la table "demandes" les champs sont eleve_id, item_id, nboui
Faut-il associer dans la requête une autre table ou se trouve tous les élèves ? table "eleves" champ eleve_id ?

Je souhaite faire apparaitre le résultat dans un tableau a deux entrées qui existe déjà et qui affiche les élèves de la classe et les items (140). Le script comporte les fonctions qui permettent l'affichage des élèves et des items.Le résultat doit apparaitre dans chaque cellule du tableau de la manière suivante : $cellule="\t<td align=\"center\">$nboui</td>";

Quelqu'un peut-il me proposer une fonction qui permet d'obtenir le "nboui" (nombre de validations) pour chaque élève et pour chaque item et éventuellement l'instruction en php qui permet de l'afficher dans la page web ?


Merci pour votre aide

Petit nouveau ! | 2 Messages

19 mai 2010, 19:48

Pour plus de précision ci dessous le script en question avec en gras ce que j'ai ajouté pour obtenir le nb de validations mais ça ne marche pas , à l'affichage les élèves qui ont plusieurs validations sont confondus : même résultats pour plusieurs élèves ...

//obtenir les items du brevet $brevet_no
$resit =query("SELECT item_id
FROM items");

// on compte les items
$nb=mysql_num_rows($resit);


$reslib=query("SELECT libelles.base
FROM libelles,items
WHERE items.item_id=libelles.item_id");



if ($etab_niveau!="niv3")
{ print "<form method='post' action='".$PHP_SELF."?statut= $statut&classe_id=$classe_id&divcod=$divcod&objet= $objet&divgro=$divgro'>\n";
print "<input type='hidden' name='disc' value='$disc' >";
print "<p align='center'><input type='submit' class='coul' name='btn_niv' value='Autre niveau'>\n";
print "</p></form>";
}

print "<div align=\"center\"><table border='1'>\n";
print "<tr class='rubrique'>\n";
print "\t<td width='160'>Nom</td>";
print "\t<td width='140'>Prénom</td>";

$couleur="paire";
$rubrencours=0;
$couleur="impaire";
while ($rowit=mysql_fetch_array($resit))
{
$rowlib=mysql_fetch_array($reslib);
//on choisit le décalage de la bulle
if ($rowit["item_id"]<$nb/2) $decalbulle="decalbullec"; else {$decalbulle="decalbulled";}

// on extrait le numero du domaine
$rubr=intval(substr($rowlib["base"],2,1));

if ($couleur=="paire") $couleur="impaire";
else $couleur="paire";

print "<td width='15'class=\"".$couleur."\"><a class='bulle taillebullegde $decalbulle' href=#>".$rowit["item_id"]."<span> <b>Item ".$rowit["item_id"]."</b></br>".$rowlib["base"]."</span></a></td>";
$rubrencours=$rubr;
}
print "</tr>";

//Fin lecture items
//Préparation d'un tableau des élèves pour cette classe

$reseleves=query ("select eleves.eleve_id, eleves.nom, eleves.prenom, eleves.classe_id
FROM eleves , lien_eleves_classes WHERE eleves.eleve_id=lien_eleves_classes.eleve_id
AND lien_eleves_classes.classe_id=$classe_id AND eleves.annee='$sess_ascol'
ORDER BY nom, prenom;",$conn);

//comptage des élèves et Fabrication des lignes du tableau
$nbelev=0;
while ($rowelev=mysql_fetch_array($reseleves))
{
$eleve[$nbelev]=$rowelev["eleve_id"];
$elnom[$nbelev]=$rowelev["nom"];
$elprenom[$nbelev]=$rowelev["prenom"];

$nbelev++;
}
Print "<br><i>".$nbelev." élève".(($nbelev>1)?"s":"")."</i>&nbsp;&nbsp;&nbsp;";

$old_divcod="";
for ($elev=0;$elev<$nbelev;$elev++)
{
$cl=($elev%2==0) ? "paire" : "impaire";
print "<tr class=$cl>\n";
print "\t<td width='100'>&nbsp; ".$elnom[$elev]." </td>\n";
print "\t<td width='100'>&nbsp; ".$elprenom[$elev]." </td>\n";
$cumul_items=0;
$tot_items=0;

//on cherche les nboui dans les demandes
$val=array();

$res=query(" SELECT eleves.eleve_id,demandes.item_id,
demandes.nboui,demandes.eleve_id FROM eleves,demandes
WHERE eleves.eleve_id=demandes.eleve_id
");



while (list($eleve_id,$item_id,$nboui)=mysql_fetch_array($res)) {

$val[$item_id]=array();
$dem=&$val[$item_id];
$dem['oui']=$nboui;
}
mysql_free_result($res);



//Nb de validations par elève

$resit =query("select item_id
FROM items ");
while ($rowit=mysql_fetch_array($resit))
{
$eleve_id= $eleve[$elev] ;
$item_id=$rowit["item_id"];
if (itemacquis( $eleve_id ,$item_id))

{$cellule="\t<td align=\"center\"> <img src=\"../images/boule_verte.gif\"> </td>";}

elseif ($val[$item_id])
{ $dem=&$val[$item_id];
$nboui=$dem['oui'];
$cellule="\t<td align=\"center\">$nboui</td>";
}


else {$cellule="\t<td align=\"center\"><img src=\"../images/boule_rouge.gif\"></td>";}

print $cellule;
}
}

print "</tr></table></div> ";
?>
</body>
</html>

Petit nouveau ! | 2 Messages

20 mai 2010, 16:53

Merci pour votre aide.