Всем привет, пытаюсь отображение суммы из бд сделать. Из бд в переменную в общем. Искал по форумам, но ни разу пока не нашел рабочий пример кода. С БД mysql поза вчера только начал работать. Регистрацию получилось сделать, таблица состоит из id , first_name , last_name, email , email_status, password, bln пытался так PHP: $id=1; $query = 'SELECT * FROM `users` WHERE `id`='.$id.' LIMIT 1'; $result = mysql_query($query); $result_assoc = mysql_fetch_assoc($result); echo $result_assoc['bln'].', руб.'; нет, не работает вот код для входа в аккаунт , там я и пытаюсь бурду эту проделать PHP: <?php //Запускаем сессию session_start(); //Добавляем файл подключения к БД require_once("dbconnect.php"); //Объявляем ячейку для добавления ошибок, которые могут возникнуть при обработке формы. $_SESSION["error_messages"] = ''; //Объявляем ячейку для добавления успешных сообщений $_SESSION["success_messages"] = ''; /* Проверяем была ли отправлена форма, то есть была ли нажата кнопка Войти. Если да, то идём дальше, если нет, то выведем пользователю сообщение об ошибке, о том что он зашёл на эту страницу напрямую. */ if(isset($_POST["btn_submit_auth"]) && !empty($_POST["btn_submit_auth"])){ //(1) Место для следующего куска кода //Проверяем полученную капчу if(isset($_POST["captcha"])){ //Обрезаем пробелы с начала и с конца строки $captcha = trim($_POST["captcha"]); if(!empty($captcha)){ //Сравниваем полученное значение с значением из сессии. if(($_SESSION["rand"] != $captcha) && ($_SESSION["rand"] != "")){ // Если капча не верна, то возвращаем пользователя на страницу авторизации, и там выведем ему сообщение об ошибке что он ввёл неправильную капчу. $error_message = "<p class='mesage_error'><strong>Ошибка!</strong> Вы ввели неправильную капчу </p>"; // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] = $error_message; //Возвращаем пользователя на страницу авторизации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } }else{ $error_message = "<p class='mesage_error'><strong>Ошибка!</strong> Поле для ввода капчи не должна быть пустой. </p>"; // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] = $error_message; //Возвращаем пользователя на страницу авторизации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } //(2) Место для обработки почтового адреса //Обрезаем пробелы с начала и с конца строки $email = trim($_POST["email"]); if(isset($_POST["email"])){ if(!empty($email)){ $email = htmlspecialchars($email, ENT_QUOTES); //Проверяем формат полученного почтового адреса с помощью регулярного выражения $reg_email = "/^[a-z0-9][a-z0-9\._-]*[a-z0-9]*@([a-z0-9]+([a-z0-9-]*[a-z0-9]+)*\.)+[a-z]+/i"; //Если формат полученного почтового адреса не соответствует регулярному выражению if( !preg_match($reg_email, $email)){ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Вы ввели неправильный email</p>"; //Возвращаем пользователя на страницу авторизации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } }else{ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Поле для ввода почтового адреса(email) не должна быть пустой.</p>"; //Возвращаем пользователя на страницу регистрации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Останавливаем скрипт exit(); } }else{ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Отсутствует поле для ввода Email</p>"; //Возвращаем пользователя на страницу авторизации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } //(3) Место для обработки пароля if(isset($_POST["password"])){ //Обрезаем пробелы с начала и с конца строки $password = trim($_POST["password"]); if(!empty($password)){ $password = htmlspecialchars($password, ENT_QUOTES); //Шифруем пароль $password = md5($password."top_secret"); }else{ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Укажите Ваш пароль</p>"; //Возвращаем пользователя на страницу регистрации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } }else{ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Отсутствует поле для ввода пароля</p>"; //Возвращаем пользователя на страницу регистрации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } ////////(4) Место для составления запроса к БД //Запрос в БД на выборке пользователя. $result_query_select = $mysqli->query("SELECT * FROM `users` WHERE email = '".$email."' AND password = '".$password."'"); ///////ВОТ МОЯ ПОПЫТКА найти баланс по id $id=1; $query = 'SELECT * FROM `users` WHERE `id`='.$id.' LIMIT 1'; $result = mysql_query($query); $result_assoc = mysql_fetch_assoc($result); echo $result_assoc['bln'].', руб.'; ///////ВОТ МОЯ ПОПЫТКА END if(!$result_query_select){ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Ошибка запроса на выборке пользователя из БД</p>"; //Возвращаем пользователя на страницу регистрации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); }else{ //Проверяем, если в базе нет пользователя с такими данными, то выводим сообщение об ошибке if($result_query_select->num_rows == 1){ // Если введенные данные совпадают с данными из базы, то сохраняем логин и пароль в массив сессий. $_SESSION['email'] = $email; $_SESSION['password'] = $password; //Возвращаем пользователя на главную страницу // header("HTTP/1.1 301 Moved Permanently"); // header("Location: ".$address_site."/index.php"); }else{ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Неправильный логин и/или пароль</p>"; //Возвращаем пользователя на страницу авторизации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } } }else{ //Если капча не передана exit("<p><strong>Ошибка!</strong> Отсутствует проверочный код, то есть код капчи. Вы можете перейти на <a href=".$address_site."> главную страницу </a>.</p>"); } }else{ exit("<p><strong>Ошибка!</strong> Вы зашли на эту страницу напрямую, поэтому нет данных для обработки. Вы можете перейти на <a href=".$address_site."> главную страницу </a>.</p>"); } Сам не справлюсь по любому. Спасайте пацана )
Лучше конечно mysqli уже использовать. Думаю у многих тут версия PHP , которая уже без поддержки mysql и код ваш не проверить локально. Что ваш скрипт выводит? Какую ошибку? Включен вывод ошибок?
тебе уже подсказали PHP: $query = 'SELECT SUM(bln) AS balance FROM `users` WHERE `id`='.$id.' LIMIT 1'; PHP: echo $result_assoc['balance'].', руб.';
включите отображение ошибок и сделайте скриншот. Запрос даже в том виде, что привел должен выводить данные. Судя по наименованию поля он в нем уже хранит баланс, а не транзакции. Ну вообще конечно тяжело так сказать.
Сайт не может обработать этот запрос, вообще не работает --- Добавлено --- без этих двух строк ? PHP: $result = mysql_query($query); $result_assoc = mysql_fetch_assoc($result); пытался так: PHP: $id=1; $query = 'SELECT SUM(bln) AS balance FROM `users` WHERE `id`='.$id.' LIMIT 1'; $result = mysql_query($query); $result_assoc = mysql_fetch_assoc($result); echo $result_assoc['balance'].', руб.'; не работает
А должен? У вас в этом скрипте другие запросы к бд есть? К бд подключились, все нормально? Ничего что mysql_ устарело? Какая версия php у вас?
PHP: <?php //Запускаем сессию session_start(); //Добавляем файл подключения к БД require_once("dbconnect.php"); //Объявляем ячейку для добавления ошибок, которые могут возникнуть при обработке формы. $_SESSION["error_messages"] = ''; //Объявляем ячейку для добавления успешных сообщений $_SESSION["success_messages"] = ''; /* Проверяем была ли отправлена форма, то есть была ли нажата кнопка Войти. Если да, то идём дальше, если нет, то выведем пользователю сообщение об ошибке, о том что он зашёл на эту страницу напрямую. */ if(isset($_POST["btn_submit_auth"]) && !empty($_POST["btn_submit_auth"])){ //(1) Место для следующего куска кода //Проверяем полученную капчу if(isset($_POST["captcha"])){ //Обрезаем пробелы с начала и с конца строки $captcha = trim($_POST["captcha"]); if(!empty($captcha)){ //Сравниваем полученное значение с значением из сессии. if(($_SESSION["rand"] != $captcha) && ($_SESSION["rand"] != "")){ // Если капча не верна, то возвращаем пользователя на страницу авторизации, и там выведем ему сообщение об ошибке что он ввёл неправильную капчу. $error_message = "<p class='mesage_error'><strong>Ошибка!</strong> Вы ввели неправильную капчу </p>"; // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] = $error_message; //Возвращаем пользователя на страницу авторизации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } }else{ $error_message = "<p class='mesage_error'><strong>Ошибка!</strong> Поле для ввода капчи не должна быть пустой. </p>"; // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] = $error_message; //Возвращаем пользователя на страницу авторизации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } //(2) Место для обработки почтового адреса //Обрезаем пробелы с начала и с конца строки $email = trim($_POST["email"]); if(isset($_POST["email"])){ if(!empty($email)){ $email = htmlspecialchars($email, ENT_QUOTES); //Проверяем формат полученного почтового адреса с помощью регулярного выражения $reg_email = "/^[a-z0-9][a-z0-9\._-]*[a-z0-9]*@([a-z0-9]+([a-z0-9-]*[a-z0-9]+)*\.)+[a-z]+/i"; //Если формат полученного почтового адреса не соответствует регулярному выражению if( !preg_match($reg_email, $email)){ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Вы ввели неправильный email</p>"; //Возвращаем пользователя на страницу авторизации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } }else{ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Поле для ввода почтового адреса(email) не должна быть пустой.</p>"; //Возвращаем пользователя на страницу регистрации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Останавливаем скрипт exit(); } }else{ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Отсутствует поле для ввода Email</p>"; //Возвращаем пользователя на страницу авторизации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } //(3) Место для обработки пароля if(isset($_POST["password"])){ //Обрезаем пробелы с начала и с конца строки $password = trim($_POST["password"]); if(!empty($password)){ $password = htmlspecialchars($password, ENT_QUOTES); //Шифруем пароль $password = md5($password."top_secret"); }else{ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Укажите Ваш пароль</p>"; //Возвращаем пользователя на страницу регистрации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } }else{ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Отсутствует поле для ввода пароля</p>"; //Возвращаем пользователя на страницу регистрации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } ////////(4) Место для составления запроса к БД //Запрос в БД на выборке пользователя. $result_query_select = $mysqli->query("SELECT * FROM `users` WHERE email = '".$email."' AND password = '".$password."'"); if(!$result_query_select){ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Ошибка запроса на выборке пользователя из БД</p>"; //Возвращаем пользователя на страницу регистрации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); }else{ //Проверяем, если в базе нет пользователя с такими данными, то выводим сообщение об ошибке if($result_query_select->num_rows == 1){ // Если введенные данные совпадают с данными из базы, то сохраняем логин и пароль в массив сессий. $_SESSION['email'] = $email; $_SESSION['password'] = $password; /////////////////////////////////////////ВОТ МОЯ ПОПЫТКА найти баланс по id $id=1; $query = 'SELECT SUM(bln) AS balance FROM `users` WHERE `id`='.$id.' LIMIT 1'; $result = mysql_query($query); $result_assoc = mysql_fetch_assoc($result); echo $result_assoc['balance'].', руб.'; ////////////////////////////////////////////////ВОТ МОЯ ПОПЫТКА END //Возвращаем пользователя на главную страницу // header("HTTP/1.1 301 Moved Permanently"); // header("Location: ".$address_site."/index.php"); }else{ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "<p class='mesage_error' >Неправильный логин и/или пароль</p>"; //Возвращаем пользователя на страницу авторизации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Останавливаем скрипт exit(); } } }else{ //Если капча не передана exit("<p><strong>Ошибка!</strong> Отсутствует проверочный код, то есть код капчи. Вы можете перейти на <a href=".$address_site."> главную страницу </a>.</p>"); } }else{ exit("<p><strong>Ошибка!</strong> Вы зашли на эту страницу напрямую, поэтому нет данных для обработки. Вы можете перейти на <a href=".$address_site."> главную страницу </a>.</p>"); }
не работает из за mysql, данный модуль устарел, начиная с версии PHP 5.5.0, и удалён в PHP 7.0.0. нужно через mysqli, ох уж эти обновления, для новичков темный лес. Если не сложно покажите как через mysqli отобразить баланс через echo
Этому «обновлению» исполняется сто лет в обед. --- Добавлено --- Просто вы, даже не удосужившись заглянуть под капот, полезли делать правку со своими знаниями столетней давности. Предупреждаю: ничего хорошего из этого не выйдет, даже если «на вид» что-то и заработает.
понимаю о чем вы, я вывезу пока что вывести получилось все данные PHP: $result = $mysqli->query('SELECT * FROM `users`'); while($row = $result->fetch_assoc()) { echo '<p>Запись id='.$row['id'].'. Текст: '.$row['bln'].'</p>'; } но по email как сделать? Вывести только наш баланс найдя баланс по логину (email)
для одного, это мы типо в личном кабинете и по email нужно найти наш баланс, чет не получается пока разобраться, как это сделать
Для «залогиненного» не надо делать по email. После авторизации у вас где-то должен храниться id авторизованного, например в сессии, или данные авторизованного, включая id из БД, должны каждый раз выбираться по id или ключу в куках. Приходящий с клиента id обязательно проверяете перед его использованием в запросе (или используете «подготовленный запрос»). Выбранный из БД id не проверяете, но проверяете в общем существование пользователя, т.е. наличие непустой выборки при запросе по id/ключу. --- Добавлено --- Вот тут же сохраните в сессии id, а потом для страниц ЛК выбирайте баланс по id из сессии. В ответ на POST-запрос ничего выводить не надо. --- Добавлено --- Можно и баланс в сессии хранить, только тогда его надо обновлять не только в БД, но и в сессии.
по логину в базе данных баланс найти и вывести нельзя что ли ? id не удобно, придется тогда id как логин использовать
Можно, но «дополнительные» данные «залогиненного», которых нет в «сессии», всегда выбирают по id. Так положено. Кстати, нафига хранить пароль в сессии, не понятно (для «продления» сессии что ли?). Также в сессию нужно писать данные из БД, а не из пользовательского ввода (я про мыло в показанной выше команде).
если кэш и куки почистил в браузере, при входе в аккаунт вводить нужно логин [например Alex] а поиск данных по бд идет по id, id неоткуда будет взять, только по логину можно будет найти данные
обо всём да помаленьку говорим, можешь пример привести как по логину найти баланс и через echo вывести, пока все мои попытки четны --- Добавлено --- так пробовал , не работает, в чем проблема PHP: $result = $mysqli->query('SELECT `bln` FROM `users` WHERE email = '".$email."''); while($row = $result->fetch_assoc()) { echo '<p>Запись id='.$row['id'].'. Текст: '.$row['bln'].'</p>'; }
Кстати, запрос может выдавать ошибку даже при безошибочном синтаксисе Поэтому это только первая проблема.
подключился норм, смог вывести все данные но по выборке пользователя не получилось пока --- Добавлено --- сказал же что можно по логину найти, маил в моем случае логин, по логину моему хочу баланс свой вывести
Говорю, с кавычками разберитесь. Потом с тем, что пользовательский ввод может «поломать» запрос, даже если он с виду правильный. А потом с тем, что даже не поломанный запрос при опред. условиях может вызывать ошибку. В общем успехов в обучении!
сенкс --- Добавлено --- в коде выше запрос PHP: $result_query_select = $mysqli->query("SELECT * FROM `users` WHERE email = '".$email."' AND password = '".$password."'"); кавычки такие же, но работает