如何在PHP中获取和存储菜单值

时间:2018-09-19 10:19:14

标签: php mysql

对不起,我英语不好。 below is my form image我的“我的网站”中有一个表格,首先是如何从菜单到文本框获取值,然后使用Php将值存储到数据库中。我已经附加了我的代码和图像。我是Php的初学者。 请帮助我

HTML代码

 <div class="taxi-form-full">
        <div class="container"> 
            <form  method="POST"  action="">
                <div class="menu-types">
                    <a href="#" data-value="Standart" class="type-1 active">Standart</a>
                    <a href="#" data-value="Business" class="type-2">Business</a>
                    <a href="#" data-value="VIP" class="type-3 red">Vip</a>
                    <a href="#" data-value="Bus" class="type-4">Bus-Minivan</a>

                </div>
                <div class="row forms">
                    <div class="col-md-3">
                        <div class="form-group">
                            <input type="text" id="searchTextSrc" name="source" value="" placeholder="From Address..." class="ajaxField"><span class="fa fa-map-marker"></span>
                            <input type="hidden" id="citySrc" name="citySrc" />
                            <input type="hidden" id="cityLatSrc" name="cityLatSrc" />
                            <input type="hidden" id="cityLngSrc" name="cityLngSrc" />
                        </div>
                    </div>

                    <div class="col-md-3">
                        <div class="form-group">
                            <input type="text" id="searchTextDes" name="destination" value="" placeholder="To..." class="ajaxField"><span class="fa fa-map-marker"></span>
                            <input type="hidden" id="cityDes" name="cityDes" />
                            <input type="hidden" id="cityLatDes" name="cityLatDes" />
                            <input type="hidden" id="cityLngDes" name="cityLngDes" />
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="form-group">
                            <input type="text" id="phone" name="phone" value="" placeholder="Phone Number" class="ajaxField required"><span class="fa fa-phone"></span>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="form-group">

                            <input type="text" id="text" name="datetime" value="" placeholder="Date and Time" class="ajaxField js-datetimepicker"><span class="fa fa-calendar"></span>
                        </div>
                    </div>
                </div>
                <input type="submit" name="submit" value="submit" class="btn btn-lg btn-red aligncenter">

            </form>
        </div>
    </div>

Php代码

    <?php
 $hname = 'localhost';
    $uname = 'root';
    $pword ='';
    $dbase ='sample';
$con = mysqli_connect($hname, $uname , $pword ,$dbase );
  if ($con->connect_error) {
            die("Connection failed: " . $con->connect_error);
        }
if(isset($_POST['submit'])){
$phone = $_POST['phone'];
$datetime = $_POST['datetime'];
$query = mysqli_query($con,"insert into test(phone, datetime) values ('$phone', '$datetime')");

}

2 个答案:

答案 0 :(得分:0)

您可以使用无线电字段来代替在导航中使用锚点。 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio

这将向您发送通过$_POST变量选择的适当菜单项。

<label class="type-1">
    <input type="radio" name="menu" value="Standart" checked /> Standart
</label>
<label class="type-2">
    <input type="radio" name="menu" value="Business" /> Business
</label>
<label class="type-3 red">
    <input type="radio" name="menu" value="VIP" /> Vip
</label>
<label class="type-4">
    <input type="radio" name="menu" value="Bus" /> Bus-Minivan
</label>

在PHP中,您将根据所选择的选项接收该值。

<?php
$menu = $_POST['menu'];

您需要更改无线电字段的样式,以匹配锚点的样式。由于输入位于标签内,因此您可以设置标签样式并隐藏输入字段,以保持相同的外观。 Styling radio button

此方法比使用JavaScript捕获点击并将值注入文本字段更具吸引力,因为无论是否使用JavaScript,该方法都可以使用。

答案 1 :(得分:0)

您可以使用AJAX来实现这一目标。在我的示例中,我将使用jQuery AJAX,这将要求您在应用程序中包括jQuery库。我个人使用jQuery的原因是因为它大大简化了JavaScript代码,因此使编写和理解起来更加容易。

现在,在您的问题中,您提到了元素 textbox ,但是我在任何地方都看不到该元素?您是说您的 input 字段,这是完全不同的东西吗?由于我没有看到任何 textbox 元素,因此我假设您的意思是 input 字段。

在直接进入AJAX函数之前,我想解释一些事情。基本上,我们将使用AJAX函数将值解析到另一个页面,该页面将处理我们的数据库逻辑,例如INSERT数据等。

AJAX函数中的关键元素是您在函数中定义的选项

  1. type,这是您要访问的数据的数据类型 解析。例如GETPOST
  2. url,您可以在其中定义要解析数据的页面。
  3. data,您可以在其中定义要解析的数据变量。
  4. 可选地,success,它是一个函数,您可以在其中定义在AJAX函数成功后要执行的某些操作。

AJAX功能:

function submitForm() {
    $.ajax({
        type : "POST",
        url : "/your_page.php",
        data : {
            standart: $("[data-value='Standart']").val(),
            business: $("[data-value='Business']").val(),
            vip: $("[data-value='VIP']").val(),
            bus: $("[data-value='Bus']").val(),
            searchTextSrc: $("#searchTextSrc").val(),
            citySrc: $("#citySrc").val(),
            cityLatSrc: $("#cityLatSrc").val(),
            searchTextDes: $("#searchTextDes").val(),
            cityDes: $("#cityDes").val(),
            cityLatDes: $("#cityLatDes").val(),
            cityLngDes: $("#cityLngDes").val(),
            phone: $("[name='phone']").val(),
            datetime: $("[name='datetime']").val()
        },
        success: function (html) {
            //do something on success
        }
    })
}

请注意,我将AJAX函数封装到另一个名为 submitForm()的函数中。您可以选择在按钮上调用此函数 onclick 来触发AJAX函数。

<button onclick="submitForm();">Submit content</button>

由于您并非完全准确地想要获取 哪些元素值,因此我将它们全部作为目标。我实际上不确定$("[data-value='whatever']")是否是有效的选择器。如果不是,只需给他们提供 id name 属性即可。

现在,由于我在AJAX函数中将type定义为POST,因此您将不得不在PHP文件中使用$_POST来获取从AJAX功能。

在您的PHP页面中:

<?php
$standart = $_POST['standart'];
$business = $_POST['business'];
$vip = $_POST['vip'];
$bus = $_POST['bus'];
$searchTextSrc = $_POST['searchTextSrc'];
$citySrc = $_POST['citySrc'];
$cityLatSrc = $_POST['cityLatSrc'];
$searchTextDes = $_POST['searchTextDes'];
$cityDes = $_POST['cityDes'];
$cityLatDes = $_POST['cityLatDes '];
$cityLngDes = $_POST['cityLngDes '];
$phone = $_POST['phone '];
$datetime = $_POST['datetime '];

/* You now have all your parsed variables as PHP variables
   that you can choose to INSERT into your database. */

$hname = 'localhost';
$uname = 'root';
$pword ='';
$dbase ='sample';
$con = mysqli_connect($hname, $uname , $pword ,$dbase );
if ($con->connect_error) {
    die("Connection failed: " . $con->connect_error);
}

$sql="INSERT INTO test SET phone='$phone', datetime='$datetime'";
mysqli_query($con, $sql);
?>

但是,请注意,您对SQL注入持开放态度,这是@R的原因之一。 Chappell在评论部分删除了this link