2016-12-12 8 views
0

Я написал код, где мне нужно поддерживать последний вставленный идентификатор строки во всем приложении без обновления страницы, на которой эта страница имеет пошаговые формы без перезагрузки страницы. Я написал код для этого, но последний второй вставил id, а вместо последнего вставленного id. Здесь первая вставка происходит через вызов jquery ajax, где файл будет вызываться в ajax в этом файле. Сохраните переменную сеанса. Мой код ниже:как сохранить последний вставленный идентификатор и сохранить в сеансе?

<form class="" id="myFOrm" method="post" id="my_form_id" > 
<input type="hidden" id="user_id" name="user_id" value="<?php echo $fet['id']; ?>"> 
<div class="form-group"> 
<input type='text' name=''> 
</div> 
<div class="form-group"> 
<input type='text' name=''> 
</div> 
<a onclick="return submitFunction('1', '2')" >Submit</a> 

мой JS код:

function submitFunction(current, next) { 
var data = new FormData($('#myFOrm')[0]);/ 
    $.ajax({ 
     type:"POST", 
     url:"insert.php", 
     data:data, 
     contentType: false, 
     cache: false, 
     processData: false, 
     async:false, 
     dataType: 'json', 
     success:function(response) 
     { 
      alert(response); 
     } 
} 

insert.php

<?php 
session_start(); 
$sql = "INSERT INTO table_name(col1,col2,col3,col4) 
     VALUES ('".$val1."','".$val2."', '".$val3."', '".$val4."')"; 
if ($conn->query($sql) === TRUE) 
{ 
    $my_id = mysqli_insert_id($conn); 

    unset($_SESSION['my_id']); 

    $_SESSION['my_id'] = $my_id; 
    echo $_SESSION['my_id']; 
} 
else { 
echo "Error: " . $sql . "<br>" . $conn->error; 
} 

Моя следующая форма, в которой это значение сеанса нужно, это:

<form id="myFOrm1" class="form-label-left" method="post" id="my_form_id"> 
<input type="hidden" id="user_id" name="user_id" value="<?php echo $fet['id']; ?>"> 
<input type="hidden" id="my_id" name="my_id" value="<?php echo $_SESSION['my_id']; ?>"> 
<div class="form-group"> 
<input type="text" name="field1">               
</div> 
<div class="form-group"> 
<input type="text" name="field2">               
</div> 
<div class="form-group"> 
<input type="text" name="field3">               
</div> 

Может кто-нибудь, пожалуйста, скажите мне, что я делаю wron г? Заранее спасибо.

+0

после вставки сценария запуска он будет перенаправлен на следующей форме, т.е. последняя форма, которую я написал выше, где нужен идентификатор сеанса. мое требование после входа в систему пользователя, он перенаправляется на страницу панели мониторинга, где есть всего 7 шагов, вставка сделана в шаге 1, которую я написал вначале (см. выше). все 7 шагов будут продолжены без обновления страницы через вызовы ajax. –

+0

Я расскажу вам историю. сначала, как я сказал, всего 7 шагов. для каждого шага есть таблица бэкэнд базы данных. В шаге-1 я вставляю данные в таблицу-1, затем получаю автоматический инкремент. id из этой таблицы. Я хочу сохранить этот идентификатор в сеансе, потому что, поскольку мое приложение основано на идентификаторе таблицы step-1, все дальнейшие шаги будут выполняться (все наше приложение запускается). Я думал о том, чтобы использовать сеансы для этого, пожалуйста, предложите, как поддерживать такую ​​информацию или есть другой способ? –

ответ

0

Пожалуйста, удалите этот

unset($_SESSION['my_id']); 
+0

сначала, спасибо за быстрый ответ. Я пробовал это, но мне не повезло, я добираюсь до последнего вставленного идентификатора, например, если последний вставленный идентификатор строки равен 100 утра, получает значение 99 в сеансе, но после последнего вставленного идентификатора, отображаемого правильно в предупреждении. –

-3

Вы должны сначала вставить идентификатор в базу данных, а затем, если вы хотите, чтобы принести его потом забрать его и после этого вставить другой идентификатор на этом месте

+0

Возможно, вам также понадобится объяснение с помощью кода –

+0

У меня был этот скрипт –

0

попробовать это :

<?php 
session_start(); 
$sql = "INSERT INTO table_name(col1,col2,col3,col4) 
     VALUES ('".$val1."','".$val2."', '".$val3."', '".$val4."')"; 

$result = $conn->query($sql); 
if (!$result) { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} else { 
    while ($raw = $conn->mysqli_fetch_array($result)) { 
     $object_array[] = static::instantiate($row); 
    } 
    $_SESSION['my_id'] = $object_array->first()->id; 
    echo $_SESSION['my_id']; 
} 

вы должны написать метод создания экземпляра для того, чтобы вызвать его в:

private static function instantiate ($record) { 
    $object = new static; 
    foreach($record as $attribute=>$value) { 
     if($object->has_attribute($attribute)) { 
      $object->$attribute = $value; 
     } 
    } 
    return $object; 
} 

и, очевидно, в модуле таблицы, вы должны предоставить список полей, которые являются «заливкой»

т.е.

<?php 
    class User extends DatabaseObject { 
     public static $table_name = "users"; 
     public static $fillable = array('id', 'username', 'full_name', 'email', 'dob'); 

    } 
+0

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

+0

@prasadchinthala Добавлены изменения. –

+0

У меня очень маленькое приложение, которое я создал как часть моей базовой подготовки PHP. –