Обновление PHP для радио кнопок - PullRequest
1 голос
/ 26 марта 2012

Переключатели (пол и уровень), показывающие «неопределенное» при нажатии кнопки «Отправить» Я использую jQuery Mobile Framework. Другие поля с type=text работают нормально. Как вставить значение в бэкэнд для этих переключателей? Должен ли я установить значение явно в PHP? (т.е. if$_POST['gender'] == 'male')

Каким-то образом $ _POST ['пол'] и $ _POST ['уровень'] не определяют переменную. Работает только при наличии только 1 переключателя.

 <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();
    };  
?>

Ответы [ 4 ]

1 голос
/ 27 марта 2012

Вот обходной путь, который я написал.

<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

//gender radio buttons
    $male = $_POST['male'];
    $female = $_POST['female'];

    if (isset($male)){
        $gender = 'male';
        };

    if (isset($female)){
        $gender = 'female';
        };
0 голосов
/ 26 марта 2012

Я не уверен, почему переключатели не работают, они выглядят мне правильно.

Что касается возраста, вы уверены, что ваш браузер поддерживает ввод type = "number"?

В любом случае, что показывает print_r($_POST)

0 голосов
/ 26 марта 2012

Первая попытка echo $gender = $_POST['gender'];

если он работает, повторить ваш запрос

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

Надеюсь, это поможет вам в достижении желаемого результата

0 голосов
/ 26 марта 2012

Для правильной передачи данных по элементам формы необходимо установить атрибут name.

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

Это будет передаваться PHP как $ _GET ['blarg'] или $ _POST ['blarg'] соответственно.

Вы должны пройти через элементы формы и добавить атрибут name , чтобы соответствовать значению каждого атрибута ID .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...