Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 以动态生成的形式使用数组中的id_Php_Mysql_Forms - Fatal编程技术网

Php 以动态生成的形式使用数组中的id

Php 以动态生成的形式使用数组中的id,php,mysql,forms,Php,Mysql,Forms,我试图从数据库中动态生成一个表单,这样我就可以简单地登录并进行更改,以及跟踪投票。表单生成得很好,但我一辈子都搞不清楚如何从数组中获取id,以便与数据一起发布。唯一成功的尝试是将最后一个设置为他们所有的topic_id,因为我试图在while语句中定义它 <?php $cat_set = fetch_categories(); if (!isset($business_name)) { $business_name = ''; } while($categorie

我试图从数据库中动态生成一个表单,这样我就可以简单地登录并进行更改,以及跟踪投票。表单生成得很好,但我一辈子都搞不清楚如何从数组中获取id,以便与数据一起发布。唯一成功的尝试是将最后一个设置为他们所有的topic_id,因为我试图在while语句中定义它

  <?php  $cat_set = fetch_categories();

  if (!isset($business_name)) {
  $business_name = ''; }

    while($categories = mysqli_fetch_assoc($cat_set)) {
                echo '<div class="category">'. "<h3>" . "Best of the Best"      
   .' ' . ucfirst($categories["cat_name"]) . ' ' . "</h3>";

                $topic_set = get_topics_for_cat($categories["cat_id"]);
                    while($topics = mysqli_fetch_assoc($topic_set)) {
                        $topic_name = $topics["topic_name"];
                    echo '<div class="field">' . '<label for=' . 
  $topics['topic_id'] . '">' . ucfirst($topic_name) . ":" . '</label>';
                        echo '<input type="text"' . 'id="' . 
  $topics['topic_id'] . '"' . 'name="'
                        . $topics["topic_id"] . '"' . 'value="' . 
  $business_name . '"></div>';
                    }
                    echo "</div>";
    }
    ?>

<input type="submit" value="Submit" id="submit" name="submitform"></form>
</div>
<pre>
<?php
$user_id = 3000;
if (isset($_POST['submitform'])) {
    print_r($_POST);

foreach ($_POST as $business_name) {
    $filtered_business_name = mysqli_real_escape_string($dbc,  
$business_name);
    $query = "INSERT INTO votes (";
    $query .=" business_name, topic_id, user_id";
    $query .= ") VALUES (";
    $query .=" '$filtered_business_name', '$topics['topic_id']',   
'$user_id'";
    $query .=")";

    $votes = mysqli_query($dbc,$query);


将变量用花括号括起来:

$query.=“$filtered_business_name',”{$topics['topic_id']}','$user_id'

执行以下操作:

if (isset($_POST['submitform'])) {

foreach($_POST as $key=>$value) {
    $filtered_business_name = mysqli_real_escape_string($dbc, $value);
    $query = "INSERT INTO votes (";
    $query .=" business_name, topic_id, user_id";
    $query .= ") VALUES (";
    $query .=" '$filtered_business_name', '$key', '$user_id'";
    $query .=")";

    $votes = mysqli_query($dbc,$query);
    confirm_query($votes);

}
}

我一定是用错了。我做了太多的编辑和事情,我自己的东西没有意义,所以我倒了一堆,尝试了key=>value的东西。。。它马上就起作用了。现在的查询是:


感谢大家的帮助,希望这将有助于将来处理糟糕的表单构建。

这没有任何作用。请在执行前打印查询,看看它是否正确。还要检查以确保插入的数据类型与表列的类型匹配。您已将
$topics['topic\u id']
$user\u id
用单引号括起来,表示字符串类型的数据。这是故意的还是应该是整数?$query.=“$filtered_business_name”、“{$topics['topic_id']}”、“$user_id'”;返回INSERT INTO VOLUES(业务名称、主题id、用户id)值('a'、''3000')数据库查询失败。它们都是整数,插入时会不会变戏法?我不明白为什么它不起作用。我需要它从主题表中获取主题,并在表中用投票引用它们各自的主题id…使用type='checkbox'和set value=$topics['topic\u id'],这样你的状态会更好哦,我明白你的意思。嗯,不,这是当地报纸每年举办的一次比赛,我需要它更容易管理,这样每个用户都可以从用户表中获得他们的id,一旦设置好,他们就可以访问此表单,每个主题都有一个主题id,不显示给用户,但用于参考他们投票的主题。从Topic_集合中,它是$topics[“Topic_id”],我只需要将它写入查询中,这样我就可以知道他们在投票什么。因为他们可以多次投票,所以不需要一个唯一的id或任何东西。我曾考虑过使用单选按钮,克里斯,但是,回顾过去几年,事实上他们投票的企业有数百家。我开始构建businesss表,并意识到这是不可行的。作为一个文本框,他们将能够更改值。我不认为这是你想要的。但是它在循环之外,所以所有主题的值最终都是$topic_id的最后一个值。我第一次打破它时就尝试过了。哇,现在我明白了。很抱歉。
if (isset($_POST['submitform'])) {

foreach($_POST as $key=>$value) {
    $filtered_business_name = mysqli_real_escape_string($dbc, $value);
    $query = "INSERT INTO votes (";
    $query .=" business_name, topic_id, user_id";
    $query .= ") VALUES (";
    $query .=" '$filtered_business_name', '$key', '$user_id'";
    $query .=")";

    $votes = mysqli_query($dbc,$query);
    confirm_query($votes);

}
}