Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Lara Semenova
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 22
1

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

08.01.2018, 21:20. Просмотров 254. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2018, 21:20
Ответы с готовыми решениями:

При нажатии на submit ничего не происходит
Для разных типов пользователя и разных статусов задачи отображается разные кнопки редактирования, с...

Пропадает значение в селекте
Кажется, я не правилньно объяснился, вот если вставить этот код в страницу &lt;html&gt; &lt;head&gt;...

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

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

Форма. Не принимает значение POST['submit']
Здравствуйте пишу диплом, столкнулся с проблемой . Есть форма, в которой вводятся значения и...

6
atanov
191 / 190 / 72
Регистрация: 26.05.2016
Сообщений: 1,222
08.01.2018, 23:44 2
В 27 строке вроде кусок if торчит. А сама переменная $id_users в 14 строке выводится?
0
Phantom-84
269 / 224 / 62
Регистрация: 15.09.2017
Сообщений: 1,064
09.01.2018, 01:31 3
PHP
1
if ($res_edit = TRUE) {
А это проверка на успешное обновление? В таком случае сервер баз данных можете даже не поднимать, у вас данные могут прямо в эфире храниться и обновляться
0
jasper-blondin
26 / 26 / 10
Регистрация: 19.06.2014
Сообщений: 154
10.01.2018, 14:33 4
Добавьте в форму скрытое поле:
HTML5
1
<input type="hidden" name="id_users" value="<?=$id_users?>">
И вместо массива $_GET используйте массив $_REQUEST. Т.е. получайте ID через $_REQUEST["id_users"]
0
ezd
9 / 9 / 5
Регистрация: 09.01.2018
Сообщений: 70
11.01.2018, 01:40 5
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
Sternman
56 / 57 / 28
Регистрация: 10.01.2018
Сообщений: 345
Завершенные тесты: 2
11.01.2018, 20:23 6
А зачем вообще формировать ссылку с идентификатором пользователя? Я так понимаю это очень стремный кусок админки где изменяются данные пользователя. Получайте все данные юзера в форму. Поле id_user пусть будет скрыто или readonly чтоб случайно не изменить. Далее тыкаем по submit-у и ловим идентификатор в $_POST - е.
0
Lara Semenova
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 22
11.01.2018, 22:55  [ТС] 7
Спасибо за ответы!
Но оказывается я просто неправильно ввела имя айди
в строчке
HTML5
1
<form action="edit_accaunt.php?id=<?php echo $id_users; ?>" method="POST">
id надо было поменять на id_users
0
11.01.2018, 22:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2018, 22:55

Notice: Use of undefined constant submit - assumed 'submit' in
Скажите пожалуйста как сделать вот эту проверку?...

Отмена скролла страницы при submit
Привет. Вопрос наверное простой. На странице есть кнопка: &lt;button type='submit' name='save'...

Обход некоторых операций при submit
Доброго времени суток. Я пока зелёный в РНР, столкнулся с проблемой, не знаю как обойти. Коротко,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru