2011-02-05 5 views
1

MYSQLからのomの抽出に基づいてPHPで$ _POST行を動的に作成するにはどうしたらいいですか?

私のテーブルはフラットです。これは、1つの列(フィールド)にすべてのフィールド名と別の列(テキスト)にすべてのフィールドテキストがあることを意味します。

私はこのコードを使用しようとしています:

require($_SERVER["DOCUMENT_ROOT"]."/NR/func/mysql-funktioner.php"); 
$site = trim ((!empty($_POST['site'])) ? $_POST['site'] : $_GET['site']); 

function update($text,$field,$site) { 
    $sql = "UPDATE nr_site SET text = $text WHERE field = $field AND site = $site LIMIT 1"; 
    aabn_forbindelse_og_vaelgdb(); 
    sql_spoerg($sql); 
    luk_forbindelse(); 
} 

$sql_site = "SELECT field 
      FROM nr_site 
      WHERE site ='".$site."'"; 

aabn_forbindelse_og_vaelgdb(); 
$resultat_site = sql_spoerg_og_faa_svar($sql_site); 
luk_forbindelse(); 
for($i=0;$i<count($resultat_site);$i++) { 
    extract($resultat_site[$i]); 
    $HTTP_VARS = 'trim((!empty($_POST[\''.$field.'\']))?$_POST[\''.$field.'\']:$_GET[\''.$field.'\'])'; 
    $text = eval($HTTP_VARS); 

    //update($text,$field,$site); 
    echo $text; 
} 

をしかし、それは私の代わりに、フォームから渡された値の

Parse error: syntax error, unexpected $end in /customers/kalna.dk/kalna.dk/httpd.www/NR/func/save.php(29) : eval()'d code on line 1 

を与えます。 私は手動でのようにフィールド名を記述する場合は問題ありません:

$HTTP_VARS = trim ((!empty($_POST['feature_heading'])) ? $_POST['feature_heading'] : $_GET['feature_heading']); 

$テキスト= $ HTTP_VARS。

アドバイスがありますか?

答えて

1

変数を配列インデックスとして使用できます。

echo $_POST[$field]; 
+0

うわー、それはとても簡単でした!感謝Ignacio –

+0

また、 '$ _REQUEST [$ field]'と 'variables_order' /' request_order'です。 –

0

$fieldeval()でダウン下のどこから来るのでしょうか? $field = extract($resultat_site[$i]);である必要がありますか?ああ、わかりました、抽出は自動的に配列キーから変数を作成し、以前はその関数を使用しませんでした。あなたのコードにevalが必要ですか?

$HTTP_VARS = trim ((!empty($_POST[$field]))?$_POST[$field]:$_GET[$field]); 
$text = $HTTP_VARS; 
+0

@Ignacioの答えに基づいて、コードをちょうど '$ HTTP_VARS = trim(($ _ POST [$ field]))?$ _POST [$ field]:$ _GET [$ field] ); $ text = $ HTTP_VARS; アップデート(htmlspecialchars(addslashes($ text))、$ field、$ site); なぜか分かりませんが、実際よりもずっと複雑なアイデアがありました。 ありがとうございます。 –

関連する問題