Номер сообщения AJAX в виде строки - PullRequest
0 голосов
/ 07 ноября 2019

Я новый ученик и мне нужна ваша поддержка.

У меня есть Echo $ ref;($ ref = number) и передача значения через AJAX на другую страницу для некоторых операций, но это значение всегда передается в виде строки, и если я использую функцию intval ($ _ post (['$ ref1'])), она дает нулевое значение.

php code Пользователь заполнит форму и нажмет на создание нового кода belwo ..

<?php
 session_start();

  require "includes/config.php";
  include('header.php');

?>



<div class='container'>

<div style='margin-top:10px'>
  <a href='welcome.php' class='btn btn-primary'>User Profile</a>
  <a href='invsummarymaindd.php' class='btn btn-primary'>Back Invoice Summary</a>
  <a href='logout.php' class='btn btn-danger'>Sign Out of Your Account</a>
 </div>

 <div class='row col-md-12' style='margin-top:15px'>

 <div class='col-md-3'>
   <input type='text' class='form-control' name='vendor' id='vendor' placeholder='Supplier Name'>
  </div>

  <div class='col-md-3'>
   <input type='text' class='form-control' name='vendor_email' id='vendor_email' placeholder='email'>
   </div>

   <div class='col-md-3'>
   <input type='text' class='form-control' name='vendor_person' id='vendor_person' placeholder='Name Of Person'>
   </div>

   <div class='col-md-3'>
   <input type='text' class='form-control' name='vendor_phone' id='vendor_phone' placeholder='Phone Number'>
   </div>
</div>

<div class='col-md-3'>
 <button name='create_vendor' class='btn btn-primary' id='create_vendor'> Create Invoice </button>
 <input type='hidden' name='login_user_id' id='login_user_id'>
</div>

</div>
<div id="maindata"></div>

<br/>  <br/>

<br><br>
  <script type="text/javascript" src="js/operation.js"></script>

полный код ajax-кода - ajax для передачи данных с одной страницы на другую

$('#create_vendor').on('click',function() {

  var vendor  = $('#vendor').val();
  var vendor_email  = $('#vendor_email').val();
  var vendor_person  = $('#vendor_person').val();
  var vendor_phone  = $('#vendor_phone').val();

        $.ajax({
            type: 'POST',
            url: 'vendor_info.php',
            data: 'vendor='+vendor+'&vendor_email='+vendor_email+'&vendor_person='+vendor_person+'&vendor_phone='+vendor_phone,
            success: function(ref2){
               show_details(ref2);
            }
        });
        return false;
 });

 function show_details(ref2){
   $.ajax({

       type: 'POST',
       url: 'vendor_info.php',
       data: 'ref1='+ref2,
       success: function(data){
         console.log(ref2);
         console.log(typeof(ref2));
         $('#maindata').html(data);
       }
    });
    console.log(typeof(ref2));
  }

php-код для вставки данных в mysql

<?php

if(!empty($_POST['vendor']) && !empty($_POST['vendor_email']) && !empty($_POST['vendor_person']) && !empty($_POST['vendor_phone'])){
  $max_sql = "SELECT MAX(ID) as max_number FROM supplier";
  $max_result = $mysqli->query($max_sql);

   $max_number = 1;
   while($res=$max_result->fetch_assoc()) {
     $max_number =  $res['max_number'];
     $ref2  = $max_number;
   }

$sql_add = "INSERT INTO  supplier set
        SupplierName = '".$_POST['vendor']."',
        Email = '".$_POST['vendor_email']."',
        PersonName = '".$_POST['vendor_person']."',
        CC = '".$ref2."',
        phone = '".$_POST['vendor_phone']."'";

$result = $mysqli->query($sql_add);
echo $ref2;

}
  ?>

после вставки данных данные будут отображаться на странице путем передачи значения $ ref2 через ajax, который является числом, но он становится строкой и когдаЯ использую в SQL, как показано ниже, никаких данных не появляется, но я использую жесткий номер, чтобы проверить, что он работает

<?php
 session_start();

  require "includes/config.php";
  include('header.php');

?>


<?php
if( isset($_POST['ref1']) && ($_POST['ref1'] != "") ){

$q = $_POST['ref1'];

//to check status of $q
echo $q;
echo gettype($q);

if (is_numeric($q)) { echo "Yes"; } else { echo "No"; }
if (is_string($q)) { echo "Yes"; } else { echo "No"; }

        $mquery = "SELECT * FROM  supplier WHERE ID='".$q."'";
        $result = $mysqli->query($mquery);


      echo "<table class='table'>
        <tr>
        <th>ID</th>
        <th>SupplierName</th>
        <th>Email</th>
        <th>PersonName</th>
        <th>phone</th>
        </tr>";

      while ($row = $result->fetch_assoc()){
        echo "<tr>";
        echo "<td>".$row['ID']."</td>";
        echo "<td>".$row['SupplierName']."</td>";
        echo "<td>".$row['Email']."</td>";
        echo "<td>".$row['PersonName']."</td>";
        echo "<td>".$row['phone']."</td>";
        echo "</tr>";

     }

      echo "</table>";


в поисках поддержки и код заполнен

1 Ответ

0 голосов
/ 07 ноября 2019

Трудно догадаться, так как нам не хватает части кода, но я бы начал с проверки на вкладке сети вашего браузера, что ref1 действительно был опубликован с правильным значением. Приведение его к int () в php должно работать. Я предполагаю, что, поскольку вы получаете значение 0, переменная содержит букву или другой символ.

Кроме того, вам действительно следует использовать подготовленные операторы, в противном случае ваш код уязвим для SQL-инъекций.

Примечание: для упрощения проверки вы можете использовать empty (), который выполнит isset + сравнить с "" все в одном.

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