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

Langage PHP Discussion :

Retirer des éléments d'un tableau sans perdre les clés


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Par défaut Retirer des éléments d'un tableau sans perdre les clés
    Bonjour,
    J'ai un formulaire qui utilise POST. Il comprend des cases à cocher générée dynamiquement (leur nom m'est inconnu !). Pour récupérer leur valeur, il faut que je supprime les autres données du tableau POST. LE problème est que arrau_splice() me remplace les index numériques en renumérotant depuis 0. Comment conserver mes index comme avant ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Si tu donnais le code généré de tes ckeckbox, ce serait peut-être plus facile.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bonjour

    Si tu connais les noms des autres champs à supprimer, tu peux faire une série d'unset ou éventuellement quelque chose avec des différences de tableaux...

    Mais sans code, on va avoir du mal à t'aider
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Par défaut
    la solution de l'unset est celle qu'il te faut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $test = array(
     "parasite" => "toto",
     "check1" => true,
     "check2" => false
    );
     
    unset($test["parasite"]);
     
    print_r($test);

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Par défaut
    Je crois que même le fait de construire dynamiquement le nom de tes checkbox n'empèche pas de leur donner un radical commun puis un n° incrémenté par exemple.

    ensuite il suffit de faire quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    foreach($_POST as $key=>$value) if(ereg("radical1|radical2|radical3",$key))$tabAjout[$key]=$value;
    non ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Par défaut
    Parcourir l'ensemble du POST pour se palucher la re-copie du tableau peut être gourmant en ressource si le $_POST contient 15000 élément et que seulement 3 sont a supprimer !

    Bon ok je sais faut être un malade du formulaire pour avoir 15000 éléments soumis mais j'aime bien ta solution quand meme Alexdezark

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Par défaut
    Ben c'est un peu pareil compte tenu de la façon de fonctionner de ereg, si tu as 15000 elements dans ton $_post il vont tous être parcourus, voir reparcourus en sens inverse en cas d'echec

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Par défaut
    par contre tu peux faire l'inverse

    if(!ereg......)

    et là tu mets le noms de ceux à supprimer

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Par défaut
    Le code de mes checkboxes n'est pas important, c'est simplement une balise input. Simplement, leur nombre dépend des données d'une table, leur nom aussi. Par contre, il n'y aura jamais 15.000 champs, il y en a moins de 10.

    Citation Envoyé par lespoches Voir le message
    la solution de l'unset est celle qu'il te faut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $test = array(
     "parasite" => "toto",
     "check1" => true,
     "check2" => false
    );
     
    unset($test["parasite"]);
     
    print_r($test);
    LE problème est qu'il n'accpete pas ça sur du POST. J'obtiens un "unexpected T_UNSET".


    ---Edit---
    Ca marche avec ereg(). S'il n'y a pas d'autre proposition, je vais laisser comme ça.
    Merci

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

Discussions similaires

  1. Ajouter des élément a un tableau
    Par Death83 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/07/2007, 14h23
  2. Réponses: 7
    Dernier message: 21/08/2006, 13h58
  3. [Struts] ordre des éléments dans un tableau de propriétés
    Par zais_ethael dans le forum Struts 1
    Réponses: 2
    Dernier message: 09/05/2006, 15h54
  4. Réponses: 4
    Dernier message: 17/04/2006, 20h10
  5. [dom je pense]accéder à des éléments d un tableau sans id
    Par luta dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 07/02/2006, 15h31

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