Affichage dernière ligne dans un foreach

Résolu/Fermé
Qd - Modifié le 1 mars 2021 à 14:53
 jordane45 - 2 mars 2021 à 11:57
Bonjour,

Je souhaite modifier le type d'affichage pour ma dernière ligne du foreach. J'ai réussi à faire ce que je souhaite cependant, pour la dernière ligne j'ai du coup celle que j'ai définis et celle qui suit les lignes d'avant. Je voudrais que l'affichage de celle que j'ai rajouté soit affiché uniquement. Mon explications n'est pas très claire je suis désolé... Voici mon code :
 <?php
$last_key = end(array_keys($result));

       for($i=0; $i<=$total_ligne; $i++) 
        {
        foreach ($result as $tab => $ligne) {
            $value = $ligne['document_nom'];

             if ($tab == $last_key)
            {
              echo '<div id="uploader2">';
              echo '<div class="row uploadDoc">';
              echo '<div class="col-sm-4">';
              echo '<div class="docErr">Veuillez choisir votre document au format pdf, jpg, jpeg, png</div>';
              echo '<div class="fileUpload btn btn-orange">';
              echo '<img src="https://image.flaticon.com/icons/svg/136/136549.svg" class="icon2">';
              echo '<span class="upl" id="upload">Parcourir</span>';
              echo '<input type="file" class="upload up" name="upload'.$i.'" accept="image/png, image/jpeg, .pdf" id="up" onchange="readURL(this);" required/>';
              echo '<div class="invalid-feedback">Document obligatoire.</div></div></div>';
              echo '<div class="col-sm-7">';
              echo '<input type="text" class="form-control" name="" placeholder="'.$value.'" disabled></div>';
              echo '<div class="col-sm-1">';
              echo '<a href="#" class="effacer'.$i.'" title="Efface le document"><i class="fas fa-times fa-xs" style="color:red;"></i></a></div>';
              echo '</div>';
              echo '</div>';
            }

     ?>

<div id="uploader">
<div class="row uploadDoc">
  <div class="col-sm-4">
    <div class="docErr">Veuillez choisir votre document au format pdf, jpg, jpeg, png</div><!--error-->
    <div class="fileUpload btn btn-orange">
      <img src="https://image.flaticon.com/icons/svg/136/136549.svg" class="icon2">
      <span class="upl" id="upload">Parcourir</span>
      <input type="file" class="upload up" name="upload<?php echo $i; ?>" accept="image/png, image/jpeg, .pdf" id="up" onchange="readURL(this);" required/>
      <div class="invalid-feedback">
        Document obligatoire.
   </div>
    </div><!-- btn-orange -->
  </div><!-- col-3 -->
  <div class="col-sm-7">
   <?php echo '<input type="text" class="form-control" name="" placeholder="'.$value.'" disabled>'; ?>
  </div><!--col-8-->
  <div class="col-sm-1">
  <a href="#" class="effacer<?php echo $i; ?>" title="Efface le document"><i class="fas fa-times fa-xs" style="color:red;"></i></a>
  </div>
</div><!--row-->
</div><!--uploader-->

       <?php

       $i++;
    }
    
    }
 ?>


EDIT : Correction des balises de code

En espérant que quelqu'un me réponde...
A voir également:

4 réponses

jordane45 Messages postés 38452 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mars 2025 4 740
1 mars 2021 à 14:55
Bonjour,

Pas clair... c'est sûr ... les lignes qui suivent avant... heuu.. qui précèdent donc ??

Quoi qu'il en soit :
Fais un print_r de la variable $result
Fais un print_r de la variable $last_key

et montre nous ce que ces variables contiennent.

1
Oui c'est vrai que j'aurai du mieux travailler ma phrase. Je ferai attention pour les prochaines fois...

Sinon pour la variable $result en faisant un print_r j'obtiens :

Array ( [0] => Array ( [document_fonction] => 2 [document_soc] => 30 [document_nom] => Carte Identite [document_obligatoire] => 1 ) [1] => Array ( [document_fonction] => 2 [document_soc] => 30 [document_nom] => Diplome [document_obligatoire] => 1 ) [2] => Array ( [document_fonction] => 2 [document_soc] => 30 [document_nom] => CV [document_obligatoire] => ) [3] => Array ( [document_fonction] => 2 [document_soc] => 30 [document_nom] => Attestation CPAM [document_obligatoire] => ) [4] => Array ( [document_fonction] => 2 [document_soc] => 30 [document_nom] => RIB [document_obligatoire] => ) [5] => Array ( [document_fonction] => 2 [document_soc] => 30 [document_nom] => Exemplaire Feuille de Soins [document_obligatoire] => ) [6] => Array ( [document_fonction] => 2 [document_soc] => 30 [document_nom] => Attestation d'Inscription conseil Departemental [document_obligatoire] => 1 ) [7] => Array ( [document_fonction] => 2 [document_soc] => 30 [document_nom] => RCP [document_obligatoire] => 1 ) )


Puis pour $last_key : 7

Le seul soucis c'est juste l'affichage de ma dernière ligne.
0
jordane45 Messages postés 38452 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mars 2025 4 740
1 mars 2021 à 15:59
Si tu veux afficher que la dernière ligne
Pourquoi faire un foreach ?

Il suffit de faire :
$ligne= $result[$last_key];

et pour le $i ..
$i = count($result);
0
Non en faite j'affiche mes résultats issu de ma BDD normalement sauf pour la toute dernière ligne car je veux qu'il ait une appellation différente au niveau de l'id que j'ai nommé "uploader2" pour pouvoir traiter un code J.S. Donc l'affichage des autres lignes sont importantes sauf pour la dernière que je veux en quelques sorte "écraser"
0
jordane45 Messages postés 38452 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mars 2025 4 740
1 mars 2021 à 16:14
Tu ne peux pas l'écraser ...
Il faut faire ce traitement lorsque tu affiches tes différentes lignes ...
Mais visiblement ce n'est pas dans le code que tu nous montres...
0
Je ne peux pas empêcher d'afficher la dernière ligne de mon foreach et afficher que celle contenu dans mon if ?
et qu'est ce qui n'est pas dans le code que je montre ?

j'ai mon if qui s'affiche uniquement lors de ma dernière ligne avec "uploader2" :

if ($tab == $last_key)
            {
              echo '<div id="uploader2">';          // c'est cet id qui change par rapport a toutes les autres ligne que j'affiche
              echo '<div class="row uploadDoc">';
              echo '<div class="col-sm-4">';
              echo '<div class="docErr">Veuillez choisir votre document au format pdf, jpg, jpeg, png</div>';
              echo '<div class="fileUpload btn btn-orange">';
              echo '<img src="https://image.flaticon.com/icons/svg/136/136549.svg" class="icon2">';
              echo '<span class="upl" id="upload">Parcourir</span>';
              echo '<input type="file" class="upload up" name="upload'.$i.'" accept="image/png, image/jpeg, .pdf" id="up" onchange="readURL(this);" required/>';
              echo '<div class="invalid-feedback">Document obligatoire.</div></div></div>';
              echo '<div class="col-sm-7">';
              echo '<input type="text" class="form-control" name="" placeholder="'.$value.'" disabled></div>';
              echo '<div class="col-sm-1">';
              echo '<a href="#" class="effacer'.$i.'" title="Efface le document"><i class="fas fa-times fa-xs" style="color:red;"></i></a></div>';
              echo '</div>';
              echo '</div>';
            }


Puis pour l'affichage de toutes les lignes DONT la dernière que je veux enlever qui possède cette fois "uploader" j'ai :

<div id="uploader">
<div class="row uploadDoc">
  <div class="col-sm-4">
    <div class="docErr">Veuillez choisir votre document au format pdf, jpg, jpeg, png</div><!--error-->
    <div class="fileUpload btn btn-orange">
      <img src="https://image.flaticon.com/icons/svg/136/136549.svg" class="icon2">
      <span class="upl" id="upload">Parcourir</span>
      <input type="file" class="upload up" name="upload<?php echo $i; ?>" accept="image/png, image/jpeg, .pdf" id="up" onchange="readURL(this);" required/>
      <div class="invalid-feedback">
        Document obligatoire.
   </div>
    </div><!-- btn-orange -->
  </div><!-- col-3 -->
  <div class="col-sm-7">
   <?php echo '<input type="text" class="form-control" name="" placeholder="'.$value.'" disabled>'; ?>
  </div><!--col-8-->
  <div class="col-sm-1">
  <a href="#" class="effacer<?php echo $i; ?>" title="Efface le document"><i class="fas fa-times fa-xs" style="color:red;"></i></a>
  </div>
</div><!--row-->
</div><!--uploader-->


Je pense que c'est bien le code que je montre juste qu'il faudrait enlever la dernière ligne qui s'affiche de cette manière

EDIT : Correction des balises de code.... encore !!

...
0
jordane45 Messages postés 38452 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mars 2025 4 740
1 mars 2021 à 16:35
Déjà, pour poster ton code correctement, merci d'y indiquer le LANGAGE afin d'avoir la coloration syntaxique.
Explications ( à lire entièrement !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


Ensuite, concernant ta demande ... je ne m'étais arrêté que sur le code php ...

En effet, tu es au "bon endroit" .. pas contre .. tu as oublié de mettre un ELSE ...

En gros.. si tu es sur la dernière ligne.. faire ton truc .. sinon... afficher "normalement" ..
0
jordane45 > jordane45 Messages postés 38452 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mars 2025
2 mars 2021 à 11:57
Pour le coup c'est la deuxième fois que je poste sur un forum et je ne savais pas qu'il fallait choisir le langage pour l'affichage du code, je m'en excuse.

Merci pour le lien que tu m'as proposé.

Oui pour le coup je me sens un peu bête de mon erreur j'ai rajouté le Else et cette fois-ci mon code fonctionne. Je te remercie pour tes réponses rapides et de m'avoir bien aidé. Bonne continuation !
0