Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 30

Значение из _$GET пропадает при осуществлении submit

08.01.2018, 21:20. Показов 1723. Ответов 6

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня проблема с _$GET, мне нужна форма для изменения значений из БД, для этого на форме с объектом есть специальная ссылка, которая перенаправляет на страницу с формой для изменения значения. В зависимости от id объекта на форме изменяются значения. То есть id_users нужен для идентификации и правильной адресации, для этого я передаю это значение через _$GET. Сначала оно все правильно перенаправляется, на форме инфа нужного объекта из БД. Но при нажатии на кнопку ИЗМЕНИТЬ этот айди теряется тем самым не давая инфе обновится. Помогите, пожалуйста, в чем проблема?
Ссылка из начальной страницы на ту, что с формой:
HTML5
1
  <a href="edit_accaunt.php?id_users='.$accaunt["id_users"].'"> Изменить</a>
Затем вот код на самой форме:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php 
    ini_set('display_errors',1);
error_reporting(E_ALL); // output errors http://phpfaq.ru/debug
    
    $link = mysqli_connect('localhost', 'admin', '0000', 'db_akzhol');
  $res=mysqli_query($link,"set names utf8");
  
  
  $id_users = $_GET["id_users"];
 
$result_edit= mysqli_query( $link, " SELECT * FROM accaunt_workers WHERE id_users='$id_users' ");
  $row = mysqli_fetch_assoc($result_edit);
  
    echo $id_users; 
 
  
if (isset($_POST['edit'])){
    $username = mysqli_real_escape_string($link, trim($_POST['email'])); //обезопасивает сгл запросы
    $password1 = mysqli_real_escape_string($link, trim($_POST['password1'])); 
    $password2 = mysqli_real_escape_string($link, trim($_POST['password2']));
    $privilege = mysqli_real_escape_string($link, trim($_POST['privilege']));
    $phone_number = mysqli_real_escape_string($link, trim($_POST['phone_number']));
    $name = mysqli_real_escape_string($link, trim($_POST['name']));
    $surname = mysqli_real_escape_string($link, trim($_POST['surname']));
    
    if (!empty($username) && !empty($password1) && !empty($password2) && !empty($privilege)  && !empty($phone_number) 
        && ($password1 == $password2)) {
        
        
            $query1 = "UPDATE accaunt_workers SET 
            email ='$username' , password='$password2' , name ='$name', surname= '$surname', privilege= '$privilege', phone_number= '$phone_number' WHERE id_users='$id_users'";
            $res_edit = mysqli_query($link, $query1);
            if ($res_edit = TRUE) {
            echo 'Успешное обновление'; 
echo $id_users;             
            }
            else {echo ' обновление не удалось'; }
          
            
        }
        else {
             echo 'заполните все поля';
        }
        
        
}
 
// я посмотрела это видео https://youtu.be/ZmKJ5Pg6CRE ?>
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
                <div id="add_smth"> 
                 <fieldset class="add_smth">       
                        <form action="edit_accaunt.php?id=<?php echo $id_users; ?>" method="POST"> 
                             <P> <strong> Редактирование данных сотрудника в базе данных </strong> </p>
                             <label for="name">Имя сотрудника:</label> <br><br>
                             <input class='add_smth' type="text" name="name"  required="required" value="<?php echo $row['name'];?>"><br><br>
                             <label for="surname">Фамилия сотрудника:</label> <br><br>
                             <input class='add_smth' type="text" name="surname"  required="required" value="<?php echo $row['surname'];?>"><br><br>
                             
                             <label for="username">Адрес электронной почты:</label> <br><br>
                             <input class='add_smth' type="email" name="email"  required="required" value="<?php echo $row['email'];?>"><br><br>
                
                             <label for="password">Пароль: (он должен содержать минимум 8 символов: латинские буквы и цифры)</label><br><br>
                             <input class='add_smth'  type="text" name="password1" required="required" value="<?php echo $row['password'];?>"><br><br>
                             <label for="password">Подтвердите пароль, введите его еще раз:</label><br>
                             <input class='add_smth'  type="text" name="password2" required="required" value="<?php echo $row['password'];?>"><br><br>
                              <label>Ваш номер телефона:</label><br>
                             <input class='add_smth'  type="text" name="phone_number" required="required" value="<?php echo $row['phone_number'];?>"><br><br>
                             <label>Выберите привелегию, которой будет обладать сотрудник при работе с сайтом:</label><br>
                             <select name="privilege" size="3" required value="<?php echo $row['privilege'];?>">
     <option disabled>Выберите привелегию</option>
    <option  value="Все">Все</option>
    <option value="Работа с клиентами: комментарии и предложенные темы">Работа с клиентами: комментарии и предложенные темы</option>
    <option value="Работа с содержимым: материалы и рекомендации">Работа с содержимым: материалы и рекомендации</option>
  
   </select>
                             
                            <br><br> <button class= 'add_smth' type="submit" name='edit'> Сохранить изменения </button> <br>
                        </form>

Вот что выводится:
Notice: Undefined index: id_users in F:\xampp\htdocs\edit_accaunt.php on line 27 Успешное обновление
Раз уже есть "Успешное обновление" , то запрос выполняется, просто айди исчезает
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2018, 21:20
Ответы с готовыми решениями:

Ошибка при осуществлении поиска
Помогите. При нажатии на кнопку Найти-появляется сообщение с ошибкой.

Сбрасывается значение при submit
Что нужно сделать что бы оно изменяло переменную внутри и корректно видело? &lt;form method=&quot;post&quot;&gt; &lt;input...

PHP и submit - при повторном выборе возвращается пустое значение
На событие onChange выпадающего списка поставлен submit формы. Так вот, он работает буквально через раз: первый раз выбираю из списка -...

6
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
08.01.2018, 23:44
В 27 строке вроде кусок if торчит. А сама переменная $id_users в 14 строке выводится?
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
09.01.2018, 01:31
PHP
1
if ($res_edit = TRUE) {
А это проверка на успешное обновление? В таком случае сервер баз данных можете даже не поднимать, у вас данные могут прямо в эфире храниться и обновляться
0
27 / 26 / 11
Регистрация: 19.06.2014
Сообщений: 158
10.01.2018, 14:33
Добавьте в форму скрытое поле:
HTML5
1
<input type="hidden" name="id_users" value="<?=$id_users?>">
И вместо массива $_GET используйте массив $_REQUEST. Т.е. получайте ID через $_REQUEST["id_users"]
0
34 / 11 / 6
Регистрация: 09.01.2018
Сообщений: 189
11.01.2018, 01:40
1) $id_users = $_GET["id_users"];

Лучше таки $id_users = @intval($_GET["id_users"]); // чтобы всякую гадость в базу не пихали


2) edit_accaunt.php?id=<?php echo $id_users; ?>

Непонятно каким образом данные из ПХП передаются в ХТМЛ форму. Отсюда непонятно откуда форме знать про $id_users.


3) Вообще если у вас форма изначально открывается по адресу где есть id=... и отправлять форму планируете на ту же страницу, можете оставить поле action="" пустым. И раз уж $_GET является суперглобальным массивом, можете прямо в ХТМЛ его и использовать в виде $_GET['id'] или $_GET['id_users'] (определитесь что у вас там правильно на самом деле)


4) if ($res_edit = TRUE)

Один знак равенства это "присвоение", которое ВСЕГДА истинно. То есть эта конструкция всегда срабатывает, и вовсе не говорит о том что случилось с запросом к базе. Правильно if ($res_edit === true)
0
62 / 63 / 28
Регистрация: 10.01.2018
Сообщений: 360
11.01.2018, 20:23
А зачем вообще формировать ссылку с идентификатором пользователя? Я так понимаю это очень стремный кусок админки где изменяются данные пользователя. Получайте все данные юзера в форму. Поле id_user пусть будет скрыто или readonly чтоб случайно не изменить. Далее тыкаем по submit-у и ловим идентификатор в $_POST - е.
0
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 30
11.01.2018, 22:55  [ТС]
Спасибо за ответы!
Но оказывается я просто неправильно ввела имя айди
в строчке
HTML5
1
<form action="edit_accaunt.php?id=<?php echo $id_users; ?>" method="POST">
id надо было поменять на id_users
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.01.2018, 22:55
Помогаю со студенческими работами здесь

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

не работает [If (Request.QueryString('Submit') = 'Оформить заказ') ],т.е. Request.QueryString('Submit') не выдает значение.
Помогите ,пожалуйста!!!!!!! Я только учусь ASP есть у меня проблема в том,что не работает ,т.е. Request.QueryString('Submit') не...

Ob_start в функции добавляет все кнопки формы, а без функции submit пропадает
Учусь использовать функции буферизации, в том числе и для вывода формы. Вроде все получалось. ob_start обычно вызывал в теле функции и...

Установленное значение глобальной переменной CLASSPATH пропадает при следующем запуске терминала
Здравствуйте! Подскажите пожалуйста, почему когда я устанавливаю значение глобальной переменной CLASSPATH, то оно пропадает при следующем...

При входе в игру пропадает изображение потом появляется и пропадает
Купил новый монитор, сначала подключил через переходник HDMI&gt;&gt;VGA. Всё работало хорошо, пошёл за кабелем HDMI, купил, подключил, всё...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru