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

Résolu
Passarinho44 Messages postés 977 Statut Contributeur -  
Passarinho44 Messages postés 977 Statut Contributeur -
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. toto
     
    Bonjour

    for ($i=0; $i<=$max;$i++) {
      if ( isset($_POST['comment' . $i) ) {
        ...
      }
    }
    0
  2. Passarinho44 Messages postés 977 Statut Contributeur 132
     
    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
  3. Passarinho44 Messages postés 977 Statut Contributeur 132
     
    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