【问题标题】:Several drop down list input to one field table [closed]几个下拉列表输入到一个字段表[关闭]
【发布时间】:2013-06-11 02:57:11
【问题描述】:

任何人都可以帮我解决这个代码,我有几个下拉列表,我想插入到表格中。但我只需要将它插入一个字段,任何人都有一个绝妙的主意:)

这是下拉列表的示例。

<select name="level1" style="width:225px;">
<option value=0 selected></option>
<?php
include 'connect.php';
$q  = "SELECT attribute_id,attribute_name FROM attribute ";
$result = $db->query($q);
while ($row1 = $result->fetch()){
  echo "<option value='$row1[attribute_name]'>$row1[attribute_name]</option>";
}
?>
</select>


<select name="level1" style="width:225px;">
<option value=0 selected></option>
<?php
include 'connect.php';
$q  = "SELECT attribute_id,attribute_name FROM attribute ";
$result = $db->query($q);
while ($row1 = $result->fetch()){
  echo "<option value='$row1[attribute_name]'>$row1[attribute_name]</option>";
}
?>
</select><br>

<select name="level1" style="width:225px;">
<option value=0 selected></option>
<?php
include 'connect.php';
$q  = "SELECT attribute_id,attribute_name FROM attribute ";
$result = $db->query($q);
while ($row1 = $result->fetch()){
  echo "<option value='$row1[attribute_name]'>$row1[attribute_name]</option>";
}
?>
</select>

【问题讨论】:

  • 你的问题不是很清楚。您的代码根本不进行任何插入。它所做的只是将同一个下拉列表回显 3 次。
  • 这就是为什么,我不知道如何将下拉列表中的所有值插入数据库。因为我需要将其全部捕获到数据库中的一个字段中
  • 您要插入哪个表,如何将多个输入组合成一列?
  • 请用更多细节编辑您的问题,不要在 cmets 中这样做。
  • 表格是 ID, level1, level2, level3, level 4。所以问题是我有表格 11 在 1 级下拉,11 在 2 级下拉,所以另一个 3 级和4、你建议我怎么插入?

标签: php javascript html arrays


【解决方案1】:

首先,您选择的每个级别都需要一个不同的名称 和一个要进入的表格,还有一个提交按钮...... 就这样……

<form method="post" action="process.php">
 <select name="level1[]">
  <!--Your database options lists-->
 </select>
 <select name="level1[]">
  <!--Your database options lists-->
 </select>
 <select name="level1[]">
  <!--Your database options lists-->
 </select>     
 <input type="submit" value="SUBMIT"/>
</form>

然后,当您选择所有三个并点击提交时,它会转到 process.php 这是哪个文件...

<?php

  $levels = implode(",", $_POST['level1']);

  //Now you have a string called $levels
  // Which contains a comma seperated list, to insert into db / one field

  //Insert into your table...change your table and field names to real values...

  $sql = "INSERT INTO yourTable (attributes) VALUES (:attributes)";
  $q = $db->prepare($sql);
  $q->execute(array(':attributes'=>$levels));
  ?>

这将处理表单...

注意 $levels 变量...这是要传递到数据库的字符串,由您的选择框构建。

您可以通过两种方式构建它...

字符串连接。 像这样……

$levels = $_POST['level1'][0].",".$_POST['level1'][1].",".$_POST['level1'][2];

或者构建一个数组并内爆,以逗号分隔的列表.. 像这样……

$levels = implode(",", $_POST['level1']);

无论哪种方式...您最终都会以逗号分隔的字符串输入您的数据库...

欢迎您:)

【讨论】:

  • 哇..谢谢,那是我一直在寻找的:) 谢谢,我还有一个问题,如果我所有的名字都相同,是否有可能?好像所有的名字都只有一级?
  • 没有你的选择需要是不同的名称,因为它们将存储不同的值,但将它们进入的列命名为 level1 并没有什么坏处,只需将你的选择命名为 level1-a level1- b level1-c 或类似的东西
  • 我明白了,谢谢你的帮助。真的很感激。所以我还需要将数组字符串添加到名称中吗?比如 name="level1[]"
  • 实际上是我的最后一条评论,是的,您可以将它们全部命名为 level1....就像您在上面显示的那样...... 然后在您的 PHP 文件中,只需内爆该数组 $_POST['test']....以获取字符串...我将编辑上面的代码以反映....如果您支持我:)
  • 代码很好,反映了我们刚刚谈到的变化:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多