Alex Polly
Alex Polly

Reputation: 76

inserting data to table from frontend wordpress

I'm trying to insert data to custom table from frontend as well as backend in wordpress. Below is my code, its working if i insert the data from backend but its giving me Error 404 if i try to insert from frontend.

 <?php
/*
Plugin Name: Custom Form
Description: Custom Plugin
Author: Bijay Luitel


*/

// Create the table if not exixts
?>
<style>
p {
    display:block;
}
h3 {
    height:20px;
    padding:10px 5px;
}

</style>
<?php
//Short Codes
add_shortcode('form_bands','form_bands');
function form_bands(){
    global $wpdb;
    $this_page = $_SERVER['REQUEST_URI'];
    $query1 = "SELECT * FROM grade";
    $result1 = $wpdb->get_results($query1);
    $query2 = "SELECT * FROM branch";
    $result2 = $wpdb->get_results($query2);

    if($_POST['action']==1 && $_POST['name'] != '' ){
     $page_one_table = 'band';
     $name =$_POST['name'];
     $mailingAddress = $_POST['address'];
     $city = $_POST['city'];
     $state = $_POST['state'];
     $zip = $_POST['zip'];
     $email = $_POST['email'];
     $url = $_POST['url'];
     $telephone = $_POST['telephone'];
     $gradeId = $_POST['grade'];
     $branchId = $_POST['branch'];
     $insertMe="INSERT INTO band ('Name', 'MailingAddress', 'City', 'State', 'Zip', 'Email', 'URL', 'Telephone', 'GradeID', 'BranchID') VALUES('$name', '$mailingAddress', '$city', '$state', '$zip', '$email', '$url', '$telephone', '$gradeId', '$branchId')";
     $insert_page_one = $wpdb->query($insertMe);
     //$insert_page_one = $wpdb->insert($page_one_table, $page_one_inputs);

     $form_id = $wpdb->insert_id;
         if($insert_page_one)
         {
            echo '<div id="successMsg" class="updated below-h2"><p>Operation Successful</p></div>';  
         }
         else{ 
         echo '<div id="successMsg" class="updated below-h2"><p>Error ! Recheck and tryagain.</p></div>';   
         }

     }
     elseif ($_POST['action']==1 && $_POST['name'] == ''){
         echo '<div id="successMsg" class="updated below-h2"><p>Error ! Recheck and tryagain.</p></div>';   
     }
?>

<h2>Bands</h2>
<div class="postbox">
    <form action="" method="post">
        <div class="inside">
        <table class="form-table">
            <tr>
                <th>Name :</th>
                <td><input type="text" name="name" /></td>
            </tr>
            <tr>
                <th>Address :</th>
                <td><input type="text" name="address" /></td>
            </tr>
            <tr>
                <th>City :</th>
                <td><input type="text" name="city" /></td>
            </tr>
            <tr>
                <th>State :</th>
                <td><input type="text" name="state" /></td>
            </tr>
            <tr>
                <th>Zip :</th>
                <td><input type="text" name="zip" /></td>
            </tr>
            <tr>
                <th>Telephone :</th>
                <td><input type="text" name="telephone" /></td>
            </tr>
            <tr>
                <th>Email :</th>
                <td><input type="text" name="email" /></td>
            </tr>
            <tr>
                <th>Url :</th>
                <td><input type="text" name="url" /></td>
            </tr>
            <tr>
                <th>Grade :</th>
                <td><select name="grade">
                        <?php foreach($result1 as $row){
                        $value = $row->GradeID;
                        echo '<option value="'.$value.'">';
                        echo $row->Grade;   
                        echo "</option>";
                    }?>
                    </select></td>
            </tr>
            <tr>
                <th>Branch :</th>
                <td><select name="branch">
                        <?php foreach($result2 as $row){
                        $value = $row->BranchID;
                        echo '<option value="'.$value.'">';
                        echo $row->Name;    
                        echo "</option>";
                    }?>
                    </select></td>
            </tr>
        </table>
        <p class="submit">
            <input type="submit" name="add_form" class="button-primary" value="Submit" />
        </p>
        <input type="hidden" name="action" value="1" />
    </form>
</div>
</div>
<?php
 }
function myForm () 
{
     add_menu_page('Forms', 'Forms', '','forms', ''); 
     add_submenu_page("forms", "Bands", "Bands", 0, "Bands", "form_bands"); 
}
add_action('admin_menu','myForm');

How can i solve this problem? Please Help me

Upvotes: 0

Views: 2284

Answers (1)

Sepster
Sepster

Reputation: 4849

I expect the issue you're having relates to your use of a "reserved" post variable name, of 'name'.

The WordPress Codex page for Register_Taxonomy() contains the list of "reserved terms".


Further, your action attribute on your form tag is missing your URL. That's handled OK in current browsers, but may cause unexpected behavior in some older browsers, and isn't guaranteed to work in future.

Better practice is to remove this attribute altogether, if you're not going to use it, because the spec strongly discourages authors from leaving it empty:

The action and formaction content attributes, if specified, must have a value that is a valid non-empty URL potentially surrounded by spaces.

(This info re the action attribute thanks to @mercator with this answer )

Upvotes: 1

Related Questions