2010-02-04 5 views
0

J'ai un tableau $ _POST résultant de la sélection (dans ce cas) de 3 lignes d'un tableau HTML affiché dans lequel chaque ligne a une case à cocher. Les ID sont des identifiants uniques pour chaque ligne.

Array 
(
    [checkbox] => Array 
     (
      [0] => 001403166 
      [1] => 001407509 
      [2] => 001407541 
     ) 
) 

Je veux rassembler les ID dans les variables afin que je puisse revenir en arrière et tirer les lignes complètes de MySQL pour le traitement (par exemple, suppression, etc.) - quelque chose comme ~

$var1 = 001403166 
$var2 = 001407509 
$var3 = 001407541 

Je n'ai pas la moindre idée de comment faire cela (pas inhabituel), ou même comment on l'appelle pour que je puisse trouver des informations à ce sujet. Merci pour toute aide!

Répondre

5

La fonction extract doit faire à peu près ce que vous vous demandez:

int extract (array $var_array [, int $extract_type = EXTR_OVERWRITE [, string $prefix ]]) 

variables d'importation à partir d'un tableau dans la table des symboles.


Quelque chose comme ça, je suppose, devrait faire l'affaire:

extract($_POST['checkbox'], EXTR_PREFIX_ALL , 'var'); 

La seule chose est que vous aurez variables appelées $var_0, $var_1, $var_2:

  • comptage à partir de 0, et non à partir de 1, car les clés de $_POST['checkbox'] commencent à 0
  • et avec un '_' entre $var et le numéro.


Note: avant d'utiliser extract, vous devez vous assurer que $_POST['checkbox'] contient des données "propres"!

+0

J'ai déjà utilisé extract(), mais je ne connaissais pas ses capacités réelles. Votre solution fonctionne très bien. Merci! – dave

+1

De rien :-) Amusez-vous! * (mais n'oubliez pas que l'utilisation de 'extract' peut causer des problèmes, si les données que vous utilisez ne sont pas propres/sécurisées!) * –

1

Vous pouvez également envisager d'implémenter ce tableau en une seule chaîne, et en utilisant votre base de données native IN() pour réduire l'exécution d'une seule requête pour chaque ligne individuelle.

$uniqueIDs = array(1111,1222,1333); 
$idString = implode(",",$uniqueIDs); 

$query = "SELECT id, col1, col2 
      FROM tableName 
      WHERE id IN ({$idString})"; 

Cette requête sortira être:

SELECT id, col1, col2 
FROM tableName 
WHERE id IN (1111,1222,1333) 

Sélection de lignes ayant une ID trouvée dans cette liste.

+1

Maintenant, je n'y avais pas pensé! Il est fait sur commande pour le type de chose sur lequel je travaille. Merci beaucoup! – dave

Questions connexes