[PHP] $_POST sur champs avec nom aléatoire

Résolu
Bonjour à tous,

Je fais actuellement un formulaire en PHP et Javascript surtout.

Avec le Javascript, je génère des champs textes que l'on peut supprimer.

A chaque fois je met un id et un nom au champ sous la forme : 'comment' + i
où i est une variable qui est incrémentée à chaque fois.

Le seul problème c'est que les champs peuvent être supprimés.

Je me retrouve donc avec des champs avec des noms :

comment1
comment3
comment4
comment7
...

C'est très alétoire et ça change à chaque fois donc je ne sais pas comment récupérer les noms.
Quelqu'un aurait une idée de la boucle à faire?

J'ai testé
$i = 0;
while ( isset($_POST['comment' . $i) ) {
$i++;
}

Mais bien sur ça ne fonctionne que si tous les noms se suivaient ...

Quelq'un a une idée pour récupérer la liste de ces noms en PHP?

Merci d'avance !

3 réponses

  1. Bonjour

    for ($i=0; $i<=$max;$i++) {
      if ( isset($_POST['comment' . $i) ) {
        ...
      }
    }
    0
    1. Contributeur
      Merci pour cette réponse,

      C'est bien ce que je voulais faire, mon problème était : comment trouvé $max?

      J'ai trouvé un petit bout de code pas mal du tout : (si ça peut aider quelqu'un )

      foreach($_POST as $key=>$val) { echo $key.'=>'.$val.'<br />'; }

      Je vais essayer de me débrouiller avec ça pour trouver le fameux $max ...
      0
      1. Contributeur
        Bon bah voilà j'ai réussi à me débrouiller avec ça ^^

        Je poste mon code si ça peut aider quelqu'un ... =)

        // Recherche du maximum pour la boucle pour
        // On initialise le maximum
        $max = 0;
        // On recherche parmis toutes les valeurs postées
        foreach($_POST as $key=>$val) {
        // On les coupe avec "comment"
        $keys_part = split("comment", $key);
        // Si c'est bien sous la forme comment + i
        if ( sizeof($keys_part) > 1 and $keys_part[1] > $max ) {
        // Le maximum est initialisé avec ce i
        $max = $keys_part[1];
        }
        }

        // On récupère les résultats dans un tableau
        $j = 0;
        // On fait une boucle sur tous les comments
        for ( $i = 0 ; $i < ($max + 1) ; $i++ ) {
        // Si le comment n'est pas vide
        if ( $_POST['comment' . $i] != "" ) {
        // On l'ajoute dans le tableau
        $comment[$j] = htmlspecialchars(mysql_escape_string($_POST['comment' . $i]));
        // On passe à la case suivante du tableau
        $j++;
        }
        }
        0