2010-11-19 5 views
0

J'ai un formulaire avec deux zones de texte et environ 20 zones de saisie.

Les champs d'entrée sont créées dynamiquement, en utilisant une boucle et sont créées à partir des valeurs dans ma db (pays)

Mon code est:

$options = ''; 
$country_code = ''; 
$query = $DB->query("SELECT country_code, country_id, IF(country_code = ".$country_code."', '', '') AS sel FROM exp_sme_countries WHERE site_id='".$this->settings['site_id']."' ORDER BY country_name ASC"); 
      foreach ($query->result as $row) 
      { 
      $options .= '<label>' . 'Phrase for ' . $this->settings['countries'][$row['country_code']] . '</label>' . '<br />'; 
          $options .= '<input style="width: 100%; height: 5%;" id="country_data" type="text" name="' . $row['country_id'] . '" />' . '<br /><br />'; 
          $options .= '<input type="hidden" name="country_id" id="country_id" value="' . $row['country_id'] . '" />'; 

      } 

Ceci produit des exemples tels que:

input style="width: 100%; height: 5%;" id="country_data" type="text" name="68" /> 
input style="width: 100%; height: 5%;" id="country_data" type="text" name="28" /> 

Maintenant, mon problème est, comment puis-je obtenir les valeurs de ces champs de saisie?

J'ai regardé la sortie de $ _POST, mais cela semble retourner des données auxquelles je n'ai pas vraiment accès.

Peut-on accéder à ces valeurs de quelque façon que ce soit? Ou dois-je changer la façon dont je fais les choses?

Merci

+1

Il semble comme si vous produisiez des ID html en double - ne faites pas ça. – Skilldrick

Répondre

0

comme dit plus haut, vous avez

name="country_id" 

probablement comme 70+ fois aussi. Ça va être un problème.

Vous pouvez faire:

name="country_id[]" 

et obtenir un tableau en PHP après se POSTé.

Etes-vous sûr que vous POSTez? Semble pas si $ _POST est vide ..

1

changer votre 'nom' des champs comme suit:

name="p_' . $row['country_id'] . '" 

alors vous pouvez aller:

foreach ($_POST as $key => $value) { 
     if (substr($key, 0, 2) == "p_") { 
      $country_id[str_replace("p_", "", $key)] = $value; 
     } 
    } 
+0

Cela semble fonctionner. J'ai juste besoin de le brancher dans une boucle pour tout mettre dans mes tables db. Merci! – terrid25

0

$_POST[68] et $_POST[28] retourne les valeurs dont vous avez besoin. Vous devez utiliser les touches alpha (country_code) à la place. Si, pour une raison quelconque, les ID numériques de votre base de données changent, vous rencontrerez des problèmes pour conserver votre code. HTML nécessite également que vous utilisiez des ID d'élément uniques pour qu'un document soit valide.

0

Votre meilleure solution serait de créer un tableau avec le code HTML de sorte qu'il publie dans le format que vous voulez ... se référer à ce poste pour un exemple: PHP: help with array structure

Questions connexes