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

MkFramework Discussion :

Formulaire avec boutons radio->multi-choix


Sujet :

MkFramework

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut Formulaire avec boutons radio->multi-choix
    Bonjour,

    J'aimerais faire un formulaire pour enregistrer plusieurs élèves à la fois dans une classe.
    J'ai une table users->id,nom,prenom,login....
    une table classes->id,nom,...
    une table qui fait le lien classes_users->id,user_id,classe_id

    Ces models existent et je peux ajouter un élevé à une classe mais un par un: Je doit faire le choix de l'élève puis celui de la classe et j'enregistre.
    Si j'ai 10 classes et 12 élèves par classe ça prend pas mal de temps.

    Pensez-vous que ce soit possible un pareil formulaire?
    cordialement

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Si vous aviez un tableau avec une colonne nom, une prénom, un menu déroulant pour indiquer la classe, ça irait ?
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Vous proposé un menu déroulant les classes à chaque ligne?
    Si c'est ce que j'ai compris, cela obligerait à dérouler pour chaque élève un par un

    Je pensais à un truc du genre.

    Sur un tableau listant les classes au bout de chaque ligne un lien "Ajouter des élèves".

    on serai envoyé sur un formulaire avec la liste des éléves et un bouton 'checkbox'(et non 'radio' je me suis tromper)
    Un peu comme ça
    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
    <form name='formu' method='post' action=''>
    	<?php                                                    
    	$i=1;
    		//on fait une boucle sur le tableau des eleves 
    		on recupère id, nom, prenom
    			$id = $row["id"];
    			$nom = $row["nom"];
    			$prenom = $row["prenom"];
    		?>
    <input  type="checkbox" VALUE='<?php echo $id; ?>' name="eleve[]"  ><?php echo $nom.' '.$Prenom ?><br>
     
    	<?php 
    	$i++; 
    		}
    	?>
    <INPUT Type="submit" value="Enregistrer">
    	</form>
    Puis coté enregistrement ce serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    On recupère par POST "classe_id"
    On fait une boucle pour chaque POST eleve pour recupèrer chaque user_id
    for ($i = 0; $i < count($_POST["eleve"]); $i++)
      {
      $user_id=$_POST["eleve"][$i]."" ;
      if ($user_id!="") 
    	{
    	//inserer les données dans la table classesUsers
    	INSERT INTO classesUsers ->classe_id et user_id
    	}
     
    }

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Oui c'est une solution

    Ce que j'avais compris c'est que vous souhaitiez saisir plus facilement une liste d'élèves


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [champ nom] [champ prenom] [menu déroulant classe] [bouton enregistrer]
    [champ nom] [champ prenom] [menu déroulant classe] [bouton enregistrer]
    [champ nom] [champ prenom] [menu déroulant classe] [bouton enregistrer]
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    J'ai bien compris ce que vous proposez, mais le but du formulaire que souhaite permettrait d'enregistrer plusieurs élèves en une fois.

    vous pensez que c'est possible?

  6. #6
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Avec ma solution c'est le cas:
    vous avec un tableau avec plusieurs lignes: une ligne par élèves avec un menu deroulant pour la classe pour chaque ligne

    Un peu comme un excel: vous saisissez 2/3/4 élèves, leur nom/prenom/classe... et en bas du tableau vous valider: il vous créé les élèves
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  7. #7
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    d'accord je comprend mieux.

    En fait les élèves sont déjà dans la base (table users)
    Avec le formulaire on a rien à écrire. Seulement à choisir lesquels et à la fin on enregistre.
    Et la table classesUsers se trouve enrichis des enregistrements [id] [classe_id] [user_id]

    Peut-être parlons nous de la même chose?

  8. #8
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    ok, effectivement je n'avais pas compris le besoin.

    Dans ce cas la, effectivement vous pouvez cliquer sur une classe et voir une liste des élèves disponibles avec une case à cocher pour enregistrer le lien en base
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  9. #9
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Est ce que vous avez compris qu'au moment de l'enregistrement la méthode devra faire autant d'INSERT INTO qu'il y a d'éléve à enregistrer?

    C'est à dire:
    si je veux ajouter 12 élèves à une classe il enregitrera 12 fois de suite. il y aura 12 nouvelles lignes à ma table classesUsers en une fois.

    Vous pensez que ce soit possible ça?

  10. #10
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Oui

    dans votre formulaire vous faites une boucle affichant des checkbox
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php foreach($this->tEleves as $oEleve):?>
    <input type="checkbox" name="tEleve[]" value="<?php echo $oEleve->id?>"/> <?php echo $oEleve->nom?><br/>
    <?php endforeach;?>

    Et coté module faites une boucle sur cette variable contenant les checkbox
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $tEleve=_root::getParam('tEleve');
    foreach($tEleve as $eleve_id){
     //en boucle vous créé un enregistrement classesUsers eleve_id/classe
     $oRowClasseUser=new classesUsers;
     $oRowClasseUser->eleve_id=$eleve_id;
     $oRowClasseUser->classe_id=_root::getParam('classe_id');//(votre classe)
     $oRowClasseUser->save();
    }

    note: j'écris ca de mémoire, vérifiez le nom des classes et des champs
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  11. #11
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Bonjour,

    Mon formulaire s'affiche bien.
    Ma vue
    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
    <?php $oPluginHtml=new plugin_html?>
    <form action="" method="POST" >
     
    <table class="tb_new">
     
    	<tr>
    		<th>Nom de l'utilisateur</th>
    		<td>
    			<?php foreach($this->tEleves as $oEleve):?>
    			<input type="checkbox" name="tEleve[]" value="<?php echo $oEleve->id?>"/> <?php echo $oEleve->nom?><br/>
    			<?php endforeach;?>
    		</td>
    	</tr>
    	<tr>
    		<th>classe</th>
    		<td><?php echo $oPluginHtml->getSelect('classe_id',$this->tJoinmodel_classes)?><?php if($this->tMessage and isset($this->tMessage['classe_id'])): echo implode(',',$this->tMessage['classe_id']); endif;?></td>
    	</tr>
     
    </table>
     
    <input type="hidden" name="token" value="<?php echo $this->token?>" />
    <?php if($this->tMessage and isset($this->tMessage['token'])): echo $this->tMessage['token']; endif;?>
     
    <input type="submit" value="Ajouter" /> <a href="<?php echo $this->getLink('classesUsers::listEleves')?>">Annuler</a>
    </form>
    Ma methode
    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
    public function _newEleve(){
    		$tMessage=$this->saveEleve();
    		$oClassesUsers=new row_classesUsers;
     
    		$oView=new _view('classesUsers::newEleve');
    		$oView->oClassesUsers=$oClassesUsers;
    		$oView->tEleves=model_Users::getInstance()->findAllEleves();
    		$oView->tJoinmodel_users=model_users::getInstance()->getSelectAllEleves();		
    		$oView->tJoinmodel_classes=model_classes::getInstance()->getSelect();
     
    		$oPluginXsrf=new plugin_xsrf();
    		$oView->token=$oPluginXsrf->getToken();
    		$oView->tMessage=$tMessage;
     
    		$this->oLayout->add('main',$oView);
    	}
    L'enregistrement se fait dans la methode saveEleve()
    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
    public function saveEleve(){
    		if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas
    			return null;
    		}
     
    		$oPluginXsrf=new plugin_xsrf();
    		if(!$oPluginXsrf->checkToken( _root::getParam('token') ) ){ //on verifie que le token est valide
    			return array('token'=>$oPluginXsrf->getMessage() );
    		}
     
    		$iId=_root::getParam('id',null);
    		if($iId==null){
    			$oClassesUsers=new row_classesUsers;	
    		}else{
    			$oClassesUsers=model_classesUsers::getInstance()->findById( _root::getParam('id',null) );
    		}
     
    		$tId=model_classesUsers::getInstance()->getIdTab();
    		$tColumn=model_classesUsers::getInstance()->getListColumn();
    		foreach($tColumn as $sColumn){
    			 if(isset($_FILES[$sColumn]) and $_FILES[$sColumn]['size'] > 0){
    				$sNewFileName='data/upload/'.$sColumn.'_'.date('Ymdhis');
     
    				$oPluginUpload=new plugin_upload($_FILES[$sColumn]);
    				$oPluginUpload->saveAs($sNewFileName);
    				$oClassesUsers->$sColumn=$oPluginUpload->getPath();
    				continue;	
    			}else  if( _root::getParam($sColumn,null) ==null ){ 
    				continue;
    			}else if( in_array($sColumn,$tId)){
    				 continue;
    			}
     
    			$oClassesUsers->$sColumn=_root::getParam($sColumn,null) ;
    		}
     
    		if($oClassesUsers->isValid()){
     
    			$tEleve=_root::getParam('tEleve');
    			foreach($tEleve as $eleve_id){
    				//en boucle vous créé un enregistrement classesUsers eleve_id/classe
    				$oRowClasseUser=new classesUsers;
    				$oRowClasseUser->eleve_id=$eleve_id;
    				$oRowClasseUser->classe_id=_root::getParam('classe_id');//(votre classe)
    				$oRowClasseUser->save();
    			}
    			//une fois enregistre on redirige (vers la page liste)
    			_root::redirect('classesUsers::listEleves');
    		}else{
    			return $oClassesUsers->getListError();
    		}
     
    	}
    Votre code je l'ai mis à partir de la ligne 40.
    Je ne pense pas que ce soit au bon endroit car ma page ne s'affiche pas. Comme s'il y avait une erreur de syntaxe: "echec de chargement, erreur serveur"

  12. #12
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    J'ai analysé la syntaxe: pas d'erreur trouvé dans les 3 codes
    Vous utilisez quel type de serveur apapche/php ? windows /linux /easyphp
    ?

    Il faut regarder le message d'erreur de votre serveur apache
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  13. #13
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Essayez de mettre du debug
    Code php : 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
     
    public function saveEleve(){
    		if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas
    			return null;
    		}
     
    		$oPluginXsrf=new plugin_xsrf();
    		if(!$oPluginXsrf->checkToken( _root::getParam('token') ) ){ //on verifie que le token est valide
    			return array('token'=>$oPluginXsrf->getMessage() );
    		}
     
    		$iId=_root::getParam('id',null);
    		if($iId==null){
    			$oClassesUsers=new row_classesUsers;	
    		}else{
    			$oClassesUsers=model_classesUsers::getInstance()->findById( _root::getParam('id',null) );
    		}
     
    		$tId=model_classesUsers::getInstance()->getIdTab();
    		$tColumn=model_classesUsers::getInstance()->getListColumn();
    		foreach($tColumn as $sColumn){
    			 if(isset($_FILES[$sColumn]) and $_FILES[$sColumn]['size'] > 0){
    				$sNewFileName='data/upload/'.$sColumn.'_'.date('Ymdhis');
     
    				$oPluginUpload=new plugin_upload($_FILES[$sColumn]);
    				$oPluginUpload->saveAs($sNewFileName);
    				$oClassesUsers->$sColumn=$oPluginUpload->getPath();
    				continue;	
    			}else  if( _root::getParam($sColumn,null) ==null ){ 
    				continue;
    			}else if( in_array($sColumn,$tId)){
    				 continue;
    			}
     
    			$oClassesUsers->$sColumn=_root::getParam($sColumn,null) ;
    		}
     
    		if($oClassesUsers->isValid()){
    print "debut debug \n<pre>";
    			$tEleve=_root::getParam('tEleve');
    			foreach($tEleve as $eleve_id){
    				//en boucle vous créé un enregistrement classesUsers eleve_id/classe
    				$oRowClasseUser=new classesUsers;
    				$oRowClasseUser->eleve_id=$eleve_id;
    				$oRowClasseUser->classe_id=_root::getParam('classe_id');//(votre classe)
    				$oRowClasseUser->save();
     
    print_r($oRowClasseUser);
    			}
    			//une fois enregistre on redirige (vers la page liste)
    print "fin debug";exit;			
    //_root::redirect('classesUsers::listEleves');
    		}else{
    			return $oClassesUsers->getListError();
    		}
     
    	}
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  14. #14
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    J'ai trouvé
    J'ai changer
    $oRowClasseUser=new classesUsers;
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $oRowClasseUser=new row_classesUsers;
    ça marche du tonnerre

    Merci beaucoup et à bientôt

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

Discussions similaires

  1. [Forum] Formulaire de contact avec boutons radio
    Par Louffeman dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 19/06/2014, 13h29
  2. [PHP 5.0] Récupérer contenu d'un formulaire avec bouton radio
    Par Jeannotc dans le forum Langage
    Réponses: 5
    Dernier message: 31/05/2013, 13h05
  3. Modification formulaire avec bouton radio
    Par Mister X dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/12/2012, 22h03
  4. Problème formulaire avec bouton Radio
    Par SwatAgent dans le forum ASP
    Réponses: 1
    Dernier message: 23/10/2010, 16h35
  5. Formulaire avec bouton radio + onclick
    Par iv3soldat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/12/2007, 19h30

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