单选按钮的PHP更新

单选按钮的PHP更新,php,forms,jquery-mobile,input,pdo,Php,Forms,Jquery Mobile,Input,Pdo,当我按submit时,单选按钮(性别和级别)显示“未定义”。我正在使用jQuery移动框架。其他具有type=text的字段工作正常。如何在后端为这些单选按钮插入值?我是否需要在PHP中显式设置该值?(即,如果$_POST['gender']=='male') 不知何故,$\u POST['gender']和$\u POST['level']没有定义变量。只有当只有一个单选按钮时,它才能工作。 <form action="save.php" method="post">

当我按submit时,单选按钮(性别和级别)显示“未定义”。我正在使用jQuery移动框架。其他具有
type=text
的字段工作正常。如何在后端为这些单选按钮插入值?我是否需要在PHP中显式设置该值?(即,
如果$_POST['gender']=='male'

不知何故,$\u POST['gender']和$\u POST['level']没有定义变量。只有当只有一个单选按钮时,它才能工作。

 <form action="save.php" method="post">
        <label for="name">Name </label>
        <input id="name" type="text" name="name"/>

        <label for="city">City </label>
        <input id="city" type="text" name="city"/>

        <label for="lang_know">Language </label>
        <input id="lang_know" type="text" name="language"/>

        <div data-role="fieldcontain">
            <label for="lang_level">Level</label>
            <fieldset id="lang_level" data-role="controlgroup" data-type="horizontal">
            <label for="okay">Okay</label>
            <input type="radio" id="okay" name="level" value="okay"/>
            <label for="good">Good</label>
            <input type="radio" id="good" name="level" value="good"/>
            <label for="great">Great</label>
            <input type="radio" id="great" name="level" value="great"/>
            </fieldset>
        </div>

        <div data-role="fieldcontain">
            <label for="gender">Gender</label>
            <fieldset id="gender" data-role="controlgroup" data-type="horizontal">
            <label for="male">Male</label>
            <input type="radio" id="male" name="gender" value="male"/>
            <label for="female">Female</label>
            <input type="radio" id="female" name="gender" value="female"/>
            </fieldset>
        </div>

        <label for="age">Age </label>
        <input id="age" type="number" min=18 max=90 name="age"/>
        <input type="submit" value="Update"/>
    </form>

名称
城市
语言
水平仪
可以
好
伟大的
性别
男性
女性
年龄
Save.php

<?php
    try{

    $name = $_POST['name'];
    $city = $_POST['city'];
    $language = $_POST['language'];

    $level = $_POST['level'];
    $gender = $_POST['gender'];

    $age = $_POST['age'];
    $email = "lapm@gmail.com";

    $connection = new PDO ('mysql:host=localhost;dbname=tongue', 'web', 'lapming1');
    $connection -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $connection -> setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    function save ($query, $email, $connect, $name, $city, $language, $level, $gender, $age) {
        $statement  =  $connect->prepare($query);
        $statement  -> bindParam(':email',$email, PDO::PARAM_STR, 127);
        $statement  -> bindParam(':name', $name, PDO::PARAM_STR, 127);
        $statement  -> bindParam(':city', $city, PDO::PARAM_STR, 127);
        $statement  -> bindParam(':language', $language, PDO::PARAM_STR, 127);
        $statement  -> bindParam(':level', $level, PDO::PARAM_STR, 127);
        $statement  -> bindParam(':gender', $gender, PDO::PARAM_STR, 127);
        $statement  -> bindParam(':age', $age, PDO::PARAM_STR, 127);
        $statement  -> execute();
    }

    $sql = 'UPDATE user
            SET name=:name, city=:city, language=:language, level=:level, gender=:gender, age=:age
            WHERE email=:email';
    $save = save ($sql, $email, $connection, $name, $city, $language, $level, $gender, $age);

    header ('Location:profile.php');

    $connection = null;
    } catch(PDOException $e) {
        echo $e->getMessage();
    };  
?>

要在表单元素上正确传输数据,需要设置name属性

<input type="text" name="blarg" value="" />

这将分别作为$_GET['blarg']或$_POST['blarg']传递到PHP


您应该检查表单元素并添加name属性以匹配每个ID属性的值。

要在表单元素上正确传输数据,您需要设置name属性

<input type="text" name="blarg" value="" />

这将分别作为$_GET['blarg']或$_POST['blarg']传递到PHP


您应该检查表单元素并添加name属性以匹配每个ID属性的值。

我不确定单选按钮为什么不起作用,它们看起来很合适

<input type="text" name="blarg" value="" />
至于年龄,您确定您的浏览器支持输入type=“number”吗


在任何情况下,
print\r($\u POST)
显示了什么?

我不知道为什么单选按钮不起作用,它们看起来很合适

至于年龄,您确定您的浏览器支持输入type=“number”吗


在任何情况下,
print\r($\u POST)
显示了什么?

isttry
echo$gender=$\u POST['gender']

如果有效,则回显您的查询

echo  $sql = 'UPDATE user
            SET name=:name, city=:city, language=:language,
            level=:level, gender=:gender, age=:age
            WHERE email=:email';

我希望这将有助于你获得你想要的结果

isttry
echo$gender=$\u POST['gender']

如果有效,则回显您的查询

echo  $sql = 'UPDATE user
            SET name=:name, city=:city, language=:language,
            level=:level, gender=:gender, age=:age
            WHERE email=:email';

我希望这将帮助您获得所需的结果

以下是我编写的解决方法

<fieldset data-role="controlgroup">
<legend>Gender</legend>
<input id="male" type="radio" name="male" value="male"/>
<label for="male">Male</label>
<input id="female" type="radio" name="female" value="female"/>
<label for="female">Female</label>
</fieldset>

这是我写的解决方法

<fieldset data-role="controlgroup">
<legend>Gender</legend>
<input id="male" type="radio" name="male" value="male"/>
<label for="male">Male</label>
<input id="female" type="radio" name="female" value="female"/>
<label for="female">Female</label>
</fieldset>

当我运行这个而不是save.php时,它显示“undefined”for gender use var\u dump($\u POST);就在$connection和tell之前,put数组看起来像什么我只是复制了你的HTML,让它自己发布,print\r($\u post)显示了正确的变量。我能想到的唯一一件事是你的浏览器坏了。你能在页面上发布你的脚本(jQuery包括,内联Javascript等)吗?当我运行这个而不是save.php时,它说“未定义”性别使用var\u dump($\u post);就在$connection和tell之前,put数组看起来像什么我只是复制了你的HTML,让它自己发布,print\r($\u post)显示了正确的变量。我能想到的唯一一件事是你的浏览器坏了。你能在页面上发布你的脚本(jQuery包括,内联Javascript等)吗?使用var\u dump($\u post)调试它;就在$connection之前,请查看数组的“性别”和“级别”索引中的内容。在提交按钮中输入“名称”属性,然后首先检查是否(isset($_POST['submit']){//此处的所有代码}@从永恒来看,var_dump($_POST)表示这两个变量都未定义。。。我不是出于某种原因在代码中定义了它吗?未定义的错误出现在新版本中,因为他们需要varabl;es在使用前进行初始化或定义,或在使用前进行测试。。。。因此,您需要记住这一点。我没有收到任何关于性别或级别的未定义错误,请使用var\u dump($\u POST)对其进行调试;就在$connection之前,请查看数组的“性别”和“级别”索引中的内容。在提交按钮中输入“名称”属性,然后首先检查是否(isset($_POST['submit']){//此处的所有代码}@从永恒来看,var_dump($_POST)表示这两个变量都未定义。。。我不是出于某种原因在代码中定义了它吗?未定义的错误出现在新版本中,因为他们需要varabl;es在使用前进行初始化或定义,或在使用前进行测试。。。。因此,您需要记住这一点。我没有收到任何关于性别或级别无线电按钮的未定义错误。这不是$sql问题。我确实回显了$SEXT,它说未定义。我不明白为什么它说“未定义”,因为它是已定义的。我复制粘贴您的代码&一切正常,尝试清空浏览器缓存或在另一个浏览器中测试如果一切正常,那么我猜一定是jQuery移动脚本导致了这个问题。这与你的移动框架没有任何关系,这与你的$\u POST['gender']标识有关。。。您的单选按钮值在OUR out put上不可读。。。我已经尝试过你的代码,它工作正常,按Ctrl+Shift+Delete(仅适用于windows)清除缓存这不是$sql问题。我确实回显了$SEXT,它说未定义。我不明白为什么它说“未定义”,因为它是已定义的。我复制粘贴您的代码&一切正常,尝试清空浏览器缓存或在另一个浏览器中测试如果一切正常,那么我猜一定是jQuery移动脚本导致了这个问题。这与你的移动框架没有任何关系,这与你的$\u POST['gender']标识有关。。。您的单选按钮值在OUR out put上不可读。。。我已经尝试过你的代码,它工作正常,按Ctrl+Shift+Delete(仅适用于windows)清除缓存