2015-04-12 2 views
0

Мой код должен хранить информацию, которую пользователь вставляет и сохраняет в базе данных.функция выполняется без вызова

Эта функция должна быть вызвана нажатием кнопки, но проблема в том, что функция запускается при загрузке страницы и при нажатии кнопки.

вот мой код

<!DOCTYPE html> 
<!-- 
To change this license header, choose License Headers in Project Properties. 
To change this template file, choose Tools | Templates 
and open the template in the editor. 
--> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title></title> 
     <script src="//code.jquery.com/jquery-2.1.1.min.js"></script> 
    </head> 
    <body> 
     <?php 


     function write_command($name,$address,$telephone,$cart){ 

      $servername = 'localhost'; 
      $server_username = 'root'; 
      $server_password = ''; 
      $DB_name = 'OnlineGarcon'; 
      $DB_connect = mysqli_connect($servername,$server_username,$server_password,$DB_name); 
      if ($DB_connect -> connect_error){ 
       echo 'unable to connect to due to server error!'; 
      }else{ 
    $_write_command = "INSERT INTO `orders`(`name`, `address`, `telephone`, `cart`) VALUES ('$name','$address','$telephone','$cart')"; 
    if ($DB_connect->query($_write_command) == TRUE) { 
    echo "Order was placed,Thanks!\nyour order was:$cart"; 
    } else { 
    echo "Server error!"; 
    } 
      } 
     } 


     ?> 

     <center> 
      <form method="POST"> 
      <input name="name" class="field" placeholder="Full name"></input> 
      <br> 
      <br> 
      <input name="address" class="field" placeholder="Address"></input> 
      </br> 
      </br> 
      <input name="telephone" class="field" placeholder="Telephone/Mobile number"></input> 
      <br> 
      <br> 
      <br> 
      <br> 
      <button id="submit">Submit order</button> 
      </br> 
      </br> 
      </br> 
      </br> 
     </form> 
<script> 

    $("#submit").click(function(){ 

    alert('<?php 
    $name = $_POST['name']; 
    $address = $_POST['address']; 
    $telephone = $_POST['telephone']; 
    $cart = $_GET['cart']; 
    write_command($name,$address,$telephone,$cart); 

    ?>'); 

    }); 
</script> 
    </body> 
</html> 
+0

вы видите предупреждение о загрузке страницы? – dandavis

+3

Вы не можете смешивать php и js, как это. php запускается до того, как что-либо даже отправлено в браузер –

+0

Если вы хотите, чтобы код JavaScript запускался при нажатии кнопки, вы, вероятно, должны использовать прослушиватели событий: http://www.w3schools.com/jsref/met_element_addeventlist.asp – idungotnosn

ответ

0

Используя вызов jQuery Ajax, вы можете сделать это довольно просто.

form.php

<html> 
    <head> 
     <script src="//code.jquery.com/jquery-2.1.1.min.js"></script> 
    </head> 

    <body> 
     <input name="name" id="name" placeholder="Full name"> 
     <input name="address" name="address" placeholder="Address"> 
     <input name="telephone" id="telephone" placeholder="Telephone/Mobile number"> 
     <button id="submit">Submit order</button> 

     <script type="text/javascript"> 
      $('#submit').click(function() { 
       $.ajax({ 
        url: "functions.php", 
        type: "POST", 
        data: { 
         name: $('#name').val(); 
         address: $('#address').val(); 
         telephone: $('#telephone').val(); 
         cart: <?php echo $_GET['cart']; ?> 
        } 
       }); 
      }); 
     </script> 
    </body> 
</html> 

functions.php

<?php 
    function write_command($name, $address, $telephone, $cart) { 
     $servername = 'localhost'; 
     $server_username = 'root'; 
     $server_password = ''; 
     $DB_name = 'OnlineGarcon'; 
     $DB_connect = mysqli_connect($servername,$server_username,$server_password,$DB_name); 

     if($DB_connect->connect_error){ 
      echo 'unable to connect to due to server error!'; 
     } else { 
      $_write_command = "INSERT INTO `orders`(`name`, `address`, `telephone`, `cart`) VALUES ('$name','$address','$telephone','$cart')"; 

      if ($DB_connect->query($_write_command) == TRUE) { 
       echo "Order was placed,Thanks!\nyour order was:$cart"; 
      } else { 
       echo "Server error!"; 
      } 
     } 
    } 

    write_command($_POST['name'], $_POST['address'], $_POST['telephone'], $_POST['cart']); 
-1

Это будет происходить, что вам нужно сделать, это

  • Метод 1: <form method="POST" onsubmit="callFuntion()">
  • Метод 2: <form action="demo_form.php" method="post">

введите весь ваш PHP-код в файл demo_form.php, и при нажатии на него будет отправлен этот файл, который поможет вам вызвать функцию один раз не дважды.

+0

не работает чувак! –

+0

onsubmit = "callfunction()", вы использовали метод preventDefault внутри функции callfunction(), которая перестанет вызывать вашу функцию по умолчанию. – Shelly

+1

просто неправильно, вы не можете смешивать js и php так, как это –

Смежные вопросы