Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывести значение ячейки по значению соседней

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Crowley
Отправлено: 22 Февраля, 2014 - 19:30:30
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Здравствуйте. Возникла такая проблема : допустим, у меня есть таблица MySQL. В ней есть 3 параметра : login, password и data. Мне нужно вывести на экран содержание определенной ячейки дата, которой соответствуют введенные логин и пароль.
Т.е., например, в базе есть следующее значение :
Логин - Crowley ; Password - Pass ; Data - SecretText.
И если в переменной $login = "Crowley" а переменная $passw = "Pass", то на экран выводится "SecretText", соответственно, если, например, $login = "Crowley" а $passw = "badPass", то текст не выводится.

Как бы мне все это реализовать? Закатив глазки
 
 Top
teddy
Отправлено: 22 Февраля, 2014 - 19:34:06
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `data` FROM `table` WHERE `login`='$login' AND `password`='$password'


проверяем if-ом результат "фетч-а" если все хорошо то выводим это слово echo $row['data']
а иначе говорим что неверный логин или пароль

(Отредактировано автором: 22 Февраля, 2014 - 19:38:25)

 
 Top
Crowley
Отправлено: 22 Февраля, 2014 - 19:47:13
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




teddy пишет:
выводим это слово echo $row['data']

А откуда у нас row['data'] возьмется, стесняюсь спросить? Улыбка
 
 Top
teddy
Отправлено: 22 Февраля, 2014 - 19:48:51
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




это переменная которая получит "отфетченный" результат запроса

что то типа

 
 Top
Crowley
Отправлено: 22 Февраля, 2014 - 20:00:11
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




В обоих случаях выводится запись, что логин\пароль неправильный.
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. $login = $_POST['login'];
  3. $passw = $_POST['passw'];
  4. $conn = mysql_connect ("localhost","login","password");
  5. $db = mysql_select_db ("Base",$conn);
  6. $result = mysql_query("SELECT * FROM `Auth` WHERE `login`='$login' AND `password`='$password'",$conn);
  7.     $fr = mysql_fetch_assoc($result);
  8.     if($fr == "")
  9.         {
  10.         echo "Ошибка! Логин или пароль введен неверно!<br>";
  11.         print_r($fr);
  12.         }
  13.         else
  14.         {
  15.         $frdata = $fr['data'];
  16.         echo "$frdata";
  17.         }
  18.  
 
 Top
Crowley
Отправлено: 23 Февраля, 2014 - 22:34:56
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Все еще не решил проблему
 
 Top
MAXUS
Отправлено: 24 Февраля, 2014 - 08:24:29
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




teddy пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `data` FROM `table` WHERE `login`='$login' AND `password`='$password'


проверяем if-ом результат "фетч-а" если все хорошо то выводим это слово echo $row['data']
а иначе говорим что неверный логин или пароль


В таких кавычках $ будет восприниматься как обычный символ.

Сорри. Вопрос снят.
(Добавление)
Crowley пишет:
В обоих случаях выводится запись, что логин\пароль неправильный.
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. $login = $_POST['login'];
  3. $passw = $_POST['passw'];
  4. $conn = mysql_connect ("localhost","login","password");
  5. $db = mysql_select_db ("Base",$conn);
  6. $result = mysql_query("SELECT * FROM `Auth` WHERE `login`='$login' AND `password`='$password'",$conn);
  7.     $fr = mysql_fetch_assoc($result);
  8.     if($fr == "")
  9.         {
  10.         echo "Ошибка! Логин или пароль введен неверно!<br>";
  11.         print_r($fr);
  12.         }
  13.         else
  14.         {
  15.         $frdata = $fr['data'];
  16.         echo "$frdata";
  17.         }
  18.  


Во-первых, у тебя нет переменной $password, а есть $passw... Поэтому в запрос передается пустое значение и, соответственно, приходит пустой результат.
Во-вторых, наличие в результате запроса с SELECT строк лучше проверять через функцию mysql_num_rows($result).
В-третьих, если ты знаешь, что в случае удачи запрос должен вывести только одну строку, то используй в запросе LIMIT 1.

Т.е. все вместе как-то так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $login = $_POST['login'];
  3. $passw = $_POST['passw'];
  4. $conn = mysql_connect ("localhost","login","password");
  5. $db = mysql_select_db ("Base",$conn);
  6. $result = mysql_query("SELECT * FROM `Auth` WHERE `login`='$login' AND `password`='$passw' LIMIT 1",$conn);
  7. if(mysql_num_rows($result)){
  8.         $fr = mysql_fetch_assoc($result);
  9.         $frdata = $fr['data'];
  10.         echo $frdata;
  11. }
  12. else echo "Ошибка! Логин или пароль введен неверно!<br>";
  13.  

(Отредактировано автором: 24 Февраля, 2014 - 09:10:26)

 
 Top
Crowley
Отправлено: 24 Февраля, 2014 - 13:21:43
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




MAXUS пишет:
Т.е. все вместе как-то так:

Вот, все работает, спасибо.

А чтобы обновить значение ячейки data запрос должен быть таким? :
PHP:
скопировать код в буфер обмена
  1.  
  2.        $fr = mysql_fetch_assoc($result);
  3.         $id = $fr['id'];
  4.         $login = $fr['login'];
  5.         $passw = $fr['passw'];
  6.         $frdata = $fr['data'];
  7.         mysql_query("UPDATE Auth SET(id='$id',login='$login',password='$passw',data='$frdata') WHERE $id", $conn);
  8.  
 
 Top
MAXUS
Отправлено: 24 Февраля, 2014 - 13:49:23
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Crowley пишет:
MAXUS пишет:
Т.е. все вместе как-то так:

Вот, все работает, спасибо.

А чтобы обновить значение ячейки data запрос должен быть таким? :
PHP:
скопировать код в буфер обмена
  1.  
  2.        $fr = mysql_fetch_assoc($result);
  3.         $id = $fr['id'];
  4.         $login = $fr['login'];
  5.         $passw = $fr['passw'];
  6.         $frdata = $fr['data'];
  7.         mysql_query("UPDATE Auth SET(id='$id',login='$login',password='$passw',data='$frdata') WHERE $id", $conn);
  8.  


Не совсем понял логику. В данном случае, ты получишь строку из базы и перезапишешь ее снова теми же данными.

ЗЫ Кстати, это был общий пример. Там в предыдущем бы от инкапсуляции защититься не мешало бы. Но это отдельная тема.
 
 Top
Crowley
Отправлено: 24 Февраля, 2014 - 19:18:49
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




MAXUS пишет:
Не совсем понял логику. В данном случае, ты получишь строку из базы и перезапишешь ее снова теми же данными.

ЗЫ Кстати, это был общий пример. Там в предыдущем бы от инкапсуляции защититься не мешало бы. Но это отдельная тема.


Поправочка, вот так :

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.        $fr = mysql_fetch_assoc($result);
  4.         $id = $fr['id'];
  5.         $login = $fr['login'];
  6.         $passw = $fr['passw'];
  7.         $frdata = $fr['data'];
  8.         $texta = $_POST['texta'];
  9.         mysql_query("UPDATE Auth SET(id='$id',login='$login',password='$passw',data='$texta') WHERE $id", $conn);
  10.  

В данном случае текст передается POST запросом, а потом записывается в ячейку data с id равным тому, что мы получили с фетча.
 
 Top
esterio
Отправлено: 24 Февраля, 2014 - 20:59:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




MAXUS пишет:
инкапсуляции

небольшая поправочка Иньекции. Инкапсуляция - одно из правил ООП.

Crowley
MAXUS пишет:
$fr == ""

$fr не может быть строкой. Оно может быть
- ресурс - SELECT выполнен успешно
- true - INSERT, UPDATE, DELETE - выполнен успешно
- false - запрос не выполнен. ошыбка mysql_error

Также не строгое приведение типов влияет. Тоесть
"" - равно как FALSE
если запрос вернет FALSE, то будет FALSE == "" будет истиной
если запрос вернет TRUE или ресурс (тоесть успешно испониться), то будет TRUE == FALSE, что не являеться истинным для условия
(Добавление)
Crowley пишет:
WHERE $id

Ошыбка в запросе
Цитата:
WHERE id=$id
 
 Top
MAXUS
Отправлено: 25 Февраля, 2014 - 08:00:45
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




esterio пишет:
небольшая поправочка Иньекции. Инкапсуляция - одно из правил ООП.


Сорри. Конечно же. Бес попутал.
 
 Top
Crowley
Отправлено: 25 Февраля, 2014 - 19:44:25
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




esterio пишет:
Ошыбка в запросе

PHP:
скопировать код в буфер обмена
  1. mysql_query("UPDATE Auth SET(id='$id',login='$login',password='$passw',data='$texta') WHERE id='$id'", $conn);

Все равно не работает Недовольство, огорчение

P.S. А что за защита такая? SafeMySQL скрипт?
 
 Top
Crowley
Отправлено: 27 Февраля, 2014 - 12:32:50
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




все еще нужна хелпа Растерялся
 
 Top
Sail
Отправлено: 27 Февраля, 2014 - 13:05:21
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Crowley пишет:
все еще нужна хелпа

Давайте так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $str = "UPDATE Auth SET login='$login', password='$passw', data='$texta'  WHERE id='$id'";
  2. mysql_query($str, $conn);
  3. echo $str;
  4. echo mysql_errno($conn) . ": " . mysql_error($conn);

Что выведет?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB