Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
3 / 3 / 2
Регистрация: 17.06.2011
Сообщений: 202
1

Изменить содержимое табл. ч-з форму

12.02.2013, 16:26. Показов 595. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, почему скрипт не изменяет имя и фамилию пользователя ?
(где ошибка)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
 
include "config.php"; //Конфиг
 
 
 
// Производим попытку подключения к серверу MySQL:
if (!mysql_connect($dbhost, $dbuser, $dbpassword))
{
echo "<h2>MySQL Error!</h2>"; //показать если есть ошибка подк. к БД
exit;
}
// Выбираем базу данных:
mysql_select_db($dbname); //выбираем БД
mysql_query("SET NAMES utf8");//задаём кодировку
mysql_query("SET NAMES utf8");//задаём кодировку
$tb = "users"; //название табл.
 
 
//проверяем, очищаем, и если все ок, то обновляем
if(isset($_POST['save_changes'])) {
 
$ids = $_POST['id'];
$logins = $_POST['login'];
$name_users = $_POST['name_user'];
$lastnames = $_POST['lastname'];
 
 
//делаем тоже, только в цикле
for($i = 0, $n = count($ids); $i < $n; $i++){
$id = mysql_real_escape_string(stripslashes(trim($ids[$i])));
$login = mysql_real_escape_string(stripslashes(strip_tags(trim($logins[$i]))));
$name_user = mysql_real_escape_string(stripslashes(strip_tags(trim($name_users[$i]))));
$lastnames = mysql_real_escape_string(stripslashes(strip_tags(trim($lastnames[$i]))));
 
if(!empty($login)&&!empty($id)) {
$query=sprintf("UPDATE $tb SET `login`='%s' Where `id`='%u'",$login,$id);
$query=sprintf("UPDATE $tb SET `name_user`='%s' Where `id`='%u'",$login,$id);
$query=sprintf("UPDATE $tb SET `lastname`='%s' Where `id`='%u'",$login,$id);
$update = mysql_query($query);
}}}
 
 
 
 
 
 
 
echo "<br><center><h3>Список пользователей:</h3></center><br>";
// Выводим заголовок таблицы:
echo "<form method=post><table border=\"1\" width=\"75%\" bgcolor=\"#FFFFE1\">";
echo "<tr>
<td>Ид</td>
<td>Логин</td>
<td>Почта</td>
<td>Дата регистраци</td>
<td>Имя</td>
<td>Фамилия</td>
<td>Баланс</td>
";
echo "</tr>";
 
// SQL-запрос для вывода всего с табл:
$q = mysql_query ("SELECT * FROM $tb");
 
// Выводим таблицу:
$qqq = mysql_num_rows($q);
for ($c=0; $c<$qqq; $c++)
{
echo "<tr>";
$f = mysql_fetch_array($q);
echo "
<td><input type='hidden' name='id[]' value='".$f['id']."'>$f[id]</td>
<td><input type='text' name='login[]' value='".$f['login']."' /></td>
<td>$f[email]</td>
<td>$f[reg_date]</td>
<td><input type='text' name='name_user[]' value='".$f['name_user']."' /></td>
<td><input type='text' name='lastname[]' value='".$f['lastname']."' /></td>
<td>$f[balans]</td>
";
echo "";
echo "</tr>";
}
echo "</table><br><center><input type=submit name='save_changes' value='Сохранить изменения' /></center></form>";
 
?>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2013, 16:26
Ответы с готовыми решениями:

Изменить содержимое столбика
Здравствуйте, подскажите пожалуйста как сделать редактируемым последний столбик (логин) в таблице?...

Изменить содержимое файла в архиве
Здравствуйте, Хочу попробовать 1 задачу решить. Суть задачи: Нужно в архиве изменить содержимое...

Добавить из Табл.-ЖурналДежурствБланк в Табл.-ЖурналДежурств 1836 записей - КНОПКОЙ
Всем Здравия и Хорошего настроения! Создаю БД для Садового Товарищества, (типа готовлю телегу...

Настроить связь 3-х таблиц, чтобы подставить в дочернюю табл данные, сгрупированные через 3-ю табл
Добрый день! Гуру Access пожалуйста помогите чайнику!!! Цель проекта: создать БД для...

6
142 / 142 / 27
Регистрация: 19.12.2011
Сообщений: 250
12.02.2013, 19:14 2
Цитата Сообщение от deadsik Посмотреть сообщение
почему скрипт не изменяет имя и фамилию пользователя ?
Я бы сказал, что данный скрипт изменят фамилию, записывая в нее логин пользователя.
Вы разложили по переменным данные:
PHP
1
2
3
4
$id = mysql_real_escape_string(stripslashes(trim($ids[$i])));
$login = mysql_real_escape_string(stripslashes(strip_tags(trim($logins[$i]))));
$name_user = mysql_real_escape_string(stripslashes(strip_tags(trim($name_users[$i]))));
$lastnames = mysql_real_escape_string(stripslashes(strip_tags(trim($lastnames[$i]))));
А дальше...
PHP
1
2
3
4
$query=sprintf("UPDATE $tb SET `login`='%s' Where `id`='%u'",$login,$id);
$query=sprintf("UPDATE $tb SET `name_user`='%s' Where `id`='%u'",$login,$id);
$query=sprintf("UPDATE $tb SET `lastname`='%s' Where `id`='%u'",$login,$id);
$update = mysql_query($query);
1. запрос обновления перезаписывает сам себя два раза, и только на третий раз его все-таки отправляете в mysql_query(). И если, к примеру, $login = andruhin, а $id = 123456 интерпретатор выполнил:
PHP
1
mysql_query("UPDATE users SET `lastname`='andruhin' Where `id`='123456'");
И заменился у нас только lastname
2. Даже если бы и была вызвана функция mysql_query() трижды, после каждого запроса, то во все три поля записалось бы одно значение: $login. Так как во всех трех случаях передается на запись именно оно. sprintf
3. Эти три запроса можно легко объединить в один:
PHP
1
2
$query=sprintf("UPDATE $tb SET `login`='%s', `name_user`='%s', `lastname`='%s' WHERE `id`='%u'", $login, $name_user, $lastnames, $id);
$update = mysql_query($query);
1
3 / 3 / 2
Регистрация: 17.06.2011
Сообщений: 202
12.02.2013, 20:00  [ТС] 3
(ааа)
PHP
1
2
3
4
5
6
$query1=sprintf("UPDATE $tb SET `login`='%s' Where `id`='%u'",$login,$id);
$query2=sprintf("UPDATE $tb SET `name_user`='%s' Where `id`='%u'",$login,$id);
$query3=sprintf("UPDATE $tb SET `lastname`='%s' Where `id`='%u'",$login,$id);
mysql_query($query1);
mysql_query($query2);
mysql_query($query3);
0
142 / 142 / 27
Регистрация: 19.12.2011
Сообщений: 250
12.02.2013, 20:05 4
Цитата Сообщение от deadsik Посмотреть сообщение
(ааа)
$query1=sprintf("UPDATE $tb SET `login`='%s' Where `id`='%u'",$login,$id);
$query2=sprintf("UPDATE $tb SET `name_user`='%s' Where `id`='%u'",$login,$id);
$query3=sprintf("UPDATE $tb SET `lastname`='%s' Where `id`='%u'",$login,$id);
$update = mysql_query($query1);
$update = mysql_query($query2);
$update = mysql_query($query3);
нет, я же писал, что так будет записываться логин во все три поля. И не нужно делать три запроса, можно и нужно одним делать:
Цитата Сообщение от Andruhin Посмотреть сообщение
PHP
1
2
$query=sprintf("UPDATE $tb SET `login`='%s', `name_user`='%s', `lastname`='%s' WHERE `id`='%u'", $login, $name_user, $lastnames, $id);
$update = mysql_query($query);
1
3 / 3 / 2
Регистрация: 17.06.2011
Сообщений: 202
12.02.2013, 20:28  [ТС] 5
спасибо.

Добавлено через 5 минут
но в поле фамилия изменяет только первую строку
1
142 / 142 / 27
Регистрация: 19.12.2011
Сообщений: 250
12.02.2013, 20:38 6
Цитата Сообщение от deadsik Посмотреть сообщение
но в поле фамилия изменяет только первую строку
поподробнее пжл.
Сейчас, он должен изменить на каждой итерации в одной строке с конкретным id три поля:
`login`, `name_user`, `lastname`.

Конечный вариант должен быть примерно таким:
Кликните здесь для просмотра всего текста
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
 
include "config.php"; //Конфиг
 
 
 
// Производим попытку подключения к серверу MySQL:
if (!mysql_connect($dbhost, $dbuser, $dbpassword))
{
echo "<h2>MySQL Error!</h2>"; //показать если есть ошибка подк. к БД
exit;
}
// Выбираем базу данных:
mysql_select_db($dbname); //выбираем БД
mysql_query("SET NAMES utf8");//задаём кодировку
mysql_query("SET NAMES utf8");//задаём кодировку
$tb = "users"; //название табл.
 
 
//проверяем, очищаем, и если все ок, то обновляем
if(isset($_POST['save_changes'])) {
 
$ids = $_POST['id'];
$logins = $_POST['login'];
$name_users = $_POST['name_user'];
$lastnames = $_POST['lastname'];
 
 
//делаем тоже, только в цикле
for($i = 0, $n = count($ids); $i < $n; $i++){
$id = mysql_real_escape_string(stripslashes(trim($ids[$i])));
$login = mysql_real_escape_string(stripslashes(strip_tags(trim($logins[$i]))));
$name_user = mysql_real_escape_string(stripslashes(strip_tags(trim($name_users[$i]))));
$lastnames = mysql_real_escape_string(stripslashes(strip_tags(trim($lastnames[$i]))));
 
if(!empty($login)&&!empty($id)) {
$query=sprintf("UPDATE $tb SET `login`='%s', `name_user`='%s', `lastname`='%s' WHERE `id`='%u'", $login, $name_user, $lastnames, $id);
$update = mysql_query($query);
}}}
 
 
 
 
 
 
 
echo "<br><center><h3>Список пользователей:</h3></center><br>";
// Выводим заголовок таблицы:
echo "<form method=post><table border=\"1\" width=\"75%\" bgcolor=\"#FFFFE1\">";
echo "<tr>
<td>Ид</td>
<td>Логин</td>
<td>Почта</td>
<td>Дата регистраци</td>
<td>Имя</td>
<td>Фамилия</td>
<td>Баланс</td>
";
echo "</tr>";
 
// SQL-запрос для вывода всего с табл:
$q = mysql_query ("SELECT * FROM $tb");
 
// Выводим таблицу:
$qqq = mysql_num_rows($q);
for ($c=0; $c<$qqq; $c++)
{
echo "<tr>";
$f = mysql_fetch_array($q);
echo "
<td><input type='hidden' name='id[]' value='".$f['id']."'>$f[id]</td>
<td><input type='text' name='login[]' value='".$f['login']."' /></td>
<td>$f[email]</td>
<td>$f[reg_date]</td>
<td><input type='text' name='name_user[]' value='".$f['name_user']."' /></td>
<td><input type='text' name='lastname[]' value='".$f['lastname']."' /></td>
<td>$f[balans]</td>
";
echo "";
echo "</tr>";
}
echo "</table><br><center><input type=submit name='save_changes' value='Сохранить изменения' /></center></form>";
 
?>
0
3 / 3 / 2
Регистрация: 17.06.2011
Сообщений: 202
12.02.2013, 23:31  [ТС] 7
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//проверяем, очищаем, и если все ок, то обновляем
if(isset($_POST['save_changes'])) {
 
$ids = $_POST['id'];
$logins = $_POST['login'];
$name_users = $_POST['name_user'];
$lastnames = $_POST['lastname'];
 
 
//делаем тоже, только в цикле
for($i = 0, $n = count($ids); $i < $n; $i++){
$id = mysql_real_escape_string(stripslashes(trim($ids[$i])));
$login = mysql_real_escape_string(stripslashes(strip_tags(trim($logins[$i]))));
$name_user = mysql_real_escape_string(stripslashes(strip_tags(trim($name_users[$i]))));
$lastname = mysql_real_escape_string(stripslashes(strip_tags(trim($lastnames[$i]))));
 
if(!empty($login)&&!empty($id)) {
$query=sprintf("UPDATE $tb SET `login`='%s', `name_user`='%s', `lastname`='%s' WHERE `id`='%u'", $login, $name_user, $lastname, $id);
$update = mysql_query($query);
}}}
ошибка быта тут, исправил.

Добавлено через 18 секунд
( $lastname )
0
12.02.2013, 23:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2013, 23:31
Помогаю со студенческими работами здесь

SQL запрос, табл клиентов и табл товаров
Подскажите, есть табл клиентов и табл товаров. Пишу SQL запрос в результате выводит клиент1 товар1...

Запрос на копирование из табл в другую табл
У меня есть 2 таблицы мне нужно ввести дату и чтобы из одной таблицы скопировалось поле из 1 табл в...

Поле "Сумма" вычисляемая разницей между двумя полями 1 табл умноженной на значение поля из другой табл
Всем приятного времени суток, являюсь новичком в MS Access, но нужно создать БД, пока вроде все...

Имеется два файла, в первом файле находится табл.номер Фамилия и имя и оклад, а во втором табл.номер и аванс.
Люди, помогите, как мне сделать программу. У меня имеется два файла, в первом файле находится...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru