我有一个表单,用户可以选择他们想要输入标记的问题数量(不超过10个)。
输入问题数: _ __ _
弹出另一个表单,其中包含用户可以输入标记的所需问题数。
如果输入3:
问题1: _ __ _
问题2: _ __ _
问题3: _ __ _
我有一个名为11行的问题表,其中ID自动递增,如果在该问题中没有输入标记,则其他问题可以为空
| ID | Q1 | Q2 | 。 。 。 | Q10 |
这引出了我的问题,因为用户选择的问题数量可能会有所不同,我如何使用PHP将这些值输入数据库。
答案 0 :(得分:1)
您可以将答案字段的“名称”属性设置为“answer [0]”“answer [1]”,依此类推。然后在PHP中你可以做$ _GET ['answer'],这将返回一个包含你所有答案的数组。
答案 1 :(得分:0)
首先,请确保在问题表和代表页面的主表之间使用多对多表(在我的下方架构中称为“yourPrimaryTable_has_questions”)。
然后循环查看问题,并在多对多表中为每个问题添加一行。如果您在括号中使用带括号但没有值的名称,则在PHP服务器接收数据时它将自动递增。
if (isset($_POST) && $_POST && $_POST['questions'])
{
echo("<form name='xxx'>");
foreach($_POST['questions'] as $question)
{
//Insert record with answer into your many to many table
}
echo("</form>");
}
else
{
for ($i = 1; $i <= $count; $i++) {
echo("Question {i} <input name='question[] type='text' /><br>");
}
}
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`questions`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`questions` (
`id` INT NOT NULL AUTO_INCREMENT ,
`otherData` VARCHAR(45) NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`yourPrimaryTable`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`yourPrimaryTable` (
`id` INT NOT NULL AUTO_INCREMENT ,
`otherData` VARCHAR(45) NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`yourPrimaryTable_has_questions`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`yourPrimaryTable_has_questions` (
`yourPrimaryTable_id` INT NOT NULL ,
`questions_id` INT NOT NULL ,
`answer` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`yourPrimaryTable_id`, `questions_id`) ,
INDEX `fk_yourPrimaryTable_has_questions_questions1_idx` (`questions_id` ASC) ,
INDEX `fk_yourPrimaryTable_has_questions_yourPrimaryTable_idx` (`yourPrimaryTable_id` ASC) ,
CONSTRAINT `fk_yourPrimaryTable_has_questions_yourPrimaryTable`
FOREIGN KEY (`yourPrimaryTable_id` )
REFERENCES `mydb`.`yourPrimaryTable` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_yourPrimaryTable_has_questions_questions1`
FOREIGN KEY (`questions_id` )
REFERENCES `mydb`.`questions` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;