0

I want to hide the form after someone has entered the input in my plugin form and has hit submit button. However, as I'm using shortcode function in my plugin file I am unable to use simple html to display form and hide it traditionally.

How do I hide this form? This is my php script of the plugin file:

<?php
function installer(){
    include('installer.php');
}
register_activation_hook( __file__, 'installer' ); //executes installer php when installing plugin to create new database

add_action('admin_menu','result_menu'); //wordpress admin menu creation
function result_menu()
{
    add_menu_page('Result','Result','administrator','xenon-result');
    add_submenu_page( 'xenon-result', 'Manage Marks', ' Manage Marks', 'administrator', 'Manage-Xenon-Marks', 'Xenon_Marks' );
}
function Xenon_Marks() //function to add marks addition form in admin view
{
    include('new/result-add-marks.php');
}

function html_form_code() 
{
echo '<h3 align="center" class="titlehead"><br><b>Shikhar Entrance Test - 2017 Result</b></h3>';
echo '<form action="" method="post" name="display_form">';
echo '<fieldset>';
echo '<legend>Student Information</legend>';
echo 'Roll Number: <input type="number" min="170001" max="171000" name="rollNumber"><br>';
echo '<input type="submit">';
echo '<input type ="reset">';
echo '</form>';
}

    function result_display(){
global $wpdb;
$student_id = $_POST['rollNumber'];
$query = "SELECT * FROM `wp_xenonresult` WHERE `student_id` = $student_id";
$result = $wpdb->get_row($query);
    echo $result->student_name;}

if(isset($_POST['submit']))
{
   result_display();
}

//shortcode for the plugin begins.
function display_shortcode() {
    ob_start();
    result_display();
    html_form_code();
    return ob_get_clean();
}

add_shortcode( 'xenon_result_display', 'display_shortcode' );
// Enable shortcodes in text widgets
add_filter('widget_text','do_shortcode');
?>

1 Answer 1

0

If I understand the code correctly, you are wanting to make the result_display() function call conditional by moving the post check to inside the shortcode function. ie.

function display_shortcode() {
    ob_start();
    if (isset($_POST['submit'])) {result_display();}
    else {html_form_code();}
    return ob_get_clean();
}
1
  • thank you for the idea. However, it does not work. Now, it is not even showing the result. I want to hide the form once someone submits the form and give them their result.
    – Himanshu
    Feb 12, 2017 at 10:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.