Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/30: Рейтинг темы: голосов - 30, средняя оценка - 4.70
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
1

Как создать личный кабинет с PDO запросами

04.11.2016, 23:10. Показов 5694. Ответов 86
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые программисты профи и форумчане, помогите мне реализовать личный кабинет.
При подключении к БД я использую PDO подключения.
Авторизацию и Регистрацию уже написал, а вот с личным кабинетом проблема...
В лично кабинете для начала хотя бы хочу вывести ФИО, город, день рождения, фото.
Покажите или намекните желательно кодом с использованием PDO запросами.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2016, 23:10
Ответы с готовыми решениями:

Как создать личный кабинет?
Здравствуйте, извините что новую тему создал. В общем идя такая, сделать сайт для школы английского...

CommunityBuilder Как создать личный кабинет?
Нужна форма регистрации, вход, личный кабинет и остаток средств! Все что нашел в нете идет как...

Как создать личный кабинет для типа пользователя в wordpress?
Здравствуйте! Я пытаюсь сделать обучающий сайт на Wordpress. Имеются 2 типа пользователей: Учитель...

Подскажите, как самому с нуля создать личный кабинет жильцов дома на joomla 2,5
с информацией о лицевом счете, c возможностью рассчитывать сумму по счетчикам и печатью квитанции в...

86
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
06.11.2016, 22:19 41
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
У меня идентификатор пользователя false
не понял
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
Не срабатывает, почему то что не так?
Делаю запрос:
PHP
1
2
3
4
5
$sql = 'SELECT * FROM `users`WHERE `id` = :id';
$stmt = $db->prepare($sql);
if ($stmt->execute(array('id' => $_SESSION['id']))){
    $rows = $stmt->fetch(PDO::FETCH_ASSOC);
}
Цитата Сообщение от _NE_KAKIX_IMEN
$user = isset($_SESSION['user']) ? $_SESSION['user'] : false;
вы понимаете эту запись?
в $user вы помещаете, как я понял, идентификатор пользователя из сессии, а в запрос подставляете $_SESSION['id'].
нафига тогда $user
0
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
06.11.2016, 22:25  [ТС] 42
fanatikus,
PHP
1
2
3
//Определяем переменную для переключателя
    $mode = isset($_GET['mode'])  ? $_GET['mode'] : false;
    $user = isset($_SESSION['user']) ? $_SESSION['user'] : false;
Вот как у меня 2 переменных я не пойму мне нужен этот user_data или нет.
У меня ругается при запросе на эту строку
PHP
1
2
$stmt = $pdo->query("SELECT * FROM `users` WHERE `id` = '".$_SESSION['id']."'"); Вот на эту ругается
$user_data = $stmt->fetch();
Не понимаю как не пробивал исправить не получилось.( Может что я делаю не так?

Покажите пожалуйста как сделать правильно запрос с моими переменными спасибо.
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
06.11.2016, 22:48 43
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
У меня ругается при запросе на эту строку
а ошибку показать слабо. думаю ошибка связана с сессиями.
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
Вот как у меня 2 переменных я не пойму мне нужен этот user_data или нет.
да причем эти две переменные? в моем примере, в $user_data, массив данных пользователя из базы.(которые вы хотите вывести)
извините, но у меня кончилось терпение. судя по всему вы не понимаете о чем вам говорят, просто берете разные кусочки кода и хотите что-то сваять. отсюда вопрос- а оно вам вообще нужно?
0
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
06.11.2016, 22:57  [ТС] 44
fanatikus, Очень нужно вот ошибка какая
Миниатюры
Как создать личный кабинет с PDO запросами  
0
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
07.11.2016, 12:15  [ТС] 45
fanatikus, Fatal error: Call to undefined method PDO::fetch() in D:\OpenServer\domains\site\scripts\profile\cabinet.php on line 25
нельзя вызывать данный метод. как то так перевод.
Что делать подскажите пожалуйста.

Добавлено через 34 минуты
fanatikus,
PHP
1
2
 $stmt = $pdo->query("SELECT * FROM `users` WHERE `id` = '".$_SESSION['login']."'");
  $user_data = $stmt -> fetch();
Одну ошибку исправил получается у меня вместо id в сессиях хранится логин.
Теперь когда я жму сохранить он выкидываешь на стр с ошибкой. что нужно сделать чтобы исправить это. Спасибо за ранее.

Добавлено через 11 часов 21 минуту
fanatikus, Fatal error: Call to a member function fetch() on a non-object in D:\OpenServer\domains\site\cabinet.php on line 22
Не пойму не чего не происходит данные в базе не меняются... Да и ошибки вылетают. Я как только не изменял все ровно 0 результат. Максимум вывел поля для ввода.

Добавлено через 47 минут
fanatikus, Ваш пример не работает когда жму сохранить он не чего не сохраняет, в базе не обновляет почему то. Как с этим быть?
0
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
07.11.2016, 13:13  [ТС] 46
fanatikus, Вот пример моей авторизации и регистрации пожалуйста попробуйте вставить function.php cabinet.php у меня например не получилось. И так его вставлял и так прикрутить не получилось одни ошибки на ошибке у меня... Не получилось у меня не чего... Жду вашего ответа. Спасибо за ранее...
Вложения
Тип файла: zip auth_reg.zip (13.5 Кб, 1 просмотров)
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
07.11.2016, 19:56 47
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
WHERE `id` = '".$_SESSION['login']."'")
вы id сравниваете с логином
WHERE `login` = '".$_SESSION['login']
0
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
07.11.2016, 20:49  [ТС] 48
fanatikus, И? Вы пример не посмотрели?
Изменил вот ошибка:
Fatal error: Call to a member function query() on a non-object in D:\OpenServer\domains\site\scripts\profile\cabinet.php on line 47

Добавлено через 6 минут
fanatikus,
а когда нажимаю сохранить то вылетает ошибка
Fatal error: Call to a member function prepare() on a non-object in D:\OpenServer\domains\site\scripts\profile\function.php on line 16

Добавлено через 9 минут
fanatikus,
Кидаю код как я его отредактировал не много.
cabinet.php
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
<?php
 $stmt = $pdo->query("SELECT * FROM `users` WHERE `login` = '".$_SESSION['login']."'");
 $user_data = $stmt->fetch();
?>
<html>
<head>
<title>Кабинет</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
</head>
<body>
    <form action="function.php" method="post">
        <input type="hidden" name="id" value="<?php echo $user_data['id'];?>">
 
        <label>login</label>
        <input type="text" name="login" value="<?php echo $user_data['login'];?>">
 
        <label>E-mail</label>
        <input type="text" name="email" value="<?php echo $user_data['email'];?>">
 
        <label>name</label>
        <input type="text" name="name" value="<?php echo $user_data['name'];?>">
 
        <label>lastname</label>
        <input type="text" name="lastname" value="<?php echo $user_data['lastname'];?>">
 
        <input type="submit" name="save" value="Сохранить">
    </form>
</body>
</html>
function.php
PHP
1
2
3
4
5
6
7
8
<?php
if(isset($_POST['save'])){
    $stmt = $pdo->prepare('UPDATE users SET `login`= :login, `email`= :email, `name`= :name, `lastname`= :lastname, WHERE `id`= :id');
    $stmt->execute(array('login' => $_POST['login'], 'email' => $_POST['email'],'name' => $_POST['name'], 'lastname' => $_POST['lastname'], 'id' => $_POST['id']));
}
header('Location: ./scripts/profile/cabinet.php');
exit;
?>
И почему то у меня не получается все ровно выдает ошибку. Те которые указал выше. Что не так?

Добавлено через 5 минут
Может вам показать базу данных а то мы в непонятках(

Добавлено через 16 минут
fanatikus, Жду ответа
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
07.11.2016, 20:56 49
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
<?php $stmt = $pdo->query("SELECT * FROM `users` WHERE `login` = '".$_SESSION['login']."'"); $user_data = $stmt->fetch(); ?>
а где создание объекта pdo?
0
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
07.11.2016, 21:00  [ТС] 50
fanatikus,
создание объекта pdo? У меня ругается почему то..
А если я создаю подключения к базе в другом файле.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 define('SERVER','localhost');
 define('USER','root');
 define('PASSWORD','');
 define('DATABASE','site');
 
    $pdo = new PDO('mysql:host=localhost;dbname='.DATABASE, USER, PASSWORD, array(
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ));
      $pdo -> exec("SET CHARACTER SET utf8");
?>
я его одним для всех сделал не в каждом файле к базе подключаюсь.
Один файл на все это подключение. Вот он...
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
07.11.2016, 21:20 51
PHP
1
2
3
4
5
6
7
8
9
10
define('SERVER','localhost');
define('USER','root');
define('PASSWORD','');
define('DATABASE','site');
$dsn = "mysql:host=".SERVER.";dbname=".DATABASE.";charset=utf8";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,USER,PASSWORD,$opt);
0
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
07.11.2016, 22:01  [ТС] 52
fanatikus, ааа у меня не много ошибочка с подключением я понял сейчас попробую, спасибо Вам)))

Добавлено через 33 минуты
fanatikus,
PHP
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($_POST['save'])){
    $pdo = new PDO($dsn, $user, $pass, $opt);
    $stmt = $pdo->prepare('UPDATE users SET `login`= :login, `email`= :email, `name`= :name, `lastname`= :lastname, WHERE `id`= :id');
    $stmt->execute(array('login' => $_POST['login'], 'email' => $_POST['email'],'name' => $_POST['name'], 'lastname' => $_POST['lastname'], 'id' => $_POST['id']));
}
 
header('Location: ./scripts/profile/cabinet.php');
exit;
?>
Ошибка такая:
Fatal error: Uncaught exception 'PDOException' with message 'invalid data source name' in D:\OpenServer\domains\site\scripts\profile\function.php:15 Stack trace: #0 D:\OpenServer\domains\site\scripts\profile\function.php(15): PDO->__construct('', NULL, NULL, NULL) #1 {main} thrown in D:\OpenServer\domains\site\scripts\profile\function.php on line 15
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
07.11.2016, 22:16 53
в таблице, есть поле name?
0
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
08.11.2016, 19:07  [ТС] 54
fanatikus, есть и name и login и email и id и так далее

Добавлено через 22 минуты
fanatikus, Жду ответа

Добавлено через 3 минуты
fanatikus, А если у меня подключение к бд идет вот так:
config.php
PHP
1
2
3
4
define('SERVER','localhost');
define('USER','root');
define('PASSWORD','');
define('DATABASE','site');
bd.php
PHP
1
2
3
4
5
6
$dsn = "mysql:host=".SERVER.";dbname=".DATABASE.";charset=utf8";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,USER,PASSWORD,$opt);
Будет ли это правильное подключение? а то у меня теперь ошибка( авторизоваться получается восстановить пароль получается а вот зарегистрироваться нет((( выдает ошибку((

Добавлено через 20 часов 21 минуту
fanatikus, С подключение разобрался, а с вашим скриптом нет) Может поможете?
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
08.11.2016, 22:25 55
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
С подключение разобрался, а с вашим скриптом нет
а что там разбираться, все элементарно
0
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
08.11.2016, 22:35  [ТС] 56
fanatikus, Да ну да согласен. Так помогите мне у меня одни ошибки))))
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
08.11.2016, 22:37 57
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
Так помогите мне
что помочь? написать вам личный кабинет?
0
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
09.11.2016, 21:59  [ТС] 58
fanatikus, Структура таблицы profile пустая данных нет
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE IF NOT EXISTS `profile` (
  `user_id` INT(11) NOT NULL COMMENT 'Иди',
  `name` VARCHAR(32) NOT NULL COMMENT 'Имя',
  `lastname` VARCHAR(32) NOT NULL COMMENT 'Фамилия',
  `avatar` VARCHAR(32) NOT NULL COMMENT 'Аватарка',
  `reg_date` VARCHAR(32) NOT NULL COMMENT 'Дата регистрации',
  `sex` VARCHAR(32) NOT NULL COMMENT 'Пол',
  `birthday_day` INT(2) NOT NULL COMMENT 'День рождения',
  `birthday_month` INT(2) NOT NULL COMMENT 'Месяц рождения',
  `birthday_year` INT(4) NOT NULL COMMENT 'Год рождения',
  `country` VARCHAR(32) NOT NULL COMMENT 'Страна',
  `city` VARCHAR(32) NOT NULL COMMENT 'Город'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Структура таблицы users:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE TABLE IF NOT EXISTS `users` (
  `id` INT(11) NOT NULL,
  `login` VARCHAR(32) NOT NULL COMMENT 'Логин пользователя',
  `email` VARCHAR(32) NOT NULL COMMENT 'Почта пользователя',
  `pass` VARCHAR(32) NOT NULL COMMENT 'Пароль пользователя'
) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;
 
-- Дамп данных таблицы `users`
 
INSERT INTO `users` (`id`, `login`, `email`, `pass`) VALUES
(1, 'admin', 'admin@aaa.ru', '1234'),
(2, 'moderator', 'moderator@aaa.ru', '1234'),
(3, 'user', 'user@aaa.ru', '1234');
-- Индексы таблицы `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);
 
-- AUTO_INCREMENT для таблицы `users`
--
ALTER TABLE `users`
  MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=24;
В итоге у нас две таблицы profile пустая таблица а users не много заполнена данными.
Что должно происходить:
Пользователь авторизовался, жмет например личный кабинет, и там заполняет анкету из таблицы profile.
Когда заполнил в кабинете данные и жмет сохранить и запрос должен сохранить данные в базе под его id.
Ну и вывод данных из базы нужно сделать.
Надеюсь все по пунктам расписал.

Сделайте с Вашего примера cabinet.php function.php запросы по этим таблицам пожалуйста... А то я как не подставлял не получается.
Данные хочу что бы записывались в таблицу profile

Добавлено через 23 часа 2 минуты
fanatikus, И вы мне не ответите?

Добавлено через 2 минуты
fanatikus, Как мне объединить 2 таблицы ? надо таблице profile ставить первичный ключ? Вообще не пойму! Help me please!
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
10.11.2016, 20:57 59
в таблице profile добавить поле id(первичный ключ), а поле user_id будет внешним ключом(id из таблицы user)
0
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 450
10.11.2016, 21:18  [ТС] 60
fanatikus, Как внешний ключ добавить? первичный знаю как добавлять а внешний не знаю именно его значения как звучит? Уникальный?
0
10.11.2016, 21:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2016, 21:18
Помогаю со студенческими работами здесь

Создать личный кабинет (Django)
Привет всем. 5 дней изучаю питон, прошу сильно не пинать. Прошел курс на ютуьбе, теперь стараюсь...

Создать личный кабинет с регистрацией на сайте WordPress
Доброго времени суток. Направление сайта: музыка. На котором планируется размещение аудио, видео,...

Как настроить личный кабинет?
Помогите пожалуйста, что нужно сделать чтобы в личном кабинете можно было размещать : свои фото,...

Как создается личный кабинет?
Всем привет! Первый раз собираюсь сделать личный кабинет, перелопатила интернет, ничего такого...


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

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