Affichage dernière ligne dans un foreach [Résolu]

Signaler
-
 jordane45 -
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...

4 réponses

Messages postés
32958
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juin 2021
3 558
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.

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.
Messages postés
32958
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juin 2021
3 558
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);
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"
Messages postés
32958
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juin 2021
3 558
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...
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 !!

...
Messages postés
32958
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juin 2021
3 558
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" ..
>
Messages postés
32958
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juin 2021

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 !