@t_timaa

Как вывести запись по определённому совпадению?

База создана в phpmyadmin(тестирую на сервере). Версия php 5.2(использую mysql)
Есть таблица Clients. В таблице, помимо полей Фио, адрес и т.п, есть поля Login и password.
Имеется кнопка вход. Данные считываются с таблицы Clients, с этих двух полей:
<?php

    include ("BD_for_users.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь 
 
if(isset($_POST['login']) && isset($_POST['password'])) {
  $login = $_POST['login'];
  $password = $_POST['password'];
  if(empty($login) OR empty($password)){
    exit ('<script>alert("Дла начала заполните поля!");</script>');
  }
  $login = trim(stripslashes(htmlspecialchars($login))); 
  $password = trim(stripslashes(htmlspecialchars($password))); // надо хранить хеш пароля, а не в чистом виде
  $result = mysql_query("SELECT * FROM Clients WHERE login='".$login."' AND password='".$password."'");
  
$row = mysql_fetch_array($result);
  $myrow = mysql_num_rows($result);

  if ($myrow == 1){
    $_SESSION['login'] = $row['login'];
    $_SESSION['id'] = $row['id'];
  }
    echo "Вы успешно вошли на сайт! <a href='For_users.php'>Личный кабинет</a>";
  }else{
    exit ('<script>alert("Извините, введённый вами логин или пароль неверный.");</script>');
  }

?>


Как только логин и пароль совпали , клиента перебрасывает в "личный кабинет". На данный момент у меня там просто вывод таблицы:
<?php 
  
// Подключение к базе: где $hostname - сервер, $username - имя юзера БД, 
// $password - пароль юзера, $basename - имя базы с которой мы будем работать 
$hostname = 'localhost'; 
$username = 'root'; 
$passwordname = ''; 
$basename = 'Bank'; 
$conn = new mysqli($hostname, $username, $passwordname, $basename) or die ('Невозможно открыть базу'); 
// Формируем запрос из таблицы с именем Account 

$sql = "SELECT * FROM `Account`"; 


$result = $conn->query($sql); 


// В цикле перебираем все записи таблицы и выводим их 
while ($row = $result->fetch_assoc()) 

{ 

// Оператором echo выводим на экран поля таблицы name_blog и text_blog 
echo '<tr>'; 
echo '<td>'.$row['id_contribution']; 
echo '</td>'; 
echo '<td>'.$row['account_opening_date']; 
echo '</td>'; 
echo '<td>'.$row['account_closing_date']; 
echo '</td>'; 
echo '<td>'.$row['amount_of_contribution']; 
echo '</td>'; 
echo '</tr>'; 

} 
?>


Подскажите, как мне вывести запись клиента по совпадению логина и пароля(или же id). Чтобы каждому клиенту выводилась своя запись
  • Вопрос задан
  • 300 просмотров
Решения вопроса 1
$myrow = mysql_num_rows($result);
  if ($myrow == 1){
    $_SESSION['login'] = $myrow['login'];
    $_SESSION['id'] = $myrow['id'];
}

Тут ошибка. В $myrow хранится единица и следовательно $myrow['login']; и $myrow['id']; - не существуют и в сессию ничего не пишется.
Сделайте так:
$row = mysql_fetch_array($result);
  $myrow = mysql_num_rows($result);

  if ($myrow == 1){
    $_SESSION['login'] = $row['login'];
    $_SESSION['id'] = $row['id'];
}

Я вам вроде бы верный вариант в конце давал.
А дальше так, как вам показали
$sql = "SELECT * FROM `Account` WHERE `id_client` = ". (int) $_SESSION['id'];
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Arik
Наверно так:
$sql = "SELECT * FROM `Account` WHERE `id_client ` = ". (int) $_SESSION['id'];
Ответ написан
@masterfreelance
программист со стажем
А как вы в дальнейшем будете узнавать авторизован пользователь или нет? Так и в личном кабинете, если авторизован, берите его ид или логин из сессии и показывайте ему его личный кабинет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы