2015-02-16 1 views
-1

Привет, ребята, я новичок в программировании, и у меня есть быстрый вопрос, и, надеюсь, это не слишком много. Я пытаюсь дать пользователям моего тестового веб-сайта возможность обновлять их информацию. Я использую следующий код:Как дать пользователям возможность обновлять информацию

$mysqli = mysqli_connect('localhost', 'root', 'testpass', 'testdatabase') 
or die(mysqli_error()); 


echo "<h2>How would you like to update your account $_SESSION[username]?</h2>"; 
$display = <<<END 
<h4> Update your username here: <br/></h4> 
<form method="POST" action="$_SERVER[PHP_SELF]"> 
<input type="text" name="update_username"/> 
<input type="submit" name="submit" value="Update"/> 
</form> 



END; 
echo $display; 
$update_username = $_POST['update_username']; 
$current_username = $_SESSION['username']; 


$sql_update = "UPDATE users SET username = '$update_username' WHERE username = '$current_username'"; 
$result_update = mysqli_query($mysqli, $sql_update) or die (mysqli_error($mysqli)); 

Приведенный выше код обновляет их информацию, но он обновляется только один раз. Когда я проверяю базу данных после ее обновления, она изменилась на то, что я тоже изменил. Затем я попытаюсь изменить его снова, но он не изменился, поэтому я выхожу из системы и снова загружаюсь. Когда я вхожу в систему, я меняю его, но на этот раз, когда я смотрю на базу данных, нет имени пользователя. Я выхожу из системы и снова загружаюсь. Я меняю его снова, и он действительно меняется. Я должен проходить этот же процесс каждый раз, когда я пытаюсь изменить имя пользователя (или любую другую информацию), и это становится очень раздражающим. У вас есть идеи по поводу того, почему это делается? Спасибо!

+1

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

+0

Используйте условное выражение, – starkeen

+1

Я думаю, что у вас может быть проблема с кешем сеансов. Вам нужно будет указать соответствующий код для используемых страниц. Кроме того, используя 'isset()' для переменных $ _POST и $ _SESSION. –

ответ

0

Для материала базы данных вы хотите отслеживать все по идентификаторам, поэтому первое поле в большинстве каждой таблицы будет «id», задано как первичный ключ с автоматическим приращением. Тогда при обновлении вы будете делать WHERE id = $ userID. Когда они войдут в систему, идентификатор пользователя будет сохранен в сеансе, а также имя пользователя, и любые запросы будут ссылаться на них по id. Это также делает его намного проще/быстрее для запроса/дорожки вещи, когда вы начинаете делать стол присоединяется

0

попробуйте следующее

END; 
echo $display; 
$update_username = $_POST['update_username']; 
$current_username = $_SESSION['username']; 
$current_id = mysql query select id where username = $current_username 

$sql_update = "UPDATE users SET username = '$update_username' WHERE id = '$current_id'"; 
$result_update = mysqli_query($mysqli, $sql_update) or die (mysqli_error($mysqli)); 

надеюсь, что вы можете исправить мой псевдо-код в $current_id переменной

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