如何获得没有HTML标记的<select>的值</select>

时间:2013-08-08 08:59:07

标签: php html

我从未过多考虑过如何在不使用<form>的情况下提交数据。我最初只专注于表单的设计。

现在,我无法在没有POST标记的情况下尝试发送<form>数据。 我正在使用bootstrap框架。

另外,我如何获得要提交的<select>标记中的值。下面是我的HTML和PHP代码。

以下HTML

<div id="box1">
   <input name="fname" type="text" placeholder="name">
</div>

<div id="box2">
   <select id="food" name="food">
       <option value="meat" name="nmeat">   meat  </option>
       <option value="fruit" name="nfruit"> fruit </option>
    </select>
</div>

// ^ Above code is in a JQuery Conditional Statement
// When user select meat, <select id="meat"> will display else fruit


<div id="box3">
   <!--MEAT-->
   <select id="meat" name="topic">
       <option value="hotdog" name="nhotdog">   hotdog     </option>
       <option value="sausage" name="nsausage"> sausage    </option>
    </select>

    <!--FRUIT-->
    <select id="fruit" name="topic">
       <option value="apple" name="napple">   apple   </option>
       <option value="grapes" name="ngrapes"> grapes  </option>
    </select>

 </div>

<div id="box4">
   <textarea name="desc" rows="5" class="span11" placeholder="Description"></textarea>
   <button name="submit" class="btn btn-large btn-block btn-primary" type="button">Submit</button>

</div>

以下PHP 我很难在PHP中使用正确的语法,特别是如果提交的值不在<form>

<?php
    if ( isset( $_POST['submit'] ) ) {
        $name = $_POST["fname"];   //box1
        $gender =$_POST["gender"]; //box2
        $topic =$_POST["topic"];   //box3
        $desc =$_POST["desc"];     //box4
        //echo $msg;
        $sql = "insert into z_form (name) values ('".$msg."')";
        mysql_query( $sql );
    } else {
        echo "error";
    }
 ?>

6 个答案:

答案 0 :(得分:3)

真的,只需使用<form>标签即可。 POST方法需要<form>标记。我没有看到任何有效理由从表单中排除<form代码。

  

现在,我无法在没有标记的情况下尝试发送POST数据。我使用bootstrap框架。

Bootstrap并不限制您使用<form>标记。 :)

将您的表单包裹在<form标记中,如下所示:

<form action="somefile.php" method="post" name="myForm">

<!-- your form code here -->

</form>

此外,更改您的按钮:

<button name="submit" class="btn btn-large btn-block btn-primary" type="button">Submit</button>

为:

<input type="submit" name="submit" value="Submit" class="btn btn-large btn-block btn-primary"/>

最后,在您的PHP代码中,您正在做:

$gender =$_POST["gender"];

但是没有名称属性为gender的输入字段。您应该创建一个具有该名称的输入字段,或者从脚本中删除该定义。

那应该解决问题。干杯!

答案 1 :(得分:0)

为什么不使用<form>?所有其他方法都包括将jquery与ajax结合使用,或者仅使用ajax来发送值。但是没有理由不使用<form>标记。

答案 2 :(得分:0)

首先,您需要包含表单标记:

<form action="process.php" method="post">
    //form content
</form>

更改提交按钮。将名称更改为“提交”以外的其他内容以避免命名空间冲突也很好:

<input type="submit" name="sub" class="btn btn-large btn-block btn-primary" value ="Submit" />

另外,请选择不同的名称(您有两个名称为“topic”):

<select id="meat" name="meat">
   <option value="hotdog" name="nhotdog">   hotdog     </option>
   <option value="sausage" name="nsausage"> sausage    </option>
</select>

然后从$_POST

中检索这些值
$meat = $_POST['meat'];

答案 3 :(得分:0)

#box3中,您有2个具有相同名称的选项。

尝试类似:

<select id="meat" name="meatSelect">
<select id="fruit" name="fruitSelect">

然后:

$meatSelect = $_POST['meatSelect'];
$fruitSelect = $_POST['fruitSelect'];

答案 4 :(得分:0)

如果您只想使用提交按钮提交数据,我一直认为您必须使用-tag。 另一种方法是使用一个按钮并使用javascript / jquery从字段中读取数据,并通过带有url的get-parameters提交它们。 然而,似乎你想要经典/简单的方式。所以你需要并定义方法和动作。

另外一点提示:尝试使用带有mvc-(模型视图控制器)模式的php框架。当您以正确的方式使用它时,它使您更容易处理代码,带来预定义的函数/类,并使您的函数更安全。这种框架的一个例子是codeigniter,但还有更多......

答案 5 :(得分:0)

请参阅以下代码:

 <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
 <script type="text/javascript">
 $(document).ready(function()
 {
 $(button).click(function() {
var name=$("#name").val();
 var frt=$("#fruit").val();
var gender = $("#gender").val();
var topic= $("#topic").val();
var descr= $("#description").val();
 var dataString = 'name='+name+'fruit='+ frt+'gender='+gender+'topic='+topic+'desc='+descr;

$.ajax
({
type: "POST",
 url: "ajax.php",
data: dataString,
  cache: false,
success: function(html)
{
$("#success").html(html);
} 
});

 });
});
</script>

您应该在所有下拉字段中添加ID。 还添加了要查看显示成功或错误结果的内容

<div id="success"></div>