2013-06-25 1 views
0

Je m'excuse d'avance si j'utilise la mauvaise définition d'un mot ... J'utilise SimpleCart pour passer des variables $ .Post à une page PHP. Si j'imprime le tableau je reçoisUtiliser array pour MySQL Select Statement

Array ([devise] => CAD [frais de livraison] => 0 [taxes] => 1.69 [taxRate] => 0.13 [itemCount] => 3 [item_name_1] => Assiette plate [item_quantity_1] => 1 [item_price_1] => 5 [item_options_1] => code: 110 [item_name_2] => Plaque latérale [item_quantity_2] => 1 [item_price_2] => 4 [item_options_2] => code: 125 [item_name_3] => Jatte [item_quantity_3] => 1 [item_price_3] => 4 [item_options_3] => Code: 66)

Ce que je me bats avec (et va en rond) est une méthode pour faire ce qui suit ..

Éclatez la variable [item_options] pour supprimer la partie CODE de la valeur et laissez simplement la section numérique.

concatène ces valeurs dans une chaîne afin que je puisse utiliser une instruction SELECT pour extraire uniquement les enregistrements ayant un ID transmis dans [item.options].

Je comprends comment exploser un seul paramètre, mais je n'arrive pas à comprendre comment faire une boucle dans la matrice, exploser la clé et créer la valeur dont j'ai besoin pour le SQL.

Toute aide ou des pointeurs vers des tutoriels pertinents seraient appréciés

Répondre

0
$codes = array(); 
foreach ($_POST as $key => $value) { // Loop through the $_POST array 
    if (preg_match('/^item_options_/', $key)) { // And validate the value 
    $item_arr = explode(' ', $value); 
    $item_id = $item_arr[1]; // Get the ID number from the value 
    if (is_numeric($item_id)) { // Validate it 
     $codes[] = $item_id; // Add it to the array we're building 
    } 
    } 
} 
$codes_string = implode(', ', $codes); // Concatenate them into a string that can be used in a SQL IN clause 

$sql = "SELECT * from table WHERE id IN ($codes_string)"; // Build the SQL 
+0

Merci !, Barmar, mais il semble y avoir une erreur de syntaxe sur cette ligne? $ item_id = explode ('', $ value) [1]; // Récupère le numéro d'identification de la valeur – user2480507

+0

. Vous ne pouvez pas appliquer d'indice à un appel de fonction. – Barmar

+0

Merci d'avoir pris le temps d'aider un inconnu, j'apprécie vraiment – user2480507