sammax
sammax

Reputation: 51

How run code when clicking on a looped button

I need to show a button for each value and do some function, The following code is working for displaying the button only but it doesn't show the result of the function after the button

$ids = [1,2,3,4,5,6];
foreach( $ids as $id ) {
    $post_url = get_the_permalink($id);
    echo $post_url."<input type='submit' name='doit' value='Change'><br>";

    $doit = $_POST['doit'];
    if(isset($_POST['doit'])){
        echo get_post_field( 'post_name', $id)."<br>";
    }
}

Upvotes: 0

Views: 57

Answers (1)

Matthijs Knigge
Matthijs Knigge

Reputation: 402

Can you try this solution?

I added an ID to the name field so when you click the button it runs only the if statement of this button.

Also make sure that the buttons are wrapped inside a form tag with a method attribute.

echo "<form method='post'>";
$ids = [1,2,3,4,5,6];
foreach( $ids as $id ) {
    $post_url = "test.com";
    echo "$post_url <input type='submit' name='doit_$id' value='Change'><br>";
    if(isset($_POST['doit_'. $id])){
        echo $id . "_RUNNING <br>";
    }
}
echo "</form>";

Also $doit = $_POST['doit']; prints a NOTICE in php when it is not defined, it is better to check if $_POST['doit'] isset before assigning it to a variable.

Upvotes: 1

Related Questions