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 :

[Tableaux] Tableau : supprimer une clé par son N° d'ordre [PHP 4]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut [Tableaux] Tableau : supprimer une clé par son N° d'ordre
    Bonjour à tous,

    Soit un tableau de produits issu d'un form :
    $prod[] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Array
    (
        [0] => 12
        [1] => 21
        [2] => 30
        [3] => 61
    )
    Les ID produits sont donc 12,21,30 et 61

    A ce tableau correspond un autre tableau de codes promo :
    $code_promo[] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Array
    (
        [0] => 2
        [1] => 3
        [2] => 2
        [3] => 0
    )
    Le produit 12 a le code promo 2
    Le produit 21 le 3
    Le produit 30 le 2
    et le produit 61, pas de code promo.

    On voit qu'il y a doublon et que le code promo 2 est appliqué 2 fois.

    Toujours dans le même form, j'ai un checkbox prod_suppr[].

    Si je coche le produit 30, j'obtiens ce tableau :
    $prod_suppr :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Array
    (
        [0] => 30
    )
    Jusque là, rien de bien compliqué.

    Puis j'obtiens le nombre de produits à supprimer avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $nb_prod_suppr = count($prod_suppr);
    Je fais une boucle et je supprime cet élément du tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $f = $_POST;
    for($j=0;$j<$nb_prod_suppr;$j++){ 
    unset($f['prod'][array_search($f['prod_suppr'][$j], $f['prod'])]);
    $f['prod'] = array_values($f['prod']);
    }
    Très bien, je me retrouve avec le tableau $prod :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Array
    (
        [0] => 12
        [1] => 21
        [2] => 61
    )
    Dont le produit ID 30 a bien été supprimé.
    J'en viens à ma question : on voit que le produit supprimé est le 3ème du tableau $prod... comment faire pour supprimer également le 3ème élément du tableau $code_promo ? De façon à se retrouver avec :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $prod :
     
    Array
    (
        [0] => 12
        [1] => 21
        [2] => 61
    )
     
    $code_promo :
     
    Array
    (
        [0] => 2
        [1] => 3
        [2] => 0
    )
    la méthode unset / array_search que j'ai utilisée pour supprimer le produit ne fonctionne pas dans le tableau code_promo, je pense que c'est à cause du doublon 2, vu plus haut. Car le but n'est pas de supprimer la valeur 2 du tableau $code_promo mais la 3ème entrée.
    Comment faire ?
    En espérant avoir été assez clair dans mes explications....merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pourquoi tu ne supprimes pas par la clef puisque tu la connais (au passage, utilise foreach pour parcourir un tableau) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach ($prod_suppr as $value) {
    $cle = array_search($value, $f['prod']);
    unset($f['prod'][$cle]);
    unset($code_promo[$cle];
    }
    Mais c'est plutot le fond qu'il faudrait revoir :
    tu pourrais avoir un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    prod 
          id_produit
                 quantité
                 code_promo
                 etc.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut


    Ben oui, tu as tout juste ! Je m'embrouille grave dans les manips de tableaux, pour moi ça ressemble à de la géométrie dans l'espace...où j'ai eu 2 de moyenne durant toute ma scolarité !

    Modifier le fond, je ne peux pas trop : j'ai un form avec des listes déroulantes contenant les produits d'un catalogue, des listes déroulantes avec des codes promo disponibles dans une autre table... Le user peut faire correspondre l'un avec l'autre...et supprimer ou ajouter un produit...et son code promo associé.

    Grand merci à toi, je te souhaite une bonne journée.
    Heureusement, il en reste qui ne défilent pas.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/03/2006, 09h44
  2. passer d'une cellule d'un tableau a une autre par lien hyper
    Par jack_1981 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 28/12/2005, 14h53
  3. Accéder à une propriété par son nom
    Par Neilos dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/09/2005, 21h34
  4. [DLL] Acces a une methode par son index de maniere dynamique
    Par Clorish dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 11/03/2005, 17h14

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