Вставьте несколько значений в строке php - PullRequest
0 голосов
/ 07 марта 2019

Я не могу найти решение для этой формы, поэтому я спрашиваю вас, ребята, как я могу решить эту проблему: (1) У меня есть эта форма:

<form id="formRetur" action="" method="POST" novalidate="novalidate">
        <div id="mail-status" style="color: black;text-align: center;"></div>
        <h3><strong>
            Detalii client
        </strong></h3>
          <div class="row">
            <div class="col-md-4">
              <div class="form-group">
                <input type="text" class="form-control" name="nume_prenume" id="nume_prenume" placeholder="Nume Prenume">
              </div>
            </div>
            <div class="col-md-4">
              <div class="form-group">
                <input type="text" class="form-control" name="nr_tlf" id="nr_tlf" placeholder="Numar telefon">
              </div>
            </div>
            <div class="col-md-4">
              <div class="form-group">
                <input type="text" class="form-control" name="adresa_email" id="adresa_email" placeholder="Adresa email">
              </div>
            </div>
          </div>
        <h3><strong>
            Detalii comanda
        </strong></h3>
        <div class="row">
            <div class="col-md-4">
              <div class="form-group">
                <input type="text" class="form-control" name="nr_comanda" id="nr_comanda" placeholder="Numar comanda">
              </div>
            </div>
            <div class="col-md-4">
              <div class="form-group">
                <input type="text" class="form-control" name="data_comanda" id="data_comanda" placeholder="Data comanda">
              </div>
            </div>
            <div class="col-md-4">
              <div class="form-group">
                <input type="text" class="form-control" name="nr_factura" id="nr_factura" placeholder="Numar factura">
              </div>
            </div>
        </div>
        <h3><strong>
            Detalii produse
        </strong></h3>
        <div class="row">
            <a href="javascript:void(0)" id="add"><i class="fa fa-plus"  aria-hidden="true" style="position: absolute;z-index:999;"></i></a>
            <div class="col-md-4">
              <div class="form-group">
                <input type="text" class="form-control" name="den_prod" id="den_prod" placeholder="Denumire produs">
              </div>
            </div>
            <div class="col-md-4">
              <div class="form-group">
                <input type="text" class="form-control" name="culoare_prod" id="culoare_prod" placeholder="Culoare produs">
              </div>
            </div>
            <div class="col-md-4">
              <div class="form-group">
                <input type="text" class="form-control" name="cantitate" id="cantitate" placeholder="Cantitate">
              </div>
            </div>
        </div>
        <div class="maimulte">

        </div>
        <h3><strong>
            Motiv retur
        </strong></h3>
        <div class="row">
            <div class="col-md-12">
                <textarea name="motiv" id="motiv" class="form-control" cols="30" rows="10"></textarea>
            </div>
        </div>
        <div class="row">
             <div class="col-md-12" style="margin-top:10px;margin-bottom:10px;"><div class="g-recaptcha" data-sitekey="<?php echo SITE_KEY; ?>"></div>  </div>
            <div class="col-md-12">
                <button type="submit" id="send-message" class="btn btn-default">Trimite </button>
            </div>
            <div id="loader-icon" style="display:none;"><img src="images/loader.gif"></div>
        </div>
    </form>

Я использую ajax для вставки данных вБД, но у меня есть опция, где вы можете добавить больше продуктов, когда пользователь нажимает + добавляет +1 строку с 3 полями name, color, qty, и я хочу также вставить их в db, вот мой ajax:

<script>
$(document).ready(function (e){
    $("#formRetur").on('submit',(function(e){
        e.preventDefault();

        $("#mail-status").hide();
        $('#send-message').hide();
        $('#loader-icon').show();
        $.ajax({
            url: "valid_retur.php",
            type: "POST",
            dataType:'json',
            data: {
            "nume_prenume":$('input[name="nume_prenume"]').val(),
            "nr_tlf":$('input[name="nr_tlf"]').val(),
            "adresa_email":$('input[name="adresa_email"]').val(),
            "nr_comanda":$('input[name="nr_comanda"]').val(),
            "data_comanda":$('input[name="data_comanda"]').val(),
            "nr_factura":$('input[name="nr_factura"]').val(),
            "den_prod":$('input[name="den_prod"]').val(),
            "culoare_prod":$('input[name="culoare_prod"]').val(),
            "cantitate":$('input[name="cantitate"]').val(),
            "motiv":$('textarea[name="motiv"]').val(),
            "g-recaptcha-response":$('textarea[id="g-recaptcha-response"]').val()},             
            success: function(response){
                // $( '#frmContact' ).each(function(){
                //     this.reset();
                // });
            $("#mail-status").show();
            $('#loader-icon').hide();
            if(response.type == "error") {
                $('#send-message').show();
                $("#mail-status").attr("class","alert alert-danger");               
            } else if(response.type == "message"){
                // grecaptcha.reset();
                $('#send-message').show();
                $("#mail-status").attr("class","alert alert-success");                          
            }
            $("#mail-status").html(response.text);  
            },
            error: function(){} 
        });
    }));
});
</script>

Вот мой БД: введите описание изображения здесь

И есть мой php-файл, который вставляет в БД значения из ajax:

 <?php
 if($_POST)
 {
 include('config.php');

$nume_prenume      = filter_var($_POST["nume_prenume"], FILTER_SANITIZE_STRING);
$nr_tlf      = filter_var($_POST["nr_tlf"], FILTER_SANITIZE_STRING);
$adresa_email     = filter_var($_POST["adresa_email"], FILTER_SANITIZE_STRING);
$nr_comanda     = filter_var($_POST["nr_comanda"], FILTER_SANITIZE_STRING);
$data_comanda     = filter_var($_POST["data_comanda"], FILTER_SANITIZE_STRING);
$nr_factura     = filter_var($_POST["nr_factura"], FILTER_SANITIZE_STRING);
$den_prod     = filter_var($_POST["den_prod"], FILTER_SANITIZE_STRING);
$culoare_prod     = filter_var($_POST["culoare_prod"], FILTER_SANITIZE_STRING);
$cantitate     = filter_var($_POST["cantitate"], FILTER_SANITIZE_STRING);
$motiv     = filter_var($_POST["motiv"], FILTER_SANITIZE_STRING);



if(empty($nume_prenume)) {
    $empty[] = "<b>nume_prenume</b>";       
}
if(empty($nr_tlf)) {
    $empty[] = "<b>nr_tlf</b>";
}   
if(empty($adresa_email)) {
    $empty[] = "<b>adresa_email</b>";
}
if(empty($nr_comanda)) {
    $empty[] = "<b>nr_comanda</b>";
}
if(empty($data_comanda)) {
    $empty[] = "<b>data_comanda</b>";
}
if(empty($den_prod)) {
    $empty[] = "<b>data_comanda</b>";
}
if(empty($culoare_prod)) {
    $empty[] = "<b>data_comanda</b>";
}





if(!empty($empty)) {
    $output = json_encode(array('type'=>'error', 'text' => implode(", ",$empty) . ' obligatoriu!'));
    die($output);
}

// if(!filter_var($email2, FILTER_VALIDATE_EMAIL)){ //email validation
//     $output = json_encode(array('type'=>'error', 'text' => '<b>'.$email2.'</b> is an invalid Email, please correct it.'));
//  die($output);
// }

//reCAPTCHA validation
if (isset($_POST['g-recaptcha-response'])) {

    require('component/recaptcha/src/autoload.php');        

    $recaptcha = new \ReCaptcha\ReCaptcha(SECRET_KEY, new \ReCaptcha\RequestMethod\SocketPost());

    $resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);

      if (!$resp->isSuccess()) {
            $output = json_encode(array('type'=>'error', 'text' => '<b>Captcha</b> Validation Required!'));
            die($output);               
      } 
}


// bag in db


$sql0 = "INSERT INTO retur (nume_prenume, nr_tlf, email, nr_comanda, data_comanda, nr_factura, den_prod, culoare_prod, cantitate_prod, motiv_retur)
 VALUES ('$nume_prenume', '$nr_tlf', '$adresa_email', '$nr_comanda', '$data_comanda', '$nr_factura', '$den_prod', '$culoare_prod', '$cantitate', '$motiv')";
mysqli_query($conn, $sql0);
 }

Так что в основномэто формула для возврата товаров, и если у него есть больше товаров для возврата, я добавил этот jquery, чтобы добавить больше полей, и я хочу вставить данные в базу данных, тогда я получу данные и покажу их в моей CMS.

1 Ответ

0 голосов
/ 07 марта 2019

1. Вам не нужно писать столько кода в ajax. Вы можете легко использовать serialize():

Уменьшите код ajax с помощью кода ниже:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
var form=$("#your_form_id");
$("#Your_submit_id").click(function(){
$.ajax({
        type:"POST",
        url:"URL",
        data:form.serialize(),
        success: function(response){
            console.log(response);  
        }
    });
});
});
</script>

2.Для добавления нескольких товаров:
-Вы должны создать каждое поле ввода в виде массива для информации о продукте, как:

  <input type="text" name="prod_name[]">
  1. Этот оператор массива хранит каждый индекс информации о продукте. если ты используйте обычную переменную, тогда она будет публиковать только последний продукт подробности.
  2. В коде Php нужно учитывать количество название продукта и цикл использования для получения информации о каждом продукте.

    for($i=0;$i<count($prod_name);$i++) { //Insert/fetch All Values like : $prod_name[$i] }

-Когда вы нажмете на кнопку Добавить, просто создайте клон ранее доступных div.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...