IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[Conception] Table multidimensionnelle (comme pour les tableaux) ?


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 24
    Points
    24
    Par défaut [Conception] Table multidimensionnelle (comme pour les tableaux) ?
    Bonsoir à toutes et tous,

    Je suis en train de travailler sur un projet en PHP qui consiste à gèrer une école de langues et le suivi des étudiants.

    Dans cette école, il y a des étudiants étrangers qui viennent apprendre le français sur 20 ou 30 semaines.

    Chaque semaine il y a un contrôle continu = ce contrôle peut être de 4types : écrit, oral, civilisations, prépa exam.

    J'ai besoin chaque semaine pour chaque étudiant d'historiser :
    - la note obtenue
    - le type de contrôle passé
    - le nb d'heures d'absences sur la semaine
    - le nb d'heures d'absences non justifiées sur la semaine.

    Et j'arrive pas à concevoir la table pour effectuer le suivi de ces données.
    J'ai commencé à écrire le script suivant pour la saisie des données :
    Quelqu'un(e) aurait-il une solution ?
    Merci d'avance pour votre aide précieuse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <?php
     
    include("variables.php");
     
     
    $liendb = mysql_connect($bddserver, $bddlogin, $bddpwd);
    mysql_select_db($bdd);
     
    ?>
     
    <form action="admin_maj_notes.php" method="post">
     
          <?php
           echo "<SELECT Name=motclef Size=1><OPTION Value=0>Choisir cursus</OPTION>";
                $sql= "SELECT * FROM session ORDER by libelle";
                $rep= mysql_query($sql);
                while($ligne_liste=mysql_fetch_array($rep)){
                echo "<OPTION Value=\"".$ligne_liste['code']."\">".$ligne_liste['libelle']."</OPTION>";
                }
                echo "</SELECT>";
           ?>
          <input type="submit" value=<?php echo $_REQUEST['motclef'];?> />
          <input type="submit" name="Valider" value = "Enregistrer"> <input type="reset" name="reinit">
    </form>
     
    <?php
    $clause='';
    if (isset($_REQUEST['motclef']))
    {
      $clause .= "WHERE INSTR(cursus_ilce,'".$_REQUEST['motclef']."')";
    }
     
    $sql="SELECT * FROM etudiant ".$clause. "ORDER by nom";
    $resultat=mysql_query($sql);
    ?>
     
    N° semaine <input type="text" name="num_semaine" size="2"> &nbsp;
    N° semaine Calendrier <input type="text" name="semaine_calendrier" value= "SXX" size="2"> &nbsp;
    Type contrôle : <select name="exam" size="1">
    		  			    <option value="0">Ecrit</option>
    					    <option value="1">Oral</option>
    					    <option value="2">Civilisations</option>
    					    <option value="3">DAP</option>
     				   </select>
     
    <?php
    echo "<table width=80% align=left border=1>";
    echo "<tr><tr><tr>";
    echo "<tr><td>id</td><td>nom</td><td>prenom</td><td>date naissance</td><td>Agence</td><td>Note</td><td>Heures absences</td><td>Heures absences non justifiées</td></tr>";
     
    if (isset($_REQUEST['motclef']))
    {
    while ($etudiant = mysql_fetch_array($resultat))
    {
      $id = $etudiant['num_etudiant'];
      $nom = $etudiant['nom'];
      $prenom = $etudiant['prenom'];
      $date = $etudiant['date_naissance'];
      $agence = $etudiant['agence'];
      echo "<tr>";
      echo "<td>$id</td>";
      echo "<td>$nom</td>";
      echo "<td>$prenom</td>";
      echo "<td>$date</td>";
      echo "<td>$agence</td>";
      echo "<td><input type=text name =note >";
      echo "<td><input type=text name =abs >";
      echo "<td><input type=text name =abs_non_justif >";
      echo "</td>";
      echo "</tr>";
    }
    }
     
    echo "</table>";
     
     
     
    mysql_close($liendb);
    ?>
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et j'arrive pas à concevoir la table pour effectuer le suivi de ces données.
    Je ne comprends pas bien ton probleme.
    La table tu l'as déjà :
    - id de la table
    - date (semaine/année)
    - id de l'etudiant
    - la note obtenue
    - le type de contrôle passé
    - le nb d'heures d'absences sur la semaine
    - le nb d'heures d'absences non justifiées sur la semaine.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Pour info, les balises en majuscules ne sont pas dépréciées et il faut mettre des guillements pour définir les valeurs des attributs :

    <select name="nom_select" size="3" />

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    Merci pour vos réponses, j'ai créé la table suivi comme tu me l'as proposé, c'est ce que je voulais faire au départ mais je ne sais pas pourquoi je me suis dit que ça ne marcherait pas, mes neurones devaient être fatigués.

    J'ai donc crée la table suivi :
    CREATE TABLE `test`.`suivi` (
    `id` SMALLINT( 2 ) NOT NULL ,
    `sem_calendrier` VARCHAR( 3 ) NULL ,
    `num_etudiant` SMALLINT( 3 ) NULL ,
    `note` FLOAT( 4 ) NULL ,
    `type_exam` VARCHAR( 1 ) NULL ,
    `absences` TINYINT( 2 ) NULL ,
    `absences_non_justif` TINYINT( 2 ) NULL ,
    PRIMARY KEY ( `id` )
    ) ENGINE = InnoDB

    Je souhaite maintenant alimenter le suivi des étudiants de façon hebdo et faciliter la saisie des notes et absences. Aussi, afin de faciliter la saisie, je fais afficher les étudiants de la session considérée à l'aide de la boucle ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    if (isset($_REQUEST['motclef']))
    {
    while ($etudiant = mysql_fetch_array($resultat))
    {
      $id = $etudiant['num_etudiant'];
      $nom = $etudiant['nom'];
      $prenom = $etudiant['prenom'];
      $date = $etudiant['date_naissance'];
      $agence = $etudiant['agence'];
      echo "<tr>";
      echo "<td>$id</td>";
      echo "<td>$nom</td>";
      echo "<td>$prenom</td>";
      echo "<td>$date</td>";
      echo "<td>$agence</td>";
      echo "<td><input type=text name =note >";
      echo "<td><input type=text name =abs >";
      echo "<td><input type=text name =abs_non_justif >";
      echo "</td>";
      echo "</tr>";
    }
    }
     
    echo "</table>";
    Comment faire pour récupèrer toutes les notes, absences, absences_non_justif dans le cadre de cette boucle et mettre à jour la table suivi ?
    Je ne maîtrise encore pas bien le PHP
    Merci d'avance

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut mettre des guillemets aux valeurs en html, comme te l'a indiqué ThomasR
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    ok j'ai corrigé merci, par contre quelle est la syntaxe à utiliser dans la boucle pour que les notes, absences, et absences_non justfiées saisies se mettent à jour dans la tableau suivi ?
    Merci

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La tu as crées un formulaire listant ta base de donnée.
    Il faut ensuite que tu traites le résultat de ton formulaire et pour chaque ligne, faire l'update SQL.
    Il faut pour cela bien sur passer l'id correspond a chaque ligne, par exemple en passant chaque valeur comme un tableau indexé avec l'id :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="note[' . $id ']" />
    Tu recuperes donc ensuite $_POST['note'][56] comme la note de la personne 56.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/01/2009, 22h47
  2. Évolution : syntaxe [] pour les tableaux
    Par Yogui dans le forum Langage
    Réponses: 29
    Dernier message: 19/03/2008, 12h10
  3. Réponses: 2
    Dernier message: 18/03/2008, 21h45
  4. [VBA-W] énigme pour les tableaux
    Par tonnick dans le forum VBA Word
    Réponses: 3
    Dernier message: 01/10/2007, 15h12
  5. Utilisation des références pour les tableaux
    Par Bouboubou dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 14/12/2005, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo