单个PHP保存页面

时间:2011-04-26 11:15:00

标签: php variables save

希望有人可以提供建议吗?

我有3个.PHP页面编号为

page1.php中 使page2.php page3.php

目前,我必须硬编码三个保存.PHP页面,如下所示:

save1.php save2.php save3.php

我保存到MySQL数据库的当前代码:

$q1 = $_POST["q1"];
$q2 = $_POST["q2"];
$q3 = $_POST["q3"];
$q4 = $_POST["q4"];
$q5 = $_POST["q5"];
$q6 = $_POST["q6"];
$q7 = $_POST["q7"];
$q8 = $_POST["q8"];


$proc = mysqli_prepare($link, "INSERT INTO tresults_bh_main (respondent_id, ip, browser, q1, q2, q3, q4, q5, q6, q7, q8) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
mysqli_stmt_bind_param($proc, "issiiiiiiii", $respondent_id, $ip, $browser, $q1, $q2, $q3, $q4, $q5, $q6, $q7, $q8);

我手动必须更改q1,q2,q3等以匹配第1,2和3页上的q。我想要做的是有一个.PHP保存页面可用于我的所有页面(有道理吗?)。

我无法理解的是如何对.PHP保存页面进行编码,以便它使用变量代替我对其进行硬编码。

我有一个存储以下信息的数组: $ qs ['questions'] - 存储,例如q1,q2,q3,q4等

如果有人可以提供帮助,非常感谢。

荷马。

4 个答案:

答案 0 :(得分:1)

这不是很漂亮,但应该做你想做的事,也许你可以从中得到想法。

$list_variable = '';
$list_values = '';
$str = 'iss';
$array_data = array();

if (isset($_POST)) {
    $array_data[] = &$respondent_id;
    $array_data[] = &$ip;
    $array_data[] = &$browser;

    foreach ($_POST as $k => $v) {
        if (!preg_match('/^q\d+$/', $k))
            continue;

        $str .= 'i';
        $list_variable .= ", $k";
        $list_values .= ", ?";
        $array_data[] = &$_POST[$k];
    }

    if ($list_variable != '') {
        array_unshift($array_data, $str);

        $proc = mysqli_prepare($link, "INSERT INTO tresults_bh_main (respondent_id, ip, browser $list_variable) VALUES (?, ?, ? $list_values);");
        call_user_func_array(array($proc, 'bind_param'), $array_data);
        //$proc->execute();
    }
}

答案 1 :(得分:0)

我建议你将'q'作为隐藏的表单的一部分,这样你就可以在mysql操作页面中收集它并插入它。

详细答案:

使用其他元素,如

<input type='text' name='pageNumber' value='1'>  here value will be 1/2/3 depending on your page number. then create a single save.php page and there collect the variable using 

$ _ POST ['pageNumber'] ...现在希望它清楚。这是我理解你的问题。

答案 2 :(得分:0)

我不确定你理解你的问题,但为什么不从一个循环开始呢?

function DoSomething($respondent_id, $ip, $browser, $count)
{
    settype($count, 'integer');
    if ($count < 1)
    {
        throw new Exception('The $count argument cannot be less than one.');
    }

    $queryVariables = '';
    $queryParams = array('issiiiiiiii', $respondent_id, $ip, $browser);

    $q = array();

    for ($i = 1; $i <= $count; $i++)
    {
        $q[$i] = $_POST['q' . $i];
        $queryVariables .= ', q' . $i;
        $queryParams[] = $q[$i];
    }

    $query = 'insert into tresults_bh_main (respondent_id, ip, browser' . $queryVariables . ') values (' . str_repeat('?, ', $count - 1) . '?);';

    $proc = mysqli_prepare($link, $query);
    execSQL($proc, $queryParams);
}

DoSomething($respondent_id, $ip, $browser, 8);

其中execSQL是从a user contributed note PHP文档中获取的方法。

答案 3 :(得分:0)

您可以使用多维数组作为帖子变量,而不是将POST索引键分开。

所以.....

<input type="text" name="question[page1][q1]" />

通过

阅读

$_POST['page1']['q1']

这比试图拆分钥匙更容易。

如果您需要知道从哪个页面绘制,可以查看:

if (empty($_POST['page1']) {