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

PHP и работа с базой данных (замена данных)

18.12.2018, 19:09. Показов 1054. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Начал ознакомление с бд. Создал ее + таблицу, написал добавление через форму, теперь пытаюсь написать изменение данных. Собственно у меня есть поле для ввода ID После этого я провожу поиск человека с таким id в таблице и, если совпадение по id есть, вывожу пользователю новое поле для изменения информации. Для этого я использую $query ="UPDATE tablename SET surname='$new_name' WHERE id='$id'"; и получаю ошибку Undefined variable: id, хотя ранее я работал с этой переменной. Вот код
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
<?php
        require_once 'connection.php';
        $link = mysqli_connect($host,$user,$password,$database)
            or die("Error" . mysqli_error($link));
 
        $query = " SELECT id FROM tablename ";
 
        $result = mysqli_query($link,$query) or
            die ("Error" .mysqli_error($link));
 
        $rows = mysqli_num_rows($result);
        $tmp = false;
        if(isset($_POST['new_id'])) {
            $id = $_POST['new_id'];
            for ($i = 0 ; $i < $rows ; ++$i) {
                $row = mysqli_fetch_row($result);
                if ($row[0] == $id) { 
                    $tmp = true;
                    break;
                }
            }
        }
 
 
        if ($tmp == true) {
            echo "<h4>Изменить данные</h4>
                <strong>Введите новую фамилию</strong>
                <form method='POST'>
                <input type='text' name='new_name'/><br />
                <input type='submit' value='Сохранить'>
                </form>";
        }
        if(isset($_POST['new_name']) ) {
                $new_name = $_POST['new_name'];
                $query ="UPDATE tablename SET surname='$new_name' WHERE id='$id'"; // ERROR HERE
                $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));
 
        }
 
 
        mysqli_close($link);
    ?>
Собственно что это ошибка я понимаю, но не понимаю почему она возникает, ведь я уже работал с переменной ID. Прошу помощи, что изменить, чтоб работало
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.12.2018, 19:09
Ответы с готовыми решениями:

Работа с базой данных через PHP
Добрый день. Создал небольшую форму для занесения, редактирования и удаления данных из таблицы БД (работаю в PHPMyAdmin), однако форма по...

Работа с базой данных MySQL средствами PHP
Здравствуйте! Помогите,пожаалуйста((( с запросом по Mysql,все-таки не получается вывести максимальное количество часов. (( ...

Работа с базой данных MySQL средствами PHP
Здравствуйте,Помогите пожалуйста с запросом по SQL.. не получается вывести список предметов. Получить список предметов, на изучение...

8
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
18.12.2018, 19:21
с 13 строки действует только до 22 строки,

Добавлено через 1 минуту
И плюс 33 строка еще один пост запрос
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
18.12.2018, 19:33
Цитата Сообщение от yakovichq2 Посмотреть сообщение
хотя ранее я работал с этой переменной
Вы в курсе как работает PHP? Явно нет, рано вам еще к БД приступать.
В общем php умирает после каждого запроса, никакие переменные сами по себе не сохраняются.
Как вариант ID можно передать через форму, для этого добавим туда скрытое поле с найденным ID.
HTML5
1
<input type='hidden' name='id' value="<?php=$id?>"/>
Лучше сделайте так:
1) Список всех юзеров в виде таблицы.
2) В каждой строке у юзера есть ссылка на редактирование.
3) При переходе по ссылке показывается форма с данными юзера, эта же форма используется для редактирования.

У вас получится 3 отдельных файла:
1) показ всех юзеров
2) показ одного юзера
3) обновление одного юзера
0
0 / 0 / 0
Регистрация: 18.12.2018
Сообщений: 3
18.12.2018, 20:15
Не подскажете как этого избежать тогда ? Нужно, чтобы $id действовало и в момент следующего запроса

Добавлено через 41 минуту
tarasalk, Решил сделать как вы сказали "лучше". Добавил таблицу вывода, в ней так-же добавил будущую ссылку на замену, но теперь встал вопрос как передавать мне тот самый ID в файл для замены ? Пробовал вот так
PHP
1
<a href='zamena.php?id=$i'>Поменять</a>
Но что-то так тоже ошибка. Я так понимаю это неверно, не могли бы подсказать ?
0
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
18.12.2018, 20:25
Короче, не лучшее решение, но это я вам на глаз говорю
25 по 38 строки вставить после 21 до 22, в 13 строке добавить or isset post new_name

Добавлено через 2 минуты
А лучше, послушать tarasalk и переконструировать логику

Добавлено через 1 минуту
Еще хрен поймёшь откуда у вас берется post_id
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
18.12.2018, 20:27
Цитата Сообщение от jasonRdas Посмотреть сообщение
Но что-то так тоже ошибка.
Какая ошибка?

Вот пример.
PHP
1
2
3
<?php
$i = 123;
echo "<a href='zamena.php?id=$i'>Поменять</a>";
Т.к. ID передается по ссылке то ловить его надо через $_GET
PHP
1
2
3
4
5
if (!isset($_GET['id'])) {
    exit('id not found');
}
 
$id = $_GET['id'];
0
0 / 0 / 0
Регистрация: 18.12.2018
Сообщений: 3
18.12.2018, 20:40
tarasalk, andyyy,
Все заработало. Благодарю за помощь и извините, только начал работу с бд и в частности php. Многого еще не знаю
0
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
18.12.2018, 20:45
А что вы сделали?
0
0 / 0 / 0
Регистрация: 18.12.2018
Сообщений: 3
18.12.2018, 20:49
andyyy, Как сказал tarasalk создал таблицу вывода и туда добавил ссылку на замену данных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2018, 20:49
Помогаю со студенческими работами здесь

Работа с базой данных MySQL средствами PHP
Здравствуйте, помогите пожалуйста, написать запрос, выбирающий все данные из таблицы STUDENT, расположив столбцы таблицы в следующем...

не могу найти ошибку, работа с базой данных и php
Здравствуйте, не могу найти ошибку в коде. Хочу сделать страницу пользователя, где будут видны его данные (достаю из mysql таблицы user). ...

Работа с базой данных MySQL средствами PHP. Запрос без повторения одинаковых строк
Здравствуйте,помогите пожалуйста.. ну,ни как не могу разобраться в запросе...((((( Написать запрос, позволяющий получить из таблицы...

Используя функции категории Работа с базой данных в excel 2010, реализовать запрос к базе данных
Используя функции категории Работа с базой данных, реализовать запрос к базе данных: средняя закупочная цена для одного вида мороженого.

Работа с базой данных, используя "Мастер настройки источника данных"
Ребят, помогите разобраться, бьюсь уже незнамо сколько.. Подключаюсь к базе данных через &quot;Мастер настройки источника данных&quot;, как...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru