最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

php - Multiple radio buttons ajax post - Stack Overflow

programmeradmin0浏览0评论

I'm new in web programming and I really need your help. I have a form with several radio buttons and I want to insert them into mysql through an ajax post. I can do it for a single button but for more than one I don't have idea how to do it.

This is a part of my html and jquery:

<html>
    <script>
        $(document).ready(function () {
            $("#submit").click(function () {
                var q1 = $('input[type="radio"]:checked').val();
                if ($('input[type="radio"]:checked').length == "0") {
                    alert("Select any value");
                } else {
                    $.ajax({
                        type: "POST",
                        url: "ajax-check.php",
                        data: "q1=" + q1,
                        success: function () {
                            $("#msg").addClass('bg');
                            $("#msg").html("value Entered");
                        }
                    });
                }
                return false;
            });
        });
    </script>
    </head>
    <body>
        <div id="msg"></div>
        <form method="post" action="">
            <div class="Clear">
                question1:bla bla bla
                <input class="star required" type="radio" name="q1" value="1" />
                <input class="star" type="radio" name="q1" value="2" />
                <input class="star" type="radio" name="q1" value="3" />
                <input class="star" type="radio" name="q1" value="4" />
                <input class="star" type="radio" name="q1" value="5" />
            </div>
            <br />
            <div class="Clear">
                question2:bla bla bla
                <input class="star required" type="radio" name="q2" value="1" />
                <input class="star" type="radio" name="q2" value="2" />
                <input class="star" type="radio" name="q2" value="3" />
                <input class="star" type="radio" name="q2" value="4" />
                <input class="star" type="radio" name="q2" value="5" />
            </div>
            <input type="submit" name="submit" id="submit" />
        </form>
    </body>
</html>

And here is how I insert the button in mysql:

<?php
$query = mysql_connect("localhost", "root", "");
mysql_select_db('db', $query);

if (isset($_POST['q1'])) {
    $choice1 = $_POST['q1'];
    $choice2 = $_POST['q2'];
    mysql_query("INSERT INTO tb VALUES('','$choice1')");
}
?>

I've tried to make a var for each button but dosen't worked. How could I post all values in php and what should I change into my ajax and php? Thanks!

This is how I did the .php

<?php
$query=mysql_connect("localhost","root","");
mysql_select_db('cosmote',$query);
$q = array();
for ($i = 1; $i <= 2; $i++) {
  $q[$i] = isset($_POST['q'+$i]) ? mysql_real_escape_string($_POST['q'+$i]) : 0;
}
mysql_query("INSERT INTO tabel (q1,q2) VALUES ('$q[1]','$q[2]')");
?>

I'm new in web programming and I really need your help. I have a form with several radio buttons and I want to insert them into mysql through an ajax post. I can do it for a single button but for more than one I don't have idea how to do it.

This is a part of my html and jquery:

<html>
    <script>
        $(document).ready(function () {
            $("#submit").click(function () {
                var q1 = $('input[type="radio"]:checked').val();
                if ($('input[type="radio"]:checked').length == "0") {
                    alert("Select any value");
                } else {
                    $.ajax({
                        type: "POST",
                        url: "ajax-check.php",
                        data: "q1=" + q1,
                        success: function () {
                            $("#msg").addClass('bg');
                            $("#msg").html("value Entered");
                        }
                    });
                }
                return false;
            });
        });
    </script>
    </head>
    <body>
        <div id="msg"></div>
        <form method="post" action="">
            <div class="Clear">
                question1:bla bla bla
                <input class="star required" type="radio" name="q1" value="1" />
                <input class="star" type="radio" name="q1" value="2" />
                <input class="star" type="radio" name="q1" value="3" />
                <input class="star" type="radio" name="q1" value="4" />
                <input class="star" type="radio" name="q1" value="5" />
            </div>
            <br />
            <div class="Clear">
                question2:bla bla bla
                <input class="star required" type="radio" name="q2" value="1" />
                <input class="star" type="radio" name="q2" value="2" />
                <input class="star" type="radio" name="q2" value="3" />
                <input class="star" type="radio" name="q2" value="4" />
                <input class="star" type="radio" name="q2" value="5" />
            </div>
            <input type="submit" name="submit" id="submit" />
        </form>
    </body>
</html>

And here is how I insert the button in mysql:

<?php
$query = mysql_connect("localhost", "root", "");
mysql_select_db('db', $query);

if (isset($_POST['q1'])) {
    $choice1 = $_POST['q1'];
    $choice2 = $_POST['q2'];
    mysql_query("INSERT INTO tb VALUES('','$choice1')");
}
?>

I've tried to make a var for each button but dosen't worked. How could I post all values in php and what should I change into my ajax and php? Thanks!

This is how I did the .php

<?php
$query=mysql_connect("localhost","root","");
mysql_select_db('cosmote',$query);
$q = array();
for ($i = 1; $i <= 2; $i++) {
  $q[$i] = isset($_POST['q'+$i]) ? mysql_real_escape_string($_POST['q'+$i]) : 0;
}
mysql_query("INSERT INTO tabel (q1,q2) VALUES ('$q[1]','$q[2]')");
?>
Share Improve this question edited Nov 18, 2012 at 23:57 user1820705 asked Nov 18, 2012 at 21:13 user1820705user1820705 6812 gold badges8 silver badges17 bronze badges 10
  • The way you format your code is atrocious. I'm sorry but that's the truth. You make it unnecessarily harder to read for yourself and others as well. Code is written once but read many times so great care should be taken to make it beautiful. I'll post what it should look like in a later ment. – Botond Balázs Commented Nov 18, 2012 at 21:26
  • I'm sorry but now I am learning, thanks a lot for your advices and for trying to help me. I'll wait anxious for your ment. You're great! – user1820705 Commented Nov 18, 2012 at 21:30
  • This is how the HTML and JavaScript should have been formatted: pastebin./fZt7sUcY – Botond Balázs Commented Nov 18, 2012 at 21:30
  • And the PHP (it wasn't as bad as the other): pastebin./ZhtxwCf1 – Botond Balázs Commented Nov 18, 2012 at 21:33
  • You' re right, is much easier to read it now and to detect eventually errors. Thanks again! – user1820705 Commented Nov 18, 2012 at 21:34
 |  Show 5 more ments

2 Answers 2

Reset to default 4

OK, here is how to do it. First, add an id to the form:

<form id="myform" method="post" action="">

This will make it easier to access via jQuery. Then, pass the serialized form as the POST data to your PHP script:

$(document).ready(function () {
    $("#submit").click(function () {                
        if ($('input[type="radio"]:checked').length == "0") {
            alert("Select any value");
        } else {
            $.ajax({
                type: "POST",
                url: "ajax-check.php",
                data: $("#myform").serialize(),
                success: function () {
                    $("#msg").addClass('bg');
                    $("#msg").html("value Entered");
                }
            });
        }
        return false;
    });
});

After that, you can get the radio button values from the $_POST array in your PHP script:

$_POST['q1'] // value of q1, can be 1-5
$_POST['q2'] // value of q1, can be 1-5

EDIT: The problem with your PHP code is that you used + instead of . for concatenating strings. Write this instead:

$q[$i] = isset($_POST['q'.$i]) ? mysql_real_escape_string($_POST['q'.$i]) : 0;

After this, I'm pretty sure it will work.

You could use .serialize() on the form, it will give you the values of the form as if you was submitting it regularly data: $('form').serialize(),

发布评论

评论列表(0)

  1. 暂无评论