cant insert data in a custom table in phpmyadmin

i created a dbdelta table but i cant seem to insert any data here is my code please help

function lapizzeria_save_reservation() {
  global $wpdb;
  if(isset($_POST['reservation'])  $_POST['hidden'] =="1")  {
    $name =$_POST['name'];
    $date =$_POST['date'];
    $email =$_POST['email'];
    $phone =$_POST['phone'];
    $message =$_POST['message'];

    $table = $wpdb-prefix . 'reservations';

    $data = array(
      'name' = $name,
      'date' = $date,
      'email' = $email,
      'phone' = $phone,
      'message' = $message
    );

    $format = array(
      '%s',
      '%s',
      '%s',
      '%s',
      '%s'
    );
    $wpdb-insert($table, $data, $format);

  }
}

add_action('init', 'lapizzeria_save_reservation');

here is the html

form class="reservation-form" method="post"
                h2Make a Reservation/h2
                div class="field"
                  input type="text" name="name" placeholder="Name" required
                /div
                div class="field"
                  input type="datetime-local" name="date" placeholder="Date" required
                /div
                div class="field"
                  input type="text" name="email" placeholder="E-mail"
                /div
                div class="field"
                  input type="tel" name="phone" placeholder="Phone Number" required
                /div
                div class="field"
                  textarea name="message" placeholder="Message" requires/textarea
                /div
                input type="submit" name="reservation" class="button" value="Send"
                input type="hidden" name="hidden" value="1"
            /form

Topic dbdelta mysql php Wordpress

Category Web


    <?php 
    function lapizzeria_save_reservation() {
    if(isset($_POST['reservation']) && $_POST['hidden'] =="1")  {
    global $wpdb;
        $sql = $wpdb->prepare("INSERT INTO reservation (name, date, email, phone, message)
        VALUES ('".$_POST["name"]."','".$_POST["date"]."','".$_POST["email"]."','".$_POST["phone"]."','".$_POST["message"]."')");
        $wpdb->query($sql);
        $name =$_POST['name'];
        $date =$_POST['date'];
        $email =$_POST['email'];
        $phone =$_POST['phone'];
        $message =$_POST['message'];
    function insertuser( $name, $date, $email, $phone, $message){
        global $wpdb;
        $wpdb = $wpdb->prefix . 'reservations';
    $name = $_POST['name'];
        $date = $_POST['date'];
        $email = $_POST['email'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];
        $format = array('%s','%s','%s','%s','%s');
        $success = $wpdb->insert($reservations, array('name' => $name, 'date' => $date, 'email'=> $email, 'phone'=>$phone, 'message'=>$message ));
    }
    if($success) {
            echo 'Inserted successfully';
        } else {
            echo 'not';
        }
        }

    add_action('init', 'lapizzeria_save_reservation');
    ?>

I would strongly suggest using AJAX for this purpose.

Using "init" for inserting some data to your database is not a good solution.

Here's a good guide on how to do it with AJAX: https://webprogramo.com/how-to-create-an-ajax-form-in-wordpress/1156/

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.