2013-09-18 4 views
-1

Я пытаюсь собрать базовое приложение для координации на своем рабочем месте, у меня есть уникальные логины для каждого сотрудника. Часть приложения должна иметь дисплей (с помощью Ajax для обновления), показывающий, кто доступен или недоступен для загрузки следующего случая. Проще говоря; Я могу получить базу данных для обновления с использованием исправленных значений без особых трудностей, но я хочу, чтобы сценарий обновления был динамическим, так как он обновит правильный статус пользователя.Обновление таблицы базы данных с использованием переменных сеанса - как?

Это фрагмент сценария update.php;

<?php 
    require_once("data/connect.php"); 
    $user_name = $_SESSION['user_name'];  
    mysqli_query($con,"UPDATE users SET status = 'AVAILABLE' WHERE user_name='$user_name'");  
    mysqli_close($con); 
    exit; 
?> 

Как я уже говорил выше, если значение в секции WHERE является фиксированным значением, например, имя по определенным пользователям - это работает. Однако после изменения переменной сеанса это не так. Есть идеи?

UPDATE:

ИТАК после выполнения ниже предложения

<?php 
    require_once("data/connect.php"); 
    session_start(); 
    $user_name = $_SESSION['user_name']; 
    var_dump($user_name); 

    mysqli_query($con,"UPDATE users SET status = 'ONLINE' WHERE user_name = '$user_name'"); 

    mysqli_query($con, $query); 
    var_dump($query, $con->error); 
    mysqli_close($con); 
    exit; 

Я получаю это;

NULL NULL string(0) "" 

Дополнительная информация; Если я использую верификации $ _SESSION другими способами, он отлично работает. Т.е.;

<?php 
require_once("data/connect.php"); 

echo $_SESSION['user_name']; 
?> 

Это прекрасно работает, чтобы заполнить различные имена пользователей или что когда-либо он установлен на эхо от сессии, но когда я пытаюсь использовать его в качестве переменной для записи в базе данных/таблицы, тогда падает , Даже после размещения «session_start()» в начале.

Дальнейшее обновление

Я попытался запустить скрипт на главной странице, и при загрузке он запускает скрипт, используя переменную сеанса! Но все же не выполняется при запуске как вызываемый файл. Не уверен, что я сделал не так.

+2

Вы проверили перед использованием значений сеанса .. session_start() должен быть на месте – Sundar

+0

Я отредактировал выше, показывая изменения. Я добавил session_start() - и снова запустил скрипт php с предлагаемыми линиями отладки. Вернулся; NULL NULL string (0) "", и он не выполнил обновление. – Tactless

ответ

0

начало сеанса необходимо перед использованием массива

<?php 

require_once("data/connect.php"); 

//you missed this 
@session_start(); 

$user_name = $_SESSION['user_name']; 

//validate the user name 
if(!empty($user_name)) 
{ 
    mysqli_query($con,"UPDATE users SET status='AVAILABLE' 
    WHERE user_name='$user_name'"); 

    mysqli_close($con); 
}else{ 

     echo "user name is empty"; 

    //check your session is proper or not 
     print_r($_SESSION); 


} 
exit; 
+0

Я исправил недостаток session_start() - и я вернул это; NULL NULL string (0) "" – Tactless

+0

проверить обновленный код – Sundar

+0

Это интересно, оно возвращается с именем пользователя emptyArray() Однако другие использования $ _SESSION ['user_name'] заполняются данными. Я скопировал вышеуказанный код точно, и вот что возвращается. Есть идеи? – Tactless

0

сеанса Перед любой информацией сессии запросов, вы должны сказать PHP вы хотите использовать функциональные возможности сеанса: после require линии, но до $user_name = $_SESSION['user_name']; строки введите session_start();

+0

Wow спасибо, ребята, не ожидал такой быстрой помощи! Во всяком случае, я исправил отсутствие session_start() - и я вернул это; NULL NULL string (0) "" – Tactless

0

Проблема, по-видимому, связана с тем, что моя сессия переносится на php-скрипт, который я опубликовал, вызывая мою основную страницу. Я включил его в основную страницу и затем выполнил запись в журнале &.

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