【问题标题】:PHP dynamic list pick values in next page下一页中的PHP动态列表选择值
【发布时间】:2013-05-15 17:52:18
【问题描述】:

我正在尝试将 php 生成的选项列表中的值插入 mysql 数据库。我在“通知错误”中遇到的错误。错误显示:

注意:未定义的索引:fixture_id in C:\xampp\htdocs\project\insert.php 第 177 行

注意:未定义索引:守门员在 C:\xampp\htdocs\project\insert.php 在第 178 行

注意:未定义索引:defender in C:\xampp\htdocs\project\insert.php 第 179 行

注意:未定义索引:fullback in C:\xampp\htdocs\project\insert.php 第 180 行

注意:未定义索引:中场 C:\xampp\htdocs\project\insert.php 在第 181 行

注意:未定义索引:C:\xampp\htdocs\project\insert.php on 第 182 行

注意:未定义索引:前锋在 C:\xampp\htdocs\project\insert.php 在第 183 行

我的代码如下。我是一名中级开发人员,正在开发团队管理系统。

 elseif(isset($_GET['selection_id'])){ // check if form is submitted
   echo "<table><form name=\"insertSelectionForm\" action=\"". $_SERVER['PHP_SELF']."\" method=\"post\">";
    echo"<tr bgcolor=\"#ccc\"><td colspan=\"2\">Add selection</td></tr>";
    echo"<tr><td>Fixture Id</td><td><select name=\"fixtures[]\">";

    $sql = "SELECT fixture_id FROM `fixtures` ";
    $data = mysql_query($sql);
            while($rows = mysql_fetch_array($data)){
                echo "<option name=\"fixture_id\" value={$rows['fixture_id']} >";
                echo $rows['fixture_id'];
                echo "</option>\n";
            }

    echo "</select>\n";
    echo "</td></tr>";
    echo"<tr><td>Goalkeeper</td><td><select>";
    $sql = "SELECT name FROM `player` ";
    $data = mysql_query($sql);
            while($rows = mysql_fetch_array($data)){
                echo "<option name=\"goalkeeper\" value={$rows['name']}>";
                echo $rows['name'];
                echo "</option>";
            }

    echo "</select>";
    echo "</td></tr>";
    echo"<tr><td>Defender</td><td><select>";

    $sql = "SELECT name FROM `player` ";
    $data = mysql_query($sql);
            while($rows = mysql_fetch_array($data)){
                echo "<option name=\"defender\" value={$rows['name']}>";
                echo $rows['name'];
                echo "</option>";
            }

    echo "</select>";
    echo "</td></tr>";
    echo "<tr><td>Fullback</td><td><select>";

    $sql = "SELECT name FROM `player` ";
    $data = mysql_query($sql);
            while($rows = mysql_fetch_array($data)){
                echo "<option name=\"fullback\" value={$rows['name']}>";
                echo $rows['name'];
                echo "</option>";
            }

    echo "</select>";
    echo "</td></tr>";
    echo"<tr><td>Midfielder</td><td><select>";

    $sql = "SELECT name FROM `player` ";
    $data = mysql_query($sql);
            while($rows = mysql_fetch_array($data)){
                echo "<option name=\"midfielder\" value={$rows['name']}>";
                echo $rows['name'];
                echo "</option>";
            }

    echo "</select>";
    echo "</td></tr>";
    echo"<tr><td>Wing</td><td><select>";

    $sql = "SELECT name FROM `player` ";
    $data = mysql_query($sql);
            while($rows = mysql_fetch_array($data)){
                echo "<option name=\"wing\" value={$rows['name']}>";
                echo $rows['name'];
                echo "</option>";
            }

    echo "</select>";
    echo "</td></tr>";
    echo"<tr><td>Striker</td><td><select>";


    $sql = "SELECT name FROM `player` ";
    $data = mysql_query($sql);
            while($rows = mysql_fetch_array($data)){
                echo "<option name=\"striker\" value={$rows['name']}>";
                echo $rows['name'];
                echo "</option>";
            }

    echo "</select>";
    echo "</td></tr>";
    echo"<tr><td></td><td><input type=\"submit\" value=\"Add Selection\" name=\"selection\"></td></tr>";
    echo "</table></form>";
}


elseif(isset($_POST['selection'])){
            //collect variables posted by form.
            $fixture_id = mysql_real_escape_string($_POST['fixture_id']);
            $goalkeeper = mysql_real_escape_string($_POST['goalkeeper']);
            $defender = mysql_real_escape_string($_POST['defender']);
            $fullback = mysql_real_escape_string($_POST['fullback']);
            $midfielder = mysql_real_escape_string($_POST['midfielder']);
            $wing = mysql_real_escape_string($_POST['wing']);
            $striker = mysql_real_escape_string($_POST['striker']);

            $sql = "SELECT * FROM fixtures WHERE fixture_id = '$fixture_id'";
            $data = mysql_query($sql);
            while($rows = mysql_fetch_array($data)){
            $opponents = $rows['opponents'];    
        }



    //validate form by checking for empty strings that user might have submitted using strlen() php built-in method. If no empty string form processes
         if(strlen($fixture_id)>0 && strlen($goalkeeper)>0 && strlen($defender)>0 && strlen($fullback)>0 && strlen($midfielder)>0 && strlen($wing)>0 && strlen($striker)>0 ){ // if form fields are not empty, insert in database
                $sql = "INSERT into `selections` (fixture_id, opponents, goalkeeper,defender,fullback,midfielder,wing,striker) VALUES('$fixture_id','$opponents', '$goalkeeper','$defender','$fullback','$midfielder','$wing','$striker')";
                $query = mysql_query($sql) or die("Error. ". mysql_error()) ;
                echo "Selection added <br/><br/>";
                echo " <a href=\"team_selections.php\">Go back to team selections page </a>";
            }

        }

【问题讨论】:

  • notice!=error 代码还在工作吗?
  • Notice: Undefined index 表示您正在尝试使用数组键,即。 $_POST['striker'],不存在或尚未设置。
  • 否,代码未插入表单中。我动态构建列表的原因是因为我不希望用户输入教练尚未加载的球员的值。代码甚至没有插入任何东西

标签: php mysql list dynamic insert


【解决方案1】:

您错误地解释了&lt;select&gt; 中的name 属性。您必须提供名称属性,例如

&lt;select name=\"fixture_id\"&gt; 而不是&lt;option name="fixture_id"&gt;

所以从&lt;option&gt; 中删除name 属性(从&lt;option&gt; 中删除)并在&lt;select&gt; 中指定它

【讨论】:

  • 可爱。同时工作。感谢上帝保佑。错误正是您指出的地方。花了最后 2 个小时更改代码,却不知道错误在那里。上帝祝福你。查尔斯南非 :)
  • 很好的解决了你的问题。如果它已解决,那么您可以标记为已解决
【解决方案2】:

您设置name 属性来选择元素选项。但是要将数据发送到脚本,您必须为&lt;select&gt; 标签设置名称,而不是&lt;option&gt;。选项必须只有值属性。

【讨论】:

    【解决方案3】:

    @NullVoid 和@Eugene 确定了最大的问题,但您的&lt;form&gt; 也是无效的,因为它不能是&lt;table&gt; 的孩子

    echo "<table><form name=\"insertSelectionForm\" action=\"". $_SERVER['PHP_SELF']."\" method=\"post\">";
          ^^^     ^^^^
    

    &lt;form&gt; 标签需要围绕表格 - &lt;form&gt;&lt;table&gt;...&lt;/table&gt;&lt;/form&gt; 或驻留在单元格内 - &lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;form&gt;...&lt;/form&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

    尝试切换到 -

    echo "<form name=\"insertSelectionForm\" action=\"". $_SERVER['PHP_SELF']."\" method=\"post\"><table>";
    

    【讨论】:

    • 也感谢这一点。 Nullvoid 的解决方案奏效了。我也会注意表格问题,以便我符合正确的标准
    • +1 表示关于&lt;form&gt; 的建议应该在&lt;table&gt; 之外以符合标准和正确的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多