2010-11-19 19 views
0

Ich habe ein Formular mit ein paar Textbereichen und dann etwa 20 Eingabefelder.

Die Eingabefelder werden dynamisch erstellt, mit einer Schleife und werden von den Werten in meiner db (Länder) erstellt

Mein Code ist:

$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'] . '" />'; 

      } 

Dies gibt Beispiele wie:

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" /> 

Jetzt ist mein Problem, wie bekomme ich die Werte dieser Eingabefelder?

Ich habe bei der Ausgabe von $ _POST geschaut, aber dies scheint Daten zurückzugeben, auf die ich nicht wirklich zugreifen kann.

Können diese Werte in irgendeiner Weise abgerufen werden?

Oder muss ich die Art, wie ich Dinge mache, ändern?

Dank

+1

Es sieht als ob du doppelte HTML-IDs ausgibst - mach das nicht. – Skilldrick

Antwort

0

wie oben gesagt, tun Sie

name="country_id" 

wahrscheinlich wie 70+ mal so gut haben. Das wird ein Problem sein.

Sie tun können:

name="country_id[]" 

und ein Array in PHP erhalten, nachdem es eingeschickt wird.

Sind Sie auch sicher, dass Sie POST sind? Scheint nicht, wenn $ _POST leer ..

1

Ihr 'name' der Felder wie folgt ändern:

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

dann können Sie gehen:

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

Das scheint zu funktionieren. Ich muss es nur in eine Schleife stecken, um alles in meine db-Tabellen zu bekommen. Vielen Dank! – terrid25

0

$_POST[68] und $_POST[28] die Werte zurückgeben Sie benötigen. Sie sollten stattdessen die Alpha-Tasten (country_code) verwenden. Wenn sich aus irgendeinem Grund die numerischen IDs in Ihrer Datenbank ändern, werden Sie Probleme bei der Pflege Ihres Codes haben. In HTML müssen Sie außerdem eindeutige Element-IDs verwenden, damit ein Dokument gültig ist.

0

Ihre beste Lösung wäre ein Array mit dem HTML zu erstellen, so will es im Format Sie postet ... für ein Beispiel zu diesem Beitrag beziehen: PHP: help with array structure

Verwandte Themen