Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sending data to database using Jquery/ajax

I've been trying to put up my form but I keep getting stuck. I got it to work with jquery disabled. But if I turn Jquery on it does not send anything. (Without errors in my element inspection)

I've been on it for a while now and I tried different solutions (a few from different topics here on Stack overflow) but I keep getting to the same point. It might be something on the server side but I keep thinking that if that would be the case it shouldn't work at all. Does anyone might have an idea?

The link: http://www.volunteeringnews.com/osf.php

The codes:

Client side: osf.php

<?php include("osb.php");?>
<link href="css/styles.css" rel="stylesheet">
<script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type = "text/javascript">

$(function(){

$('#submit').click(function(){
 $('#container').append('<img src = "img/ajax/ajax-loader.gif" alt="Currently loading" id = "loading" />');

    var name=$("#name").val();
    var continent=$("#continent").val();
    var country=$("#country").val();
    var website=$("#website").val();
    var email=$("#email").val();
    var nameorg=$("#nameorg").val();
    var category=$("#category").val();
    var price=$("#price").val();
    var currency=$("#currency").val();
    var description=$("#description").val();
    var wanted=$("#wanted").val();
    var expectation=$("#expectation").val();
    var extra=$("#extra").val();


     $.ajax({

        url: 'osb.php',
        type: 'POST',
        data: 'name =' + name + '&continent=' + continent + '&country=' + country + '&website=' + website + '&email=' + email + '&nameorg=' + nameorg + '&category=' + category + '&price=' + price + '&currency=' + currency + '&description=' + description + '&wanted=' + wanted + '&expectation=' + expectation + '&extra=' + extra,


        success: function(result){
             $('#response').remove();
             $('#container').append('<p id = "response">' + result + '</p>');
             $('#loading').fadeOut(500, function(){
                 $(this).remove();

             });

        }

     });         

    return false;

});


});

</script>



<!--we have our html form here where user information will be entered-->
<form action='osb.php' method='post' border='0'>
<div id = "container">  <br>
    <label>Name:            </label>    <input type='text' id="name" name='name' /><br>  <br>
    <label>Continent:       </label>    <select id="continent" name="continent"> <option>Africa</option><option>America</option><option>Asia</option> <option>Australia</option><option>Europe</option></select><br><br>
    <label>Country:         </label>    <input type='text' id="country" name='country' /><br><br>
    <label>Website:         </label>    <input type='text' id="website" name='website' /><br><br>
    <label>E-mail:          </label>    <input type='text' id="email" name='email' /><br><br><br>
    <label>Organisation:    </label>    <input type='text' id="nameorg" name='nameorg' /><br><br>
    <label>Category:        </label>    <input type='text' id="category" name='category' /><br><br>
    <label>Price per week:  </label>    <input type='text' id="price" name='price' /><br><br>
    <label>Currency:        </label>    <select id ="currency"  name="currency" >  <option> EUR </option> <option> DOL </option> <option> GBP </option></select><br><br>
    <label>Description:     </label>    <textarea id="description" rows="5" cols="40"  placeholder="Describe what kind of volunteer is welcome" name='description'/></textarea><br><br>
    <label>Wanted:          </label>    <textarea id="wanted" rows="5" cols="40"  placeholder="Describe what kind of volunteer is welcome" name='wanted'/></textarea><br><br>
    <label>Expectation:     </label>    <textarea id="expectation" rows="5" cols="40"  placeholder="Describe what a volunteer can expect"  name='expectation'/></textarea><br><br>
    <label>Extra:           </label>    <textarea id="extra" rows="5" cols="40"  placeholder="Describe what a volunteer can expect"  name='extra'/></textarea><br><br>

    <input type='hidden' name='action' value='create' />
    <input type='submit' value='Submit' id="submit" value = "send feedBack"/>
    <input type="reset" value="Reset" class="reset-org">

    <a href='index.php'>Back to index</a> 

The server side: osb.php

<?php
//set connection variables
$host = "";
$username = "";
$password = "";
$db_name = ""; //database name

//connect to mysql server
$mysqli = new mysqli($host, $username, $password, $db_name);



//check if any connection error was encountered
if(mysqli_connect_errno()) {
echo "Error: Could not connect to database.";
exit;
}

$action = isset($_POST['action']) ? $_POST['action'] : "";



if($action=='create'){ //the the user submitted the form

//include database connection
include 'mysqli.php';

//our insert query query
//$mysqli->real_escape_string() function helps us prevent attacks such as SQL injection
$query  = "insert into organisation 
            set
                name = '".$mysqli->real_escape_string($_POST['name'])."', 
                continent = '".$mysqli->real_escape_string($_POST['continent'])."',
                country = '".$mysqli->real_escape_string($_POST['country'])."',
                website = '".$mysqli->real_escape_string($_POST['website'])."',
                email = '".$mysqli->real_escape_string($_POST['email'])."',
                nameorg = '".$mysqli->real_escape_string($_POST['nameorg'])."',
                category = '".$mysqli->real_escape_string($_POST['category'])."',
                price = '".$mysqli->real_escape_string($_POST['price'])."',
                currency = '".$mysqli->real_escape_string($_POST['currency'])."',
                description = '".$mysqli->real_escape_string($_POST['description'])."',
                wanted = '".$mysqli->real_escape_string($_POST['wanted'])."',
                expectation = '".$mysqli->real_escape_string($_POST['expectation'])."',
                extra  = '".$mysqli->real_escape_string($_POST['extra'])."'";


//execute the query
if( $mysqli ->query($query) ) {
    //if saving success
    echo "User was created.";
}else{
    //if unable to create new record
    echo "Database Error: Unable to create record.";
}
//close database connection
$mysqli->close();
}



?>

Thank you very much!!

like image 785
Roald Van Der Tempel Avatar asked Sep 10 '13 14:09

Roald Van Der Tempel


People also ask

Can AJAX send data to server?

$. ajax() method allows you to send asynchronous http requests to submit or retrieve data from the server without reloading the whole page. $. ajax() can be used to send http GET, POST, PUT, DELETE etc.

Can jQuery connect to database?

To implement a database with jQuery you would need a server backend (usually a PHP script that accepts input and stores it to the database). You can call this php script from your site with jQuery through it's AJAX functionality.

Can we write SQL query in jQuery?

Actually, the answer is simply NO. JQuery can't make a connection to a MySQL server - you'll need a serverside script.


1 Answers

Try this

Here is the edited html

html

    <form action='osb.php' method='post' border='0' id="form1">
    <div id = "container">  <br>
        <label>Name:            </label>    <input type='text' id="name" name='name' /><br>  <br>
        <label>Continent:       </label>    <select id="continent" name="continent"> <option>Africa</option><option>America</option><option>Asia</option> <option>Australia</option><option>Europe</option></select><br><br>
        <label>Country:         </label>    <input type='text' id="country" name='country' /><br><br>
        <label>Website:         </label>    <input type='text' id="website" name='website' /><br><br>
        <label>E-mail:          </label>    <input type='text' id="email" name='email' /><br><br><br>
        <label>Organisation:    </label>    <input type='text' id="nameorg" name='nameorg' /><br><br>
        <label>Category:        </label>    <input type='text' id="category" name='category' /><br><br>
        <label>Price per week:  </label>    <input type='text' id="price" name='price' /><br><br>
        <label>Currency:        </label>    <select id ="currency"  name="currency" >  <option> EUR </option> <option> DOL </option> <option> GBP </option></select><br><br>
        <label>Description:     </label>    <textarea id="description" rows="5" cols="40"  placeholder="Describe what kind of volunteer is welcome" name='description'/></textarea><br><br>
        <label>Wanted:          </label>    <textarea id="wanted" rows="5" cols="40"  placeholder="Describe what kind of volunteer is welcome" name='wanted'/></textarea><br><br>
        <label>Expectation:     </label>    <textarea id="expectation" rows="5" cols="40"  placeholder="Describe what a volunteer can expect"  name='expectation'/></textarea><br><br>
        <label>Extra:           </label>    <textarea id="extra" rows="5" cols="40"  placeholder="Describe what a volunteer can expect"  name='extra'/></textarea><br><br>

        <input type='hidden' name='action' value='create' />
        <input type='button' value='Submit' id="submit" />
        <input type="reset" value="Reset" class="reset-org">

        <a href='index.php'>Back to index</a> 
</form>

use .serialize(), it will automatically take all the form data

code

    $(function(){

    $('#submit').click(function(){
     $('#container').append('<img src = "img/ajax/ajax-loader.gif" alt="Currently loading" id = "loading" />');
    $.ajax({

            url: 'osb.php',
            type: 'POST',
            data: $('#form1').serialize(),
            success: function(result){
                 $('#response').remove();
                 $('#container').append('<p id = "response">' + result + '</p>');
                 $('#loading').fadeOut(500);

               }

         });         

    });
 });

and in your php page add this

osb.php

<?php
$data=$_POST['serialize'];
$name=$data['name'];  //access data like this

?>
like image 189
SarathSprakash Avatar answered Sep 28 '22 16:09

SarathSprakash