Değişken sonrası değişkenleri aracılığıyla döngü ve veritabanına ekleyerek

2 Cevap php

Ben bir mysql arkaplana sahiptir özel formlar yöneticisi oluşturulması görevi verilmiştir.

Ben şimdi tüm ön uç kurduktan sonra karşılaştığım sorun, dinamik bir formu işlemek için nasıl.

Örn için

Form one could contain 6 fields all with different name attributes in the input tag. Form two could contain 20 fields all with different name attributes in the input tag.

Nasıl kaynak çok fazla yukarı kullanmadan formları işleme olacaktır.

Final Answer

Based on Accepted answer by Arda Xi

function processForm($form_id) {

    $rows = "";
    $values = "";

    foreach($_POST as $key => $value) {

        $rows = mysql_real_escape_string($key);
        $values = mysql_real_escape_string($value);
        $entry .= "[".$rows . "::".$values."]";

    }
    // clean up the array


    $entry = preg_replace('/^\[|\d+|\:\:\]/', '', $entry);

    $query = mysql_query("INSERT INTO `forms_form_data` (`id`, `form_id`, `entry`, `manager_id`, `status`, `created_at`) VALUES (NULL, '".$form_id."', '".$entry."', '".$_SESSION['manager_id']."', '0', NOW())");

} 

2 Cevap

Tam anlamıyla tek yolu bir döngü kullanarak olacaktır. Mümkün olduğunca az kaynak kullanmak istiyorsanız, bunları birleştirmek olabilir.

$columns = "";
$values = "";
foreach($_POST as $key => $value) {
    $columns .= "`" . mysql_real_escape_string($key) . "`, ";
    $values .= "`" . mysql_real_escape_string($value) . "`, ";
}
$columns = substr($columns, 0, -2);
$values = substr($values, 0, -2);
$query = "INSERT INTO `table` (".$colums.") VALUES (".$values.")";

Bu formdaki tüm değerler için bir sorgu oluşturur.

Neden olarak $ _POST tefrika değerini saklamak değil? Tabii ki veritabanı güvenli yapmak için kaçan. Gibi:

$value=serialize($_POST);