Problème de code

Résolu
stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 - 4 mai 2006 à 07:39
stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 - 4 mai 2006 à 09:12
Bonjour tout le monde ,

Voilà je planche sur un programme scolaire et j'ai un gros prob, je travaille sur un programme qui utilise trois base de données et je dois afficher les enregistrements à partir de ces trois bases. Je m'explique, je dois arriver à la solution suivante : je sélectionne une classe dans une liste déroulante. Une fois la classe sélectionner le nom et le prénom du premier élève s'affiche, les résultats obtenu dans les différent cours que comporte cette section. Pour l'affichage du premier élève pas de prob.
Par contre je galère grave pour afficher les suivants, car au début je travaillais par "id" de l'élève ou je faisait tout simplement id+1 et je passait à l'enregistrement suivant. Le prob est que au début tout les enregistrement se suivent, mais si je supprime un élève, je peux passé de l'id 1 au 5 par exemple si entre temps j'ais supprimer 3 élèves. Donc mon système par id est très foireux, si quelqu'un pouvait m'aider sur se prob se serait sympa.

Voici le code source dans lequel j'ai déjà supprimé le code qui ne fonctionnais pas.

<?php require_once('../Connections/ircxl.php'); ?>
<?php
mysql_select_db($database_ircxl, $ircxl);
$query_affichageclasse = "SELECT classe.id, classe.nom FROM classe";
$affichageclasse = mysql_query($query_affichageclasse, $ircxl) or die(mysql_error());
$row_affichageclasse = mysql_fetch_assoc($affichageclasse);
$totalRows_affichageclasse = mysql_num_rows($affichageclasse);


$maxRows_affichageeleves = 1;
$pageNum_affichageeleves = 0;
if (isset($_GET['pageNum_affichageeleves'])) {
$pageNum_affichageeleves = $_GET['pageNum_affichageeleves'];
}
$startRow_affichageeleves = $pageNum_affichageeleves * $maxRows_affichageeleves;


mysql_select_db($database_ircxl, $ircxl);
$query_affichageeleves = "SELECT * FROM eleves";
$query_limit_affichageeleves = sprintf("%s LIMIT %d, %d", $query_affichageeleves, $startRow_affichageeleves, $maxRows_affichageeleves);
$affichageeleves = mysql_query($query_limit_affichageeleves, $ircxl) or die(mysql_error());
$row_affichageeleves = mysql_fetch_assoc($affichageeleves);


if (isset($_GET['totalRows_affichageeleves'])) {
$totalRows_affichageeleves = $_GET['totalRows_affichageeleves'];
} else {
$all_affichageeleves = mysql_query($query_affichageeleves);
$totalRows_affichageeleves = mysql_num_rows($all_affichageeleves);
}
$totalPages_affichageeleves = ceil($totalRows_affichageeleves/$maxRows_affichageeleves)-1;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>D&eacute;lib&eacute;ration</title>
<style type="text/css">
<!--
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: small;
color: #FFFFFF;
}
body {
background-color: #006599;
}
a:link {
color: #FFFFFF;
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #FFFFFF;
}
a:hover {
text-decoration: none;
color: #FF0000;
}
a:active {
text-decoration: none;
color: #FF0000;
}
.Style2 {
font-size: x-large;
font-weight: bold;
}
.Style3 {
font-size: medium;
font-weight: bold;
}
.Style5 {
color: #000000;
font-weight: bold;
}
.Style6 {color: #000000}
-->
</style></head>



D&eacute;libaration,

----

S&eacute;lection :
<form name="form2" method="post" action="">
<select name="listeclasse" size="1" onChange="this.form.submit();">
<?php
do {
?>
<option value="<?php echo $row_affichageclasse['id']?>"<?php if (!(strcmp($row_affichageclasse['id'], $row_affichageclasse['id']))) {echo "SELECTED";} ?>><?php echo $row_affichageclasse['nom']?></option>
<?php
} while ($row_affichageclasse = mysql_fetch_assoc($affichageclasse));
$rows = mysql_num_rows($affichageclasse);
if($rows > 0) {
mysql_data_seek($affichageclasse, 0);
$row_affichageclasse = mysql_fetch_assoc($affichageclasse);
}
?>
</select>
</form>,
&nbsp;,

----

&nbsp;,

----

<?php
if(isset($_POST['listeclasse']) and is_numeric($_POST['listeclasse']))
{
mysql_select_db($database_ircxl, $ircxl);
$sqlelev=\"SELECT eleves.id, eleves.section, eleves.classe, eleves.nom, eleves.prenom, eleves.id_classe, classe.id FROM eleves
inner join classe on classe.id=eleves.id_classe where eleves.id_classe=\".$_POST['listeclasse'];
$reqelev=mysql_query($sqlelev) or die('Erreur SQL!
'.$sqlelev.'
'.mysql_error());
$row_affichageeleves=mysql_fetch_array($reqelev,MYSQL_ASSOC);
?>
Nom : <?php echo $row_affichageeleves['nom']?>,
Pr&eacute;nom : <?php echo $row_affichageeleves['prenom']?>,
,

<?php
?>
----

Cours,
Total en % ,
D&eacute;cision,

----

<?php
if(isset($_POST['listeclasse']) and is_numeric($_POST['listeclasse']))
{
mysql_select_db($database_ircxl, $ircxl);
$sqlselec=\"SELECT classe.*, cours.* FROM cours inner join classe on
classe.id=cours.id_classe where cours.id_classe=\".$_POST['listeclasse'];
$classe=$sqlselec;
$req=mysql_query($classe) or die('Erreur SQL!
'.$classe.'
'.mysql_error());

while ($row_affichages=mysql_fetch_array($req,MYSQL_ASSOC))
{

?>
<?php echo $row_affichages[nom]; ?>,
,
<form name="selection" method="post" action="">
TV
BR
TV + BR
R&eacute;ussit
</form>,

<?php
}
?>
----

Enregister :
<form name="form1" method="post" action="">

</form>,
<form name="form3" method="post" action="">

Ajourn&eacute;

Att B

Att A
</form>,

----

retour

<?php
}
}
mysql_close();
?>
&nbsp;,

----

&nbsp;,

----

&nbsp;,

----

&nbsp;

&nbsp;

</html>
<?php
mysql_free_result($affichageclasse);


mysql_free_result($affichageeleves);
?>

Je vous rappelle que le but est de rester dans la même classe et de pouvoir passer sur l'élève suivant de la même classe.
Attention, j'ai commencé le php en janvier donc soyez endulgent. J'accepte les critiques mais uniquement les critiques constructives.

Merci d'avance,

++

Syu76

2 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 mai 2006 à 08:58
Hello,

ton code est trop long pour que je le regarde en détail, mais tu devrais t'en sortir avec
http://fr2.php.net/manual/fr/function.mysql-data-seek.php

C'est un pointeur interne, en fait, sur chaque ligne retournée par une requête. Bref, tu ne bosseras plus sur l'id, mais sur le numéro de ligne (comme retourné par mysql_num_rows())
3
stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 1
4 mai 2006 à 09:12
Salut Malalam,

Merci pour ton aide précieuse, ca fait plaisir de te lire. Je planche sur cette solution qui devrait effectivement être possible.

Encore merci,

++

Stu76
0
Rejoignez-nous