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 :

lien "supprimer " que sur la dernière ligne d'un foreach


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 lien "supprimer " que sur la dernière ligne d'un foreach
    Bonjour,

    Dans ma vue liste des évaluations j'ai la liste de toutes les machines avec une boucle sur chaque niveaux d'évaluation.

    J'ai ajouter un lien supprimer au bout de chaque ligne affiché evalué.

    Le problème est que si je n'ai qu'une ligne c'est bon mais si j'ai trois lignes évaluées, je peux supprimer chacune des lignes. J'aimerai n'avoir cette posibilité que sur la dernière évaluation.
    Donc si "mortaiseuse à mèche" a été évaluée aux trois niveaux, j'aimerais qu'il n'y ai que la possibilité de supprimer celle du niveau le plus haut.
    J'ai mis un bouton de suppression ligne 24 mais il est répété à chaque ligne.
    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
    <?php 
     
    $oPluginHtml=new plugin_html; 
    ?>
    <div class="sousTitre">Evaluation des Machines
    </div> 
     
    <?php foreach ($this->tMachines as $machine_id=>$machine_nom):?>
    <div class="ligne evaluation"><?php echo $machine_nom?>
    	<?php $eleve_id=_root::getParam('elevesid')?>
        <table class="action">
        						<!-- on boucle sur les niveaux -->
        						<?php foreach($this->tNiveaux as $niveau_id => $label):?>
        								<?php $max=$niveau_id?>
        								<?php if($niveau_id==0) continue;?>
     
        									<!-- si le niveau à été évalué, on affiche date + le nom du prof-->
        									<?php if(isset($this->tEvaluationsIndexed[$eleve_id][$machine_id][$niveau_id])):?>
        									<?php $oEval=$this->tEvaluationsIndexed[$eleve_id][$machine_id][$niveau_id]?>
     
        								<tr>
    										<td><?php echo $label?></td>
    										<td> -> fait le <?php $oDate= new plugin_date( $oEval->date);echo  $oDate->toString('d/m/Y');?> par <?php echo $this->tJoinmodel_users[$oEval->prof_id] ?> 
                                                <a href="<?php echo $this->getLink('evaluations::delete',array('id'=>$oEval->getId(), 'classe_id'=>_root::getParam('id')))?>" title="Effacer"> <img src="css/images/delete.png"></a>
                                            </td>
        								</tr>
        									<!-- sinon on affiche formulaire pour valider ce niveau-->
        									<?php else:?>
    									<tr>
        									<form action="" method="post">
        										<input type="hidden" name="formmodule" value="evaluation"/>
        										<input type="hidden" name="machine_id" value="<?php echo $machine_id?>"/>
        										<input type="hidden" name="niveau_id" value="<?php echo $niveau_id?>" />
     
    											<td><?php echo $label?></td>
    											<td><input type="submit" value="ok" /></td>
        									</form>
        								</tr>
     
        									<?php break;?>
        									<?php endif;?>
     
        							<!-- fin de boucle sur les niveaux -->
        						<?php endforeach;?>
        					<!-- on boucle sur les niveaux restant s'il y en a-->
        					<?php foreach($this->tNiveaux as $niveau_id => $label):?>
        						<?php  if($niveau_id <= $max) continue;?>
        						<tr>
        							<!-- affiche le niveau -->
        							<td><?php echo $label?></td>
        							<td></td>
        						</tr>
        					<!-- fin boucle sur les niveaux restant -->
        					<?php endforeach;?>
     
        </table>
     
    </div>	
    <?php endforeach ?>
     
    <a href="<?php echo $this->getLink('evaluations::pdf',array('elevesid'=>module_eleves::getParam('id')))?>"><div class="button action">PDF</div></a>
    Voici ce que cela donne


    J'aimerai une croix que sur la dernière évaluation de chaque machine.

    Vous pensez que ce soit possible?

  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
    Oui C'est possible: vous ajoutez une variable $i qui comptera les lignes et vous faites une vérification si $i = count($this->tNiveau) pour choisir d'afficher ou non le lien de suppression

  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
    Merci,

    J'ai fait pein de test j'y suis arrivé mais je crois ce ne doit pas être ça? MA methode demande à être simplifier non?
    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
    <!-- on boucle sur les niveaux pour compter le nombre de lignes-->
                                <?php $i=0 ?>
                                <?php foreach($this->tNiveaux as $niveau_id => $label):?>
                                <?php if(isset($this->tEvaluationsIndexed[$eleve_id][$machine_id][$niveau_id])):?>
                                <?php $oEval=$this->tEvaluationsIndexed[$eleve_id][$machine_id][$niveau_id]?>
                                <?php $i++ ?>
                                <?php endif ?>
                                <?php endforeach;?>
                                <?php echo $i ?>
     
                                <!-- on boucle sur les niveaux -->
        						<?php foreach($this->tNiveaux as $niveau_id => $label):?>
        								<?php $max=$niveau_id?>
     
        								<?php if($niveau_id==0) continue;?>
     
     
        									<!-- si le niveau à été évalué, on affiche date + le nom du prof-->
        									<?php if(isset($this->tEvaluationsIndexed[$eleve_id][$machine_id][$niveau_id])):?>
        									<?php $oEval=$this->tEvaluationsIndexed[$eleve_id][$machine_id][$niveau_id]?>
     
     
        								<tr>
    										<td><?php echo $label?></td>
    										<td> -> fait le <?php $oDate= new plugin_date( $oEval->date);echo  $oDate->toString('d/m/Y');?> par <?php echo $this->tJoinmodel_users[$oEval->prof_id] ?> 
     
                                               <?php if($niveau_id==$i):  ?> <a href="<?php echo $this->getLink('evaluations::delete',array('id'=>$oEval->getId(), 'classe_id'=>_root::getParam('id')))?>" title="Effacer"> <img src="css/images/delete.png"><?php endif ?> </a>
                                            </td>
        								</tr>
        									<!-- sinon on affiche formulaire pour valider ce niveau-->
        									<?php else:?>
    									<tr>
        									<form action="" method="post">
        										<input type="hidden" name="formmodule" value="evaluation"/>
        										<input type="hidden" name="machine_id" value="<?php echo $machine_id?>"/>
        										<input type="hidden" name="niveau_id" value="<?php echo $niveau_id?>" />
     
    											<td><?php echo $label?></td>
    											<td><input type="submit" value="ok" /></td>
        									</form>
        								</tr>
     
        									<?php break;?>
        									<?php endif;?>
     
        							<!-- fin de boucle sur les niveaux -->
        						<?php endforeach;?>

  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
    Dans la logique c'est bon, mais vous devriez renommer votre $i en $iTotal ou quelquechose qui indique que c'est le nombre total de lignes

    note: utiliser la fonction count sur le tableau peut donner le même resultat (à tester)
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    count($this->tEvaluationsIndexed[$eleve_id][$machine_id])

  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 modifier car votre proposition me parait plus propre.
    mais si le retour est null j'ai un erreur. L'erreur apparaît sur la ligne ou il n'y a pas encore eu d’évaluations.

    ma boucle maintenant
    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
    <!-- on compte le nbr de lignes -->
                                <?php $totalLignes=count($this->tEvaluationsIndexed[$eleve_id][$machine_id])?>
                                <!-- on boucle sur les niveaux -->
        						<?php foreach($this->tNiveaux as $niveau_id => $label):?>
        								<?php $max=$niveau_id?>
     
        								<?php if($niveau_id==0) continue;?>
     
     
        									<!-- si le niveau à été évalué, on affiche date + le nom du prof-->
        									<?php if(isset($this->tEvaluationsIndexed[$eleve_id][$machine_id][$niveau_id])):?>
        									<?php $oEval=$this->tEvaluationsIndexed[$eleve_id][$machine_id][$niveau_id]?>
     
     
        								<tr>
    										<td><?php echo $label?></td>
    										<td> -> fait le <?php $oDate= new plugin_date( $oEval->date);echo  $oDate->toString('d/m/Y');?> par <?php echo $this->tJoinmodel_users[$oEval->prof_id] ?> 
                                               <?php if($niveau_id==$totalLignes):  ?> <a href="<?php echo $this->getLink('evaluations::delete',array('id'=>$oEval->getId(), 'classe_id'=>_root::getParam('id')))?>" title="Effacer"> <img src="css/images/delete.png"><?php endif ?> </a>
                                            </td>
        								</tr>
        									<!-- sinon on affiche formulaire pour valider ce niveau-->
        									<?php else:?>
    									<tr>
        									<form action="" method="post">
        										<input type="hidden" name="formmodule" value="evaluation"/>
        										<input type="hidden" name="machine_id" value="<?php echo $machine_id?>"/>
        										<input type="hidden" name="niveau_id" value="<?php echo $niveau_id?>" />
     
    											<td><?php echo $label?></td>
    											<td><input type="submit" value="ok" /></td>
        									</form>
        								</tr>
     
        									<?php break;?>
        									<?php endif;?>
     
        							<!-- fin de boucle sur les niveaux -->
        						<?php endforeach;?>
    L'erreur affiché à la 3eme ligne (evaluation toupie=0)
    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
    Toupie
    Erreur
     
    Undefined offset: 3
    #0 /var/www/mk/data/genere/secu07/module/evaluations/view/list.php(13): exception_error_handler(8, 'Undefined offse...', '/var/www/mk/dat...', 13, Array)
    #1 /var/www/mk/lib/framework/class_view.php(72): include('/var/www/mk/dat...')
    #2 /var/www/mk/data/genere/secu07/module/eleves/view/show.php(6): _view->show()
    #3 /var/www/mk/lib/framework/class_view.php(72): include('/var/www/mk/dat...')
    #4 /var/www/mk/lib/framework/class_layout.php(121): _view->show()
    #5 /var/www/mk/data/genere/secu07/layout/template1.php(46): _layout->load('main')
    #6 /var/www/mk/lib/framework/class_layout.php(108): include('/var/www/mk/dat...')
    #7 /var/www/mk/data/genere/secu07/module/classes/main.php(170): _layout->show()
    #8 /var/www/mk/lib/framework/class_root.php(243): module_classes->after()
    #9 /var/www/mk/data/genere/secu07/public/index.php(54): _root->run()
    #10 {main}
     
    Detail:
    #0 /var/www/mk/data/genere/secu07/module/evaluations/view/list.php (13) 
    exception_error_handler( , 'Undefined offset: 3' , '/var/www/mk/data/genere/secu07/module/evaluations/view/list.php' , , Array ( [oPluginHtml] => plugin_html Object ( ) [machine_nom] => Toupie [machine_id] => 3 [eleve_id] => 5 [totalLignes] => 2 [label] => Niveau 3 [niveau_id] => 3 [max] => 3 [oEval] => row_evaluations Object ( [sClassModel:protected] => model_evaluations [_bChooseUpdate:abstract_row:private] => 1 [_tProperty:protected] => Array ( [id] => 144 [date] => 2013-07-07 [prof_id] => 6 [eleve_id] => 5 [machine_id] => 2 [niveau_id] => 2 ) [_tPropertyToUpdate:protected] => ) [oDate] => plugin_date Object ( [iYear:protected] => 2013 [iMonth:protected] => 7 [iDay:protected] => 7 ) ) ) 
    #1 /var/www/mk/lib/framework/class_view.php (72) 
    include( '/var/www/mk/data/genere/secu07/module/evaluations/view/list.php' ) 
    #2 /var/www/mk/data/genere/secu07/module/eleves/view/show.php (6) 
    _view -> show( ) 
    #3 /var/www/mk/lib/framework/class_view.php (72) 
    include( '/var/www/mk/data/genere/secu07/module/eleves/view/show.php' ) 
    #4 /var/www/mk/lib/framework/class_layout.php (121) 
    _view -> show( ) 
    #5 /var/www/mk/data/genere/secu07/layout/template1.php (46) 
    _layout -> load( 'main' ) 
    #6 /var/www/mk/lib/framework/class_layout.php (108) 
    include( '/var/www/mk/data/genere/secu07/layout/template1.php' ) 
    #7 /var/www/mk/data/genere/secu07/module/classes/main.php (170) 
    _layout -> show( ) 
    #8 /var/www/mk/lib/framework/class_root.php (243) 
    module_classes -> after( ) 
    #9 /var/www/mk/data/genere/secu07/public/index.php (54) 
    _root -> run( ) 
    #10 {main}

  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
    il faut ajouter une vérification sur l'existance de cette entrée à 3 dimensions
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($this->tEvaluationsIndexed[$eleve_id]) and isset($this->tEvaluationsIndexed[$eleve_id][$machine_id]) ){
     //votre code
    }

  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
    Merci beaucoup.

    ça marche très bien.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/02/2014, 10h41
  2. Supprimer un évènement sur la dernière colonne (datagridview)
    Par jacko842 dans le forum Développement Windows
    Réponses: 1
    Dernier message: 09/02/2012, 16h24
  3. Parse error: unexpected $ sur la dernière ligne..
    Par zamoto dans le forum Langage
    Réponses: 6
    Dernier message: 01/06/2006, 12h16

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