2010-08-11 9 views
1

J'ai donc créé un formulaire qui, par la fonction post, m'envoie plusieurs valeurs. $_POST[groups] m'envoie, en utilisant 4 cases à cocher différentes valeurs 1, 2, 4 et 8. $_POST[retailgroup] fait la même chose, mais seulement les valeurs 1, 2 et 4. Le problème est que je veux que ceux-ci s'additionnent ensemble, puis envoyer le somme des valeurs d'une table MySQL. J'ai réussi à le faire en utilisant une boucle foreach suivante:

foreach ($_POST as $val) { 
    foreach ($val as $key=>$final_val) { 
     $group = $group+$final_val; 
    } 
} 

Le problème commence quand je dois avoir ces deux l'une de l'autre, car ils vont dans des colonnes distinctes dans le tableau. Pour être clair, j'ai assigné différentes valeurs à différents groupes (en prenant toujours la valeur prev fois deux, tout comme en comptant binary) comme 1, 2, 4 et 8. En les additionnant je peux déterminer l'appartenance aux groupes par faire une soustraction "en arrière". Comme il existe différents types de groupes, je les veux dans deux champs distincts de la table.

J'espère que tout est clair.

Une idée sur la façon de faire cela?

Répondre

0

essayer

foreach ($_POST[groups] as $key=>$final_val) { 
    //do stuff for first group 
} 
foreach ($_POST[retailgroup] as $key=>$final_val) { 
    //do stuff for second group 
} 

et après que vous pouvez faire ce que vous voulez avec les variables obtenu à partir de boucles

3

que vous souhaitez utiliser:

$groups_sum = array_sum($_POST['groups']); 
$rgroups_sum = array_sum($_POST['retailgroups']); 

Ce sera plus rapide et plus précise qu'un foreach boucle dans ce cas.

+1

Vous me devança de quelques secondes. – Joseph

0
$groups = array_sum($_POST['groups']); 
$retailGroups = array_sum($_POST['retailgroup']); 

Vous pouvez vérifier l'adhésion comme celui-ci au lieu de soustraire à l'envers:

$groupAdmin = 4; 
if($groups & $groupAdmin) { 
    // is admin 
}