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 :

Traitement de plusieurs champs d'un formulaire à taille variable


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 80
    Points : 53
    Points
    53
    Par défaut Traitement de plusieurs champs d'un formulaire à taille variable
    Bonjour la communauté,

    Je travail sur une application de gestion des notes scolaires et a cet effet j'ai conçu un formulaire pour enregistrer les notes des élèves d'une classe avec un effectif variable (l'effectif des élèves varient par classe).

    Pour enregistrer les notes des élèves d'une classe, on sélectionne la classe et le formulaire ci-dessous apparaît:
    Nom : form1.png
Affichages : 240
Taille : 3,9 Ko

    Voici le code de la capture d'écran du formulaire ci-dessus:
    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
    <form name="form-enr-note" method="POST" action="">
        <?php  	if(isset($erreursql)){ echo $erreursql; }
        if(isset($infosuccess)){ echo $infosuccess;  } ?>
        <div class="col-md-12 form-group has-feedback">
            <div class="col-xs-12 col-sm-2 col-md-2"><?php
                $sqlan=$connexion->query("SELECT * FROM annee_scolaires"); 
                ?><label for="anant">Année</label>
                <select name="anant" id="anant" class="form-control"><?php 
                    if(!$sqlan){ ?>
                        <option>Erreur 1</option><?php
                    }else{	?>
                        <option value="0">Sélectionnez</option><?php
                        if(mysqli_num_rows($sqlan)<>0){ 
                            while($repsqlan=$sqlan->fetch_assoc()){  ?>
                                <option value="<?php echo $repsqlan['id_an_scol']; ?>"><?php echo $repsqlan['lib_an_scol'];  ?></option><?php	
                            }
                        }elseif(mysqli_num_rows($sqlan)==0){ ?>
                            <option>Vide</option><?php
                        }
                    }													?>
                </select>
                <span class="error-message"><?php if(isset($erreuranant)) echo $erreuranant;  ?></span>
            </div>
            <div class="col-xs-12 col-sm-2 col-md-2 col-lg-2">
                <label for="nmois">Mois</label>
                <select name="nmois" class="form-control" id="nmois">
                    <option value="0">Sélectionnez</option>
     
                </select>
                <span class="error-message"><?php if(isset($erreurnmois)) echo $erreurnmois;  ?></span>
            </div>
     
            <div class="col-xs-12 col-sm-2 col-md-2 col-lg-2" id="matiere"><?php
                $sqlcl=$connexion->query("SELECT * FROM `matieres_dispenses` LEFT JOIN `appgescodb`.`matieres` ON `matieres`.`id_mat`=`matieres_dispenses`.`id_mat` WHERE id_classe_scol='".$ci."'");
                //$sqlcl=$connexion->query("SELECT * FROM options_detudes LIMIT 3"); 
                if(!$sqlcl){
                    $erreursql="<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Une erreur interne s'est produite! Veuillez informer l'administrateur de l'application (" . $connexion->errno . ") " . $connexion->error."</h4></div></div>";
                }
                else{ 
                    if(mysqli_num_rows($sqlcl)<>0){?> 
                        <label for="nmatiere">Matières</label>
                        <select name="nmatiere" class="form-control" id="nmatiere">
                            <option value='0'>Sélectionnez</option><?php
                                while($rep=$sqlcl->fetch_assoc()){
                                    if(isset($nmatiere)){
                                        if($nmatiere==$rep['id_mat']){ 															
                                            echo"<option value='".$nmatiere."' selected>".$rep['nom_mat']."</option>";
                                            $rep['id_mat']++;
                                            continue;
                                        }
                                        echo"<option value='".$rep['id_mat']."'>".$rep['nom_mat']."</option>";
                                    }
                                    else{
                                        echo"<option value='".$rep['id_mat']."'>".$rep['nom_mat']."</option>";													
                                    }
                                    $rep['id_mat']++; 
                                }	?>
                        </select>
                        <span class="error-message"><?php if(isset($erreurnmatiere)) echo $erreurnmatiere;  ?></span><?php
                    }
                    else{ 
                        if(mysqli_num_rows($sqlcl)==0){?>
                            <label for="nmatiere">Matières</label>
                            <select name="nmatiere" id="nmatiere" class="form-control" size='1'>
                                <option value=0>Liste vide</option>
                            </select><?php		
                        }
                    }
                } ?>
            </div>
            <div class="col-xs-12 col-sm-3 col-md-2">
                <label for="noteecrite">Soumettre</label><br>
                <input type="submit" name="enregistrer" id="enregistrer" value="Soumettre" class="btn btn-primary pull-left">
            </div>
        </div> 
    </form>
    Dans ce formulaire, l'utilisateur sélectionne une année scolaire, le mois et la matière puis valide le formulaire.
    Voici le code de traitement du formulaire:
    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
    <?php if(isset($_POST['enregistrer'])){  
        $anant=strip_tags($_POST['anant']); $anant=htmlspecialchars($anant);
        $nmois=strip_tags($_POST['nmois']); $nmois=htmlspecialchars($nmois); $nmatiere=strip_tags($_POST['nmatiere']);
        $nmatiere=htmlspecialchars($nmatiere);
        $valid=true;
        if(!preg_match("#^[0-9]{1,3}$#", $anant) || ($anant==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner une année scolaire ! </h4></div></div>";
        }
        if(!preg_match("#^[0-9]{1,2}$#", $nmois) || ($nmois==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner un mois ! </h4></div></div>";
        }
        if(!preg_match("#^[0-9]{1,3}$#", $anant) || ($anant==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner une année scolaire ! </h4></div></div>";
        }
        if(!preg_match("#^[0-9]{1,3}$#", $nmatiere) || ($nmatiere==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner une matière ! </h4></div></div>";
        }
        if($valid){
            $lcl=$connexion->query("SELECT * FROM classes_detudes WHERE id_an_scol='".$anant."' AND id_classe_scol='".$ci."'"); 
            if(!$lcl){
                $erreursql="<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Une erreur interne s'est produite! Veuillez informer l'administrateur de l'application (" . $connexion->errno . ") " . $connexion->error."</h4></div></div>";
            }else{
                if(mysqli_num_rows($lcl)>=1){ $n=1; $i=1; ?>
                    <fieldset><legend>Veuillez remplir la fiche de note</legend>
                        <div class="row">
                            <div class="col-sm-12 col-md-10 col-lg-8">
                                <form name="fiche" method="POST" action="">
                            <table class='table'>
                                <thead><tr><th>N°</th><th>Matricule</th><th>Prénoms et Noms</th><th>Notes</th></tr></thead>
                                <tbody><?php
                                    while($replcl=$lcl->fetch_assoc()){ $idelev=$replcl['id_elev']; 																?>
                                        <tr><td><?php echo $n++; ?></td>
                                            <td><?php 
                                                $sqlpn=$connexion->query("SELECT num_mat_elev, prenom_elev, nom_fam_elev FROM eleves WHERE id_elev='".$idelev."'");
                                                if(!$sqlpn){
                                                    $erreursql="<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Une erreur interne s'est produite! Veuillez informer l'administrateur de l'application (" . $connexion->errno . ") " . $connexion->error."</h4></div></div>";
                                                }else{
                                                    if(mysqli_num_rows($sqlpn)>=1){ 
                                                        while($repsqlpn=$sqlpn->fetch_assoc()){ $matricule=$repsqlpn['num_mat_elev']; $prenom=$repsqlpn['prenom_elev']; $nom=$repsqlpn['nom_fam_elev']; echo $matricule; 	}																
                                                    }
                                                    elseif(mysqli_num_rows($sqlpn)==0){ echo'Liste vide'; }
                                                } ?></td>
                                            <!-- Prénoms et Noms de l'élève -->
                                            <td><?php 
                                                echo $prenom.' '.$nom;
                                                  ?>
                                            </td>
                                            <!-- Note -->
                                            <td width=50><input type="text" class="form-control" id="note" name="note<?php echo $i++; ?>" placeholder="Note" value="<?php if(isset($note)) echo $note; ?>" size=20>
                                                <span class="error-message"><?php if(isset($erreurnote)) echo $erreurnote;  ?></span>
                                            </td>
                                        </tr><?php
                                    } ?>
     
                                </tbody>
                            </table>
                                <input type="hidden" name="annee" value="<?php echo $anant; ?>">
                                <input type="hidden" name="nclasse" value="<?php echo $ci; ?>">
                                <input type="hidden" name="nmatiere" value="<?php echo $nmatiere; ?>">
                                <input type="submit" name="sauvegarder" value="Enregistrer" class="btn btn-primary pull-right">
                                </form>
                    </div>
                    </div>
                    </fieldset><?php
                }
            }
     
        }
    } ?>
    Après le traitement du premier formulaire, la liste des élèves apparaît avec un champ text devant chaque nom d'élève pour saisir la note de l'élève comme le montre cette deuxième capture d'écran.
    Nom : form2.png
Affichages : 302
Taille : 19,5 Ko

    Le blocus est que je ne sais pas comment traité les notes de chaque élève après soumission de ce formulaire vu que l'effectif des élèves est variable.
    Pour cette capture d'écran on voit 6 élèves mais sa peut être 30 élèves pour une autre classe voir même 45.
    J'ai commencé avec ceci:
    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
    if(isset($_POST['sauvegarder'])){  
        $anant=strip_tags($_POST['anant']); $anant=htmlspecialchars($anant);
        $nmois=strip_tags($_POST['nmois']); $nmois=htmlspecialchars($nmois); $nmatiere=strip_tags($_POST['nmatiere']);
        $nmatiere=htmlspecialchars($nmatiere);
        $valid=true;
        if(!preg_match("#^[0-9]{1,3}$#", $anant) || ($anant==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner une année scolaire ! </h4></div></div>";
        }
        if(!preg_match("#^[0-9]{1,2}$#", $nmois) || ($nmois==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner un mois ! </h4></div></div>";
        }
        if(!preg_match("#^[0-9]{1,3}$#", $anant) || ($anant==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner une année scolaire ! </h4></div></div>";
        }
        if(!preg_match("#^[0-9]{1,3}$#", $nmatiere) || ($nmatiere==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner une matière ! </h4></div></div>";
        }if(isset($_POST['enregistrer'])){  $anant=strip_tags($_POST['anant']); $anant=htmlspecialchars($anant);
        $nmois=strip_tags($_POST['nmois']); $nmois=htmlspecialchars($nmois); $nmatiere=strip_tags($_POST['nmatiere']);
        $nmatiere=htmlspecialchars($nmatiere);
        $valid=true;
        if(!preg_match("#^[0-9]{1,3}$#", $anant) || ($anant==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner une année scolaire ! </h4></div></div>";
        }
        if(!preg_match("#^[0-9]{1,2}$#", $nmois) || ($nmois==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner un mois ! </h4></div></div>";
        }
        if(!preg_match("#^[0-9]{1,3}$#", $anant) || ($anant==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner une année scolaire ! </h4></div></div>";
        }
        if(!preg_match("#^[0-9]{1,3}$#", $nmatiere) || ($nmatiere==0)){
            $valid=false;
            echo"<div class='row'><div class='col-md-12 alert-danger text-center'><h4>Veuillez sélectionner une matière ! </h4></div></div>";
        } 
    }
    S'il vous plaît, j'ai besoin de vos solutions!

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour le champ de saisie de la note, utilisez la syntaxe avec [] comme cela par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="note[<?php echo $idelev;?>]"
    regardez ensuite le contenu de $_POST["note"] et vous verrez le résultat sous forme de tableau

Discussions similaires

  1. test de plusieurs champs dans un formulaire
    Par mouna2010 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/02/2011, 21h25
  2. [POO] Validation plusieurs champ d'un formulaire
    Par elle-même dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/02/2008, 09h03
  3. [AJAX] Auto completion - plusieurs champs dans un formulaire
    Par etco1 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/09/2007, 17h36
  4. Réponses: 6
    Dernier message: 30/04/2007, 23h36
  5. Réponses: 7
    Dernier message: 15/03/2007, 08h50

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