Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.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_Php_Html_Mysql - Fatal编程技术网

如何将输入值和选择选项一起发送到php

如何将输入值和选择选项一起发送到php,php,html,mysql,Php,Html,Mysql,我有以下代码。我如何将此表单发送到php,以便在php中可以像studentName course2 year3一样访问它。基本上,我有一个表,看起来像studentName | course | year。我正在寻找正确的方法来组织数据,以便将其插入到我的表中。我尝试过将表单以数组的形式发送但是我必须写3个查询来插入3个输入。有没有办法循环数据并插入 <form id="myform" method="POST"> <label>college:<

我有以下代码。我如何将此表单发送到php,以便在php中可以像
studentName course2 year3
一样访问它。基本上,我有一个表,看起来像
studentName | course | year
。我正在寻找正确的方法来组织数据,以便将其插入到我的表中。我尝试过将表单以数组的形式发送但是我必须写3个查询来插入3个输入。有没有办法循环数据并插入

    <form id="myform" method="POST">
    <label>college:</label><input type="text"  id="clg" name="clg"/><br/>
    <label>Student:-</label><input type="text" name="name[]" id="name" />
    <select name="taskOpen[]">
    <option value="1">course1</option>
    <option value="2">course2</option>
    <option value="3">course3</option>
    <option value="4">course4</option>
    </select>
    <select name="year[]">
    <option value="1">year1</option>
    <option value="2">year2</option>
    <option value="3">year3</option>
    <option value="4">year4</option>
    </select>
 <label>Student:-</label><input type="text" name="name[]" id="name" />
    <select name="taskOpen[]">
    <option value="1">course1</option>
    <option value="2">course2</option>
    <option value="3">course3</option>
    <option value="4">course4</option>
    </select>
    <select name="year[]">
    <option value="1">year1</option>
    <option value="2">year2</option>
    <option value="3">year3</option>
    <option value="4">year4</option>
    </select>
    <input type="button" value="search"  id="btn"/>
    </form>

这是我认为你想要的

HTML

    <!-- THE NAMES OF INPUT ELEMENTS WRAPPED IN A college_data-->
    <form id="myform" method="POST">
        <label>college:</label><input type="text" id="clg" name="college_data[clg]"/><br/>
        <label>Student:-</label><input type="text" name="college_data[name]" id="name"/>
        <select name="college_data[taskOpen1]">
            <option value="1">course1</option>
            <option value="2">course2</option>
            <option value="3">course3</option>
            <option value="4">course4</option>
        </select>

        <select name="college_data[year1]">
            <option value="1">year1</option>
            <option value="2">year2</option>
            <option value="3">year3</option>
            <option value="4">year4</option>
        </select>

        <label>Student:-</label><input type="text" name="name[]" id="name"/>
        <select name="college_data[taskOpen2]">
            <option value="1">course1</option>
            <option value="2">course2</option>
            <option value="3">course3</option>
            <option value="4">course4</option>
        </select>

        <select name="college_data[year2]">
            <option value="1">year1</option>
            <option value="2">year2</option>
            <option value="3">year3</option>
            <option value="4">year4</option>
        </select>
        <input type="submit" value="search" id="btn"/>
    </form>

学院:
学生:- 课程1 课程2 课程3 课程4 第一年 第二年 第三年 第四年 学生:- 课程1 课程2 课程3 课程4 第一年 第二年 第三年 第四年
PHP

    <?php

        $college        = isset($_POST['college_data']['clg'])          ? htmlspecialchars(trim($_POST['college_data']['clg']))         :null;
        $studentName    = isset($_POST['college_data']['name'])         ? htmlspecialchars(trim($_POST['college_data']['name']))        :null;
        $studentName2   = isset($_POST['college_data']['name2'])        ? htmlspecialchars(trim($_POST['college_data']['name2']))       :null;
        $taskOpen1      = isset($_POST['college_data']['taskOpen1'])    ? htmlspecialchars(trim($_POST['college_data']['taskOpen1']))   :null;
        $taskOpen2      = isset($_POST['college_data']['taskOpen2'])    ? htmlspecialchars(trim($_POST['college_data']['taskOpen2']))   :null;
        $year1          = isset($_POST['college_data']['year1'])        ? htmlspecialchars(trim($_POST['college_data']['year1']))       :null;
        $year2          = isset($_POST['college_data']['year2'])        ? htmlspecialchars(trim($_POST['college_data']['year2']))       :null;


        // TEST::: DELETE EVERYTHING BELOW THIS LINE ONCE YOU ARE DONE CONFIRMING THAT IT IS OK  
        // CLICK THE SUBMIT BUTTON TO SEE THE VALUES REFLECTED HERE AS SOON AS THE FORM GETS SUBMITTED...           
        var_dump($college);
        var_dump($studentName);
        var_dump($studentName2);
        var_dump($taskOpen1);
        var_dump($taskOpen2);
        var_dump($year1);
        var_dump($year2);
    ?>

验证

    <?php

        // FIRST CREATE AN ARRAY TO HOLD MESSAGES TO BE SHOWN TO THE USER
        // SHOULD ANYTHING GO WRONG... & ALSO AN EMPTY ERROR MESSAGE STRING...
        $arrErrorBag  = array();
        $strErrorMsg  = "";

        if(isset($_POST['submit'])) {
            // LET'S ASSUME FOR THE MOMENT YOU HAVE SPECIAL CONSTRAINTS
            // TO BE APPLIED TO EACH FIELD DURING YOUR VALIDATION PROCESS.
            // WE WILL USE SIMPLE REGULAR EXPRESSIONS HERE FOR DEMONSTRATION

            // BUILD VALIDATION REG-EXES FOR THE FIELD:: WE WANT ONLY A MINIMUM OF 10 CHARACTERS FOR STUDENT & COLLEGE
            // AGAIN; YOU CAN GO WILD BUT WE ARE KEEPING IT SIMPLE
            // PLUS, DOING IT LIKE THIS IS JUST SO THAT YOU GET THE DRIFT... ;-)
            $rxColStudent = "#(.){10,}#si";

            // FOR THE SELECTS, WE KNOW THAT THE VALUES ARE NUMBERS
            // WHICH ARE BETWEEN 1 & 4; BUT WE TAKE IT TO "BETWEEN 1 & 9"
            // AND WE INTEND USING ONE REGEX FOR ALL OF THEM SINCE THEY ARE SIMILAR.
            $rxCourseYear = "#\d#";

            // NOW WE HAVE THE REGEXES: THEN WHAT?
            // VALIDATION BEGINS... ;-)


            // TO MAKE IT EASIER ON OURSELVES, WE BUNDLE ALL THE STUDENT, STUDENT1 & COLLEGE FIELDS
            // INTO AN ARRAY & LOOP THROUGH THE ARRAY, BUILDING THE ERRORS ON EACH ITERATION THROUGH THE LOOP.
            // VALIDATE COLLEGE, STUDENT & STUDENT2...
            $arrStringValFields = array(
                "student"   => array("Student Nr. 1",   $studentName),
                "student2"  => array("Student Nr. 2 ",  $studentName2),
                "college"   => array("College",         $college),
            );

            // RUN THE LOOP & KEEP BUILDING THE ERRORS AS YOU VALIDATE THROUGH EACH ITERATION.
            foreach ($arrStringValFields as $fieldName => $arrErrStringVal) {
                if (!preg_match($rxColStudent, $arrErrStringVal[1])) {
                    $arrErrorBag[$fieldName] = $arrErrStringVal[0] . " is expected to have a minimum of 10 Characters. Please, check that you have not missed something.";
                }
            }

            // TO MAKE IT AGAIN EASIER ON OURSELVES, WE BUNDLE ALL OTHER FIELDS THAT HAVE NUMERIC VALUES
            // INTO AN ARRAY & LOOP THROUGH THE ARRAY, BUILDING THE ERRORS ON EACH ITERATION THROUGH THE LOOP.
            $arrNumericFields = array(
                "taskOpen1" => array("Open Task Nr. 1",        $taskOpen1),
                "taskOpen2" => array("Open Task Nr. 2 ",       $taskOpen2),
                "year1"     => array("College Year Section 1", $year1),
                "year2"     => array("College Year Section 2", $year2),
            );

            // RUN THE LOOP & KEEP BUILDING THE ERRORS AS YOU VALIDATE THROUGH EACH ITERATION.
            foreach ($arrNumericFields as $fieldName => $arrErrStringVal) {
                if (!preg_match($rxCourseYear, $arrErrStringVal[1])) {
                    $arrErrorBag[$fieldName] = $arrErrStringVal[0] . " is expected to be a Single Digit & it should. Did you try to *NUKE OUR ASSES OFF*. Please, don't. We are your Brothers ;-)";
                }
            }

            // MAMA MIA!!! SO MUCH FOR A SIMPLE 6-FIELD VALIDATION...
            // HAPPILY ENOUGH; WE ARE THERE... ONLY; NOT JUST YET...

            // CHECK THE ERROR BAG TO SEE IF IT CONTAINS ANYTHING.
            // IF IT DOES; THEN WE HAVE TO FIND A WAY TO DISPLAY THIS TO THE END-USER.
            if (!empty($arrErrorBag)) {
                // TURN THE ERROR BAG ARRAY TO A STRING & ASSIGN IT BACK TO THE ERROR MESSAGE STRING FOR DISPLAY...
                $strErrorMsg = "<span class='has-error'>" . implode("</span><br /><span class='has-error'>", $arrErrorBag);
            }
            else {
                // WE HAVE REACHED THE CLIMAX OF OUR POLICE-WORK...
                // SO WE EITHER STORE THE DATA TO THE DATABASE TABLE OR
                // WE BAKE & CAKE IT FOR CHRISTMAS - YOUR CALL ;-)
            }
        }

    ?>   

从数据库中的表格设计来看,您似乎希望插入一名学生、他们的课程以及他们接受该课程的年份。除非您要验证表单,以便学生数量与课程数量和年数相匹配,以便您可以轻松地根据他们的索引循环和插入,否则我看不出如何轻松完成。
例如:

$_POST = Array(
  'name' = Array ( 'Kelly', 'Tom', 'Jack' ),
  'course' = Array ( 'Course1', 'Course2', 'Course3' ),
  'year' = Array ( '2007', '2008', '2009' ),
);


for ( $i = 0; i < count($_POST['student_name']); i++ ) {
   $sql = sprintf("INSERT INTO test ( student_name, course, year ) VALUES (   %s, %s, %d )", 
      $_POST['student_name'][$i], $_POST['course'][$i], $_POST['year'][$i] 
   );
 $conn->query($sql);
}
$\u POST=数组(
'name'=数组('Kelly','Tom','Jack'),
'课程'=数组('Course1','Course2','Course3'),
'year'=数组('2007'、'2008'、'2009'),
);
对于($i=0;iquery($sql);
}

让我们看看PHP端有什么,我们可以帮助您进行调整。首先将
更改为
,这样您就可以提交表单了。然后用
print\r($\u post)
@PedroLobito分析帖子内容。我正在用ajax发送表单。我可以用php@cmorrissey我已经添加了我的php。@ToniReese当您的插入不正确时,请允许我为您正确使用
准备好的语句而鼓掌
是!做得非常好,通常您会看到过时的代码,并且容易受到SQL注入的影响。如果用户只填写了一个输入怎么办?我是说如果第二个输入是可选的呢?@Toni Reese没问题。。。。它仍然是可选的。。。只要您没有验证这些可选字段,并且没有将html REQUIRED关键字添加到任何字段中。这就是为什么当用户没有填写$college、$year1、$year2等变量时,这些变量都默认为NULL。您可以将空值更改为您希望的任何默认值,甚至可以将它们设置为空字符串,如:“谢谢,我将尝试:-)如果我想验证是否至少选择了一个输入,那么另一个输入是可选的呢?另外,我正在使用jquery ajax将表单发送到php。我使用了var_dump,但它返回null。这是更简单的部分:您已经有了用于验证的数据。。。我将在稍后更新帖子,以反映稍后的验证过程。。。然而,请记住,这里的验证可能是无关的,因为除了大学和学生之外,所有的都是下拉列表。尽管如此,这可能是必要的,因为有人可以打开Web Inspector并向其中一个选项中注入一些SH*@t。我将投票支持您给出的示例。我将尝试实现您的示例,并与您联系:-)
    <!-- WE ADD A SLOT FOR OUR ERROR MESSAGE: JUST BEFORE THE FORM. -->
    <div class="error-slot"><?php echo $strErrorMsg; ?></div>
    <form id="myform" method="POST">
        <label>college:</label><input type="text" id="clg" name="college_data[clg]" value="<?php echo $college; ?>" /><br/>
        <label>Student:-</label><input type="text" name="college_data[name]"  value="<?php echo $studentName; ?>" id="name"/>
        <select name="college_data[taskOpen1]">
            <option value="1" <?php if($taskOpen1=="1"){echo "selected";} ?>>course1</option>
            <option value="2" <?php if($taskOpen1=="2"){echo "selected";} ?>>course2</option>
            <option value="3" <?php if($taskOpen1=="3"){echo "selected";} ?>>course3</option>
            <option value="4" <?php if($taskOpen1=="4"){echo "selected";} ?>>course4</option>
        </select>

        <select name="college_data[year1]">
            <option value="1" <?php if($year1=="1"){echo "selected";} ?>>year1</option>
            <option value="2" <?php if($year1=="2"){echo "selected";} ?>>year2</option>
            <option value="3" <?php if($year1=="3"){echo "selected";} ?>>year3</option>
            <option value="4" <?php if($year1=="4"){echo "selected";} ?>>year4</option>
        </select>

        <label>Student:-</label><input type="text" name="college_data[name2]"  value="<?php echo $studentName2; ?>" id="name"/>
        <select name="college_data[taskOpen2]">
            <option value="1" <?php if($taskOpen2=="1"){echo "selected";} ?>>course1</option>
            <option value="2" <?php if($taskOpen2=="2"){echo "selected";} ?>>course2</option>
            <option value="3" <?php if($taskOpen2=="3"){echo "selected";} ?>>course3</option>
            <option value="4" <?php if($taskOpen2=="4"){echo "selected";} ?>>course4</option>
        </select>

        <select name="college_data[year2]">
            <option value="1" <?php if($year2=="1"){echo "selected";} ?>>year1</option>
            <option value="2" <?php if($year2=="2"){echo "selected";} ?>>year2</option>
            <option value="3" <?php if($year2=="3"){echo "selected";} ?>>year3</option>
            <option value="4" <?php if($year2=="4"){echo "selected";} ?>>year4</option>
        </select>
        <input type="submit" value="search" name="submit" id="btn"/>
    </form>
$_POST = Array(
  'name' = Array ( 'Kelly', 'Tom', 'Jack' ),
  'course' = Array ( 'Course1', 'Course2', 'Course3' ),
  'year' = Array ( '2007', '2008', '2009' ),
);


for ( $i = 0; i < count($_POST['student_name']); i++ ) {
   $sql = sprintf("INSERT INTO test ( student_name, course, year ) VALUES (   %s, %s, %d )", 
      $_POST['student_name'][$i], $_POST['course'][$i], $_POST['year'][$i] 
   );
 $conn->query($sql);
}