2015-11-30 4 views
2

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

Что у меня есть:

У меня есть HTML-файл, содержимое 3 кнопки и аа ДИВ, которые будут меняться в зависимости от кнопки щелкнул:

<div class="container"> 
      <h1> Producto</h1> 

      <div class ="buttons"> 
       <button type="button" onclick="loadAddProduct()">Nuevo producto</button> 
       <button type="button">Borrar producto</button> 
       <button type="button">Actualizar producto</button> 

      </div> 

      <div class="main_container" id="main_container"> 

      </div> 

     </div> 

DIV с ID = main_container нагрузки с функцией АЯКС в зависимости от кнопки. Первая кнопка при нажатии будет загружать эту форму:

<div class="container"> 

    <form name="addProductForm" id="addProductForm" action="" onsubmit="" method="post"> 

     <label for="product_name">Nombre :</label> <input id="product_name" placeholder="Nombre"> 

     <br> <br> 
     <label for="product_desc_short">Descripción corta:</label><br> 
     <textarea id="product_desc_short" cols=40 rows=5 placeholder="Descripción corta del prooducto"></textarea> 

     <br> <br> 
     <label for="product_desc_long">Descripción larga:</label><br> 
     <textarea id="product_desc_long" cols=50 rows=7 placeholder="Descripción larga del prooducto"/></textarea> 
     <br><br> 

     <label for="product_price">Precio :</label> <input id="product_price" placeholder="Precio"/> 

     <br> <br> 
     <label for="product_stock">Stock :</label> <input id="product_stock" placeholder="Stock"> 

     <br><br> 
     <label for="product_type">Categoria :</label> 
     <select id="product_type" name="prod_type"> 
      <option value="" selected="selected"> Selecciona</option> 
      <option value="1"> Gorras</option> 
      <option value="2"> Camisetas</option> 
      <option value="3"> Tazas</option> 
      <option value="4"> Posters</option> 
      <option value="5"> Sudaderas</option> 
     </select> 
     <br> 
    </form> 
    <br> 
    <br> 
    <button type="submit" form="addProductForm" value="Submit">Enviar</button> 

</div> 

И, наконец, у меня есть файл с набором функций PHP, взаимодействующего с базой данных:

PHP файла:

..... 

function addProduct($desc_short, $desc_long, $stock, $price, $name, $image_url, $type) 
{ 

    $conn = connect(); 

    $sql = "INSERT INTO `products`(`desc_short`, `desc_long`, `stock`, `price`, `name`, `image_url`, `type`) 
      VALUES ('" . $desc_short . "','" . $desc_long . "','" . $stock . "','" . $price . "','" . $name . "','" . $image_url . "','" . $type . "')"; 

    if ($conn->query($sql) === true) { 
     $res = array(true, $conn->insert_id); 
     $conn->close(); 
     return $res; 
    } 

    $conn->close(); 
    return array(false, -1); 
} 
..... 

Мое намерение заключается в том, что пользователь нажимает кнопку отправки, а затем запускает функцию "addProduct(.....)" для загрузки информации в базу данных, но я не хочу перейти на другую страницу, просто обновите <div id="main_container">, с небольшим сообщением " product uploaded--> ID :XXX".

Но я действительно не знаю, как смешать все это.

+1

Надеюсь, вы избегаете ввода пользователя, чтобы предотвратить инъекцию SQL (и экранирование выхода для предотвращения хранения XSS). Вы также можете подумать о том, чтобы использовать подготовленные операторы, чтобы оставаться в безопасности (в случае, если вы когда-нибудь забудете использовать эту функцию). – WillS

+0

Привет @WillS SQLinjection еще не пожертвован, но если я хочу пройти мой тест, я должен это сделать. Сначала я хотел убедиться, что эта часть работает. Следующий шаг, «безопасность». Но вы даете мне небольшой намек на то, что я, вероятно, забыл -> хранил XSS. Благодаря! Я посмотрю на это. Спасибо за все советы! – Shudy

ответ

5

Вы должны отправить сообщение post в ваш файл php.

Изменение кнопки:

<button type="button " id="addProductFormBtn" value="Submit">Enviar</button> 

Добавить в JS:

$('body').on('click', '#addProductFormBtn', function(){ 
    //Get data from the form 
    var product_desc_short = $('#product_desc_short').val(); 
    ...//other fields 

    //Send the data to your_php_file_path using post request 
    $.post("your_php_file_path", {product_desc_short: product_desc_short,...}) 
     .done(function(msg_returned_from_php) { 
      $('#main_container').text(msg_returned_from_php) 
     }); 
}); 

В РНР функции файл вызова с Params полученый из запроса:

addProduct($_POST['product_desc_short'],...); 

Чтобы вернуть сообщение, добавьте echo в конец вашего файла (или функции):

echo " product uploaded--> ID :XXX"; 

Надеюсь, это поможет.

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