wrigley06
wrigley06

Reputation: 359

Getting my form data to post to mysql database

Pretty new to php/mysql and jquery, and I'm having trouble getting my form data to upload to my mysql db. I've tried a few different approaches and done my research, but none of the suggestions I've found online are working for me, which is why I'm posting here. So here's my most recent failed approach:

in my index file:

 <head>

 ...

<script type="text/javascript">
$(document).ready(function() {
    // Announcement form AJAX submit
    $('#announcementForm').submit(function() {
        $.ajax({
            url: 'ajax.php',
            type: 'POST',
            dataType: 'json',
            data: $(this).serialize(),
                success: function(data) {
                if (data.error) {
                    $('#error').css('display', 'block');
                } else {
                    $('#note').show();
                    $('#error').hide();
                    $('#fields').hide();
                }
            }
        });
        return false;
    });
});
</script>

 </head>
 <body>

 ...

 <form class="dl_form" id="announcementForm" method="post">
            <dl>
                <dt>Announcement</dt>
                <dd><textarea id="Announcement" sytle="width: 300px; height: 150px;" name="Announcement"></textarea></dd>
            </dl>
            <dl>
                <dt>Announcement Type:</dt>
                <dd><input type="radio" name="Type" value="schedule">Scheduling</input></dd>
                <dd><input type="radio" name="Type" value="general">General</input></dd>
            </dl>
            <dl>
                <dt></dt>
                <dd><input type="submit" value="submit" /></dd>
            </dl>
        </form>

        <div id="note">
            <p>Announcement posted successfully!"</p>
        </div>
        <div id="error">You haven't completed all of the required fields</div>

And then in my ajax.php file I have (some lines have been replaced with "######" for security reasons):

 <?php
//database credentials
$server    = '######';
$username   = '######';
$password   = '######';
$database   = '######';
$connect    = mysql_connect($server, $username, $password ) or die(mysql_error.'error connecting to db');

//select database
mysql_select_db($database, $connect) or die(mysql_error.'error selecting db');

//$typeValue = $('input:radio[name=Type]:checked').val());

if (!empty($_POST)){
    $Announcement   = $_POST['Announcement'];
    $Type           = $_POST['Type'];

    if (!empty($Announcement) && !empty($Type) )
    {
        //insert data into db
        mysql_query("INSERT into announcements (AnnouncementID, Type, Announcement)
        VALUES ('', '".$Type."', '".$Announcement."')") or die(mysql_error());
    }else {
        echo json_encode(array(
            'error' => true,
            'msg'   => "You haven't completed all required fields!"
        ));
        exit;
    }
}

?>

Any help you guys can provide would be much appreciated.

Thanks

UPDATE IN RESPONSE TO Jay Blanchard:

I just ran the console in my browser. The only error I'm getting is:

 SCRIPT1004: Expected ';'

in reference to the first line of my JS:

 $function() {
 ...

UPDATE 2:

Just updated my code to reflect my most recent changes...before I could at least trigger the submit click even and the fields would empty, indicating that at least something was happening. With my new round of changes however, not even that triggers, so I'm still pretty stuck

Upvotes: 1

Views: 323

Answers (1)

user2009750
user2009750

Reputation: 3187

In your php you've made a mistake with your echo statement its not jason_encode instead its json_encode.

Additionally

Also you Should remove AnnouncementID from your query if in database it is auto increment, because db will warn you for incorrect integer value for column AnnouncementID.

EDIT: In your php part in statement

mysql_query("INSERT into announcements (AnnouncementID, Type, Announcement)
            VALUES ('', '".$Type."', '".$Announcement"')") or die(mysql_error());

You are forgetting a concatenation operator . after '".$Announcement which should be

mysql_query("INSERT into announcements (AnnouncementID, Type, Announcement)
            VALUES ('', '".$Type."', '".$Announcement."')") or die(mysql_error());

and in your jquery instead of

$function() {

use

$(document).ready(function(){

Upvotes: 4

Related Questions