2016-12-12 3 views
-1

У меня есть форма, которую можно редактировать пользователем. Я хочу, чтобы форма обновлялась без перезагрузки страницы с помощью Ajax. Новые значения заменят старые значения. Для полей ввода im считывание значений из запроса php SQL. Таким образом, пользователь сможет увидеть детали с первого взгляда. Проблема в том, когда этот код работает, не получая никакой ошибки и никакого результата. Я попробовал console.log.Обновить поля формы с AJAX и PHP

Я получаю значение пользователей из цикла while.

if(isset($_GET['edit_user'])){ 
    $the_user_id = $_GET['edit_user']; 
    $query = "SELECT * FROM users WHERE user_id = $the_user_id "; 
    $select_users_query = mysqli_query($connection,$query); 

    while($row = mysqli_fetch_assoc($select_users_query)) { 
     $user_id  = $row['user_id']; 
     $user_firstname = $row['first_name']; 
     $user_lastname = $row['last_name']; 
     $user_contact = $row['mobile']; 


     $_SESSION["id"] = $user_id; 
    } 
} 

Ajax код:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $('#update').click(function(){ 
     var user_id = $("#user_id").val(); 
     var firstname = $("#firstname").val(); 
     var lastname = $("#lastname").val(); 
     var contact = $("#mob").val(); 
     var dataString = 'firstname='+firstname + 'lastname='+lastname + 'contact='+contact+'user_id='+user_id; 

     if(firstname=='' || lastname=='' || contact=='') { 
      alert("Please fill all fields"); 
     } else { 
      $.ajax({ 
       type: "POST", 
       url: "update.php", 
       data: dataString, 
       cache: false, 
       success: function(html){ 
        alert(html); 
       } 
      }); 
     } 
     return false; 
    }); 
}); 
</script> 

Форма Я хочу, чтобы иметь возможность редактировать без перезагрузки страницы.

<form method="post" name="form"> 
    <div style="position:relative; left:120px;"> 
     <p>Title: <select><option value="Mr">Mr</option> <option value="Mrs">Mrs</option><option value="Miss">Miss</option><option value="Ms">Ms</option><option value="Dr">Dr</option></select></p> 
     <p>First name *: <input type="text" id="firstname" name="firstname" value="<?php echo $user_firstname; ?>" style="width:50%;"></p> 
     <p>Last name *: <input type="text" id="lastname" name="lastname" value="<?php echo $user_lastname; ?>" style="width:50%;"></p> 
     <p>Contact telephone number *: <input type="text" id="mob" name="contact" value="<?php echo $user_contact; ?>" style="width:50%;"></p> 
        <p><input type="hidden" id="user_id" name="user_id" value="<?php echo $_SESSION['user_id']; ?>" style="width:50%;"></p> 
     <button class="btn btn-primary btn-lg" id="update" name="update" role="navigation" type="submit" style="border-radius:0px;">Save & continue</button> 
    </div> 
</form> 

update.php,

  <?php require_once("includes/db.php"); ?> 

      if(isset($_POST['update'])){ 

       $firstname = mysqli_real_escape_string($_POST['firstname']); 
      $lastname = mysqli_real_escape_string($_POST['lastname']); 
      $contact = mysqli_real_escape_string($_POST['contact']); 
      $user_id = mysqli_real_escape_string($_POST['user_id']); 

       $query = "UPDATE users 
      SET first_name ='". $_POST['firstname'] . "', 
       last_name ='". $_POST['lastname'] . "', 
       mob ='". $_POST['contact'] . "' 

     WHERE 
      user_id = '". $_POST['user_id'] . "'"; 



     $edit_user_query = mysqli_query($connection,$query); 



}      
+0

где эта функция 'confirm()' и что она делает? –

+0

[Маленький Бобби] ​​(http://bobby-tables.com/) говорит *** [ваш скрипт подвержен риску инъекций SQL.] (Http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php) *** Узнайте о [подготовленных] (http://en.wikipedia.org/wiki/Prepared_statement) операторах для [MySQLi] (http://php.net/manual /en/mysqli.quickstart.prepared-statements.php). Даже [избегая строки] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) небезопасно! [Не верю?] (Http://stackoverflow.com/q/38297105/1011527) –

+0

Привет, Фред - теперь я получил ответ от ajax. Но запрос update.php не работает. Функция confirm() - это функция i, созданная в functions.php. Ничего общего с этим. Не беспокойтесь об этом. – steven

ответ

-1

Вы не установить идентификатор пользователя. Убедитесь в том, чтобы отправить идентификатор пользователя в вашем АЯКС запросе или получить его на основе приведенных данных

update-> Вы должны изменить вас Jquery ниже

var dataString = 'firstname='+firstname + '&lastname='+lastname + '&contact='+contact; 

Я изменил бы update.php ниже кода

<?php 
require_once("includes/db.php"); 

//get user_id from session data or from call to db to combine session id with user_id 
//this is depending on where you store this data for a currently logged in user 
$userid = $_SESSION['user_id']; 

if (isset($_POST['firstname'], $_POST['lastname'], $_POST['contact'])) { 

$firstname = mysqli_real_escape_string($_POST['firstname']); 
$lastname = mysqli_real_escape_string($_POST['lastname']); 
$contact = mysqli_real_escape_string($_POST['contact']); 

$query = "UPDATE users 
SET first_name ='" . $_POST['firstname'] . "', 
last_name ='" . $_POST['lastname'] . "', 
mob ='" . $_POST['contact'] . "' 

WHERE 
user_id = '" . $userid . "'"; 


$edit_user_query = mysqli_query($connection, $query); 
} 
else { 
echo "invalid response"; 
} 

?> 
+0

hans - можете ли вы изменить мой код, чтобы я мог понять? – steven

+0

Не из моего мобильного :) – hans

+0

ok. вопрос остается нерешенным. – steven

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