Как опубликовать переменную javascript и HTML-форму через пост $ .ajax? - PullRequest
0 голосов
/ 28 августа 2018

Я разместил две переменные javascript в php-файле, а также в виде html-формы, используя Ajax отдельно. Я хочу использовать две переменные javascript с опубликованными значениями формы, но я не уверен, как это сделать.

<script>
   $(document).ready(function() {
      var aucid = "<?php echo $auctionID; ?>";
      var userid = "<?php echo $userID; ?>";
  $.ajax({
    url: "JqueryPHP/HighestBid.php",
    method: "POST",
    data: {'auctionid': aucid, 'userid' : userid },
    success: function (result) {
        $('#price').html(result);
    }
});


  $('form').bind('submit', function (event) {

 
event.preventDefault();// using this page stop being refreshing 



          $.ajax({
           type: 'POST',
            url: 'JqueryPHP/HighestBid.php',
            data: $('form').serialize(),
            success: function () {
              alert('form was submitted');
            }
          });

        });
        
        
  });

Я разместил две переменные javascript отдельно в форме.

<form> 

<input type="number" min="<?php echo $startingprice ?>" step="any" style="width: 10em;" size="35" name="newbid" id="newbid" tabindex="1" class="form-control"  placeholder="New Bid €" value="" required>
 <input type="submit" name="submit" id="submit" tabindex="2" class="form-control btn btn-login" style="width: 14em" value="submit">
										                           
 </form>

<h4 class="price">Highest bid : <span id="price"></span></h4>

Когда я передаю значение userID в класс span, вы можете видеть, что оно имеет значение 2.

enter image description here

//JqueryPHP/HighestBid.php'

$auctionid;
$userID;

  $auctionid = $_POST['auctionid'];
  $userID = $_POST['userid'];
  echo $userID;
  
  
  if (isset($_POST['newbid'])) 
  {
  $newbid=$_POST['newbid'];
 
  
    $conn = new mysqli('localhost', 'root', '', 'auctionsite');
 $sql = 'INSERT INTO auction (useridhighestbid)VALUES("'.$userID.'")';
 if(@$conn->query($sql)){  //execute the query and check it worked    
                            return TRUE;
                        } 
         
  }

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

Как бы я отправил значение формы с переменными javascript, чтобы я мог использовать оператор обновления для обновления своей базы данных?

enter image description here

Ответы [ 4 ]

0 голосов
/ 29 августа 2018

Отправьте вашу форму в скрипт php. Когда пользователь входит в систему, извлеките его идентификатор из БД и поместите его в сеанс, подобный этому

 switch(isset($_POST['login'])):  
        case 'Register':
        $email = htmlspecialchars(trim($_POST['em']), ENT_QUOTES, 'UTF-8');
        $password = htmlspecialchars(trim($_POST['pw']), ENT_QUOTES, 'UTF-8');

        // check if the combination fname/lname/email is already used
        include('./Models/log_check.php');
        unset($_SESSION['ID'],$_SESSION['role']);
        $_SESSION['ID'] = $row['ID'];
        $_SESSION['role'] = $row['role'];

Таким образом, вы можете использовать идентификатор в вашей модели / запросе:

<?php
        /* Jointure sama RDV des vets */
        $query =
        "SELECT
        appointment.start,
        appointment.app_day,
        patients.pet_name,
        patients.breed,
        patients.ID,
        clients.last_name,
        clients.first_name,
        appointment.type,
        appointment.canceled
        FROM appointment
        JOIN patients
        JOIN clients
        WHERE clients.users_ID = patients.owner_ID
        AND patients.ID = appointment.patients_ID
        AND appointment.vets_ID = (SELECT ID FROM vets WHERE users_ID = :ID)
        AND appointment.canceled = 'n'
        AND WEEK(appointment.app_day) = WEEK(:date)
        ORDER BY appointment.app_day,appointment.start";
        $query_params = array(':ID' => $_SESSION['ID'],
                                ':date' => $date);
        try {
            $stmt = $db->prepare($query);
            $result = $stmt->execute($query_params);
        }catch(PDOException $ex){
            die("Failed to run query: " . $ex->getMessage());
        }
    ?>

Вставить вместо SELECT

0 голосов
/ 28 августа 2018

Вы можете добавить данные с сериализацией, как это в вызове ajax

data: $("#form_id").serialize() + '&xyz=' + xyz
0 голосов
/ 28 августа 2018

Если вы правильно проанализировали переменные, вы можете использовать:

$_POST['JavaScript_variable_name_goes_here'];

или

$_GET['JavaScript_variable_name_goes_here'];

для получения переменных в формате PHP, в зависимости от вашего метода AJAX.

Прямой пример из вашей функции AJAX:

<?php $auctionId=$_POST['auctionid']; ?>

Однако я бы рекомендовал вам сделать следующее: когда пользователь вошел в систему, вы установили его userId в качестве переменной сеанса, которую вы можете использовать везде, где пользователь «уходит». Таким образом, вы не анализируете важный элемент данных через JavaScript, который обрабатывается на стороне клиента, а это означает, что он полностью редактируется пользователем с помощью инструментов разработчика для браузера. То же самое относится и к аукциону. Я бы порекомендовал логику переменных сеанса php по тем же причинам. Вы всегда можете перезаписать переменную сеанса auctionId другим аукционом в зависимости от того, какой аукцион «используется».

Еще одна веская причина, по которой вы устанавливаете userId в качестве переменной сеанса, заключается в том, что у вас никогда не возникнет проблем с доступом к переменной в любом месте , если вы помните, чтобы установить следующее в самом начале вашего PHP файлы:

<?php session_start(); ?>

Синтаксис PHP / SQL для расширения mysqli_ * будет следующим:

$conn=mysqli_connect("localhost", "root", "", "auctionsite");
$sql="INSERT INTO auction SET useridhighestbid='$userID'";
mysqli_query($conn, $sql);

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

0 голосов
/ 28 августа 2018

Установите два скрытых входа для сохранения aucid и userid следующим образом:

<form> 

<input type="number" min="<?php echo $startingprice ?>" step="any" style="width: 10em;" size="35" name="newbid" id="newbid" tabindex="1" class="form-control"  placeholder="New Bid €" value="" required>
 <input type="submit" name="submit" id="submit" tabindex="2" class="form-control btn btn-login" style="width: 14em" value="submit">

        <input name='aucid' style="display:none"/>  
        <input name='userid' style="display:none"/>                                                        
 </form>





<script>
    $(document).ready(function() {
          $("input[name='aucid']").val("<?php echo $auctionID; ?>");
          $("input[name='userid']").val("<?php echo $userID; ?>");

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