Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> Как мне выташить имя группы из БД
Shkiper  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



head from kettle
******

Профиль
Группа: Сын полка
Сообщений: 1273
Пользователь №: 32830
На форуме: 4 года, 6 месяцев, 21 день
Карма: -11




Все доброго времени суток!
Я эту проблему уже незнаю как и решить
Мне нужно вот что. У меня на тестовом сайте есть формочка на вход. Так вот я ввожу имя и пароль и нажимаю войти потом там выводит Привет и т.д. Так вот мне нужно чтоб и мне выводило имя группы. У меня в таблице есть поле с паролем майлом паролем и т.д. и также поле где указывается номер(id) группы. Все группы хранятся в другой таблице. Так вот я пробовал сделать так. Когда при нажимании на кнопку войти идет запрос в базу где вытаскивает имя пароль и т.д. и также вытаскивает номер группы, а потом же делаю запрос в другую таблицу и вытаскиваю группу где id = номеру группы и потом все в сессии записываю, а потом вписываю в форму где выводи Привет и т.д.(после удачноного входа) так вот все имя маил выводит а вот группу нет при этом ошибок не выводит.Посмотрите код может чтонибудь заметете не то
вот сама форма
<?php
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!

include ("system/data/db.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь

if (isset($_COOKIE['auto']) and isset($_COOKIE['login']) and isset($_COOKIE['password']) and isset($_COOKIE['group']))
{//если есть необходимые переменные
if ($_COOKIE['auto'] == 'yes') { // если пользователь желает входить автоматически, то запускаем сессии
$_SESSION['password']=strrev(md5($_COOKIE['password']))."b3p6f"; //в куках пароль был не зашифрованный, а в сессиях обычно храним зашифрованный
$_SESSION['login']=$_COOKIE['login'];//сессия с логином
$_SESSION['id']=$_COOKIE['id'];//идентификатор пользователя
$_SESSION['group']=$_COOKIE['group'];
}
}


if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существет логин и пароль в сессиях, то проверяем их и извлекаем аватар
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow = mysql_fetch_array($result);
//извлекаем нужные данные о пользователе
}
?>


<?php

if (!isset($myrow['avatar']) or $myrow['avatar']=='') {
//проверяем, не извлечены ли данные пользователя из базы. Если нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа. Но мы не будем его выводить для вошедших, им оно уже не нужно.
print <<<HERE
<form action="http://localhost/phpsite/?do=cache_reg" method="post">
<!-- testreg.php - это адрес обработчика. То есть, после нажатия на кнопку "Войти", данные из полей отправятся на страничку testreg.php методом "post" -->
<p>
<label>Ваш логин:<br></label>
<input name="login" type="text" size="15" maxlength="15"

HERE;


if (isset($_COOKIE['login'])) //есть ли переменная с логином в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его логин уже вписан в нужную графу
echo ' value="'.$_COOKIE['login'].'">';
}


print <<<HERE
</p>
<!-- В текстовое поле (name="login" type="text") пользователь вводит свой логин -->
<p>
<label>Ваш пароль:<br></label>
<input name="password" type="password" size="15" maxlength="15"

HERE;


if (isset($_COOKIE['password']))//есть ли переменная с паролем в в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его пароль уже вписан в нужную графу
echo ' value="'.$_COOKIE['password'].'">';
}

print <<<HERE
</p>
<!-- В поле для паролей (name="password" type="password") пользователь вводит свой пароль -->
<p>
<input name="save" type="checkbox" value='1'> Запомнить меня.
</p>
<p>
<input name="autovhod" type="checkbox" value='1'> Автоматический вход.
</p>

<p>
<input type="submit" name="submit" value="Войти">
<!-- Кнопочка (type="submit") отправляет данные на страничку testreg.php -->
<br>
<!-- ссылка на регистрацию, ведь как-то же должны гости туда попадать -->
<a href="/?do=registration">Зарегистрироваться</a>

<br>
<!-- ссылка на восстановление пароля -->
<a href="send_pass.php">Забыли пароль?</a>

</p></form>
<br>
Вы вошли на сайт, как гость<br><a href='#'>Эта ссылка доступна только зарегистрированным пользователям</a>

HERE;
}

else
{
//при удачном входе пользователю выдается все, что расположено ниже между звездочками.
//************************************************************************************



print <<<HERE
|<a href='/?do=page_profile&id=$_SESSION[id]'>Моя страница</a><br>|<a href='/?do=userlist'>Список пользователей</a><br>|<a href='http://localhost/phpsite/?do=exit'>Выход</a><br><br>

<!-- Между оператором "print <<<HERE" выводится html код с нужными переменными из php -->
Вы вошли на сайт, как <span>
$_SESSION[login]</span><br>
Вы вошли находитесь
$_SESSION[group]<br>
<!-- выше ссылка на выход из аккаунта -->
<img alt='
$_SESSION[login]' src='$myrow[avatar]'>
<!-- Выше отображается аватар. Его адрес содержит переменная
$myrow[avatar] -->

<!-- Именно здесь можно добавлять формы для отправки комментариев и прочего... -->


HERE;


//************************************************************************************
//при удачном входе пользователю выдается все, что расположено ВЫШЕ между звездочками.

}

?>

а вот обработчик
<?php
session_start();

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }


if (empty($login) or empty($password))
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}

$login = stripslashes($login);
$login = htmlspecialchars($login);

$password = stripslashes($password);
$password = htmlspecialchars($password);


$login = trim($login);
$password = trim($password);





include ("system/data/db.php");


$ip=getenv("HTTP_X_FORWARDED_FOR");
if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }

mysql_query ("DELETE FROM oshibka WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 900");

$result = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow = mysql_fetch_assoc($result);

if ($myrow['col'] > 2) {
exit ("Вы набрали логин или пароль неверно 3 раза. Подождите 15 минут до следующей попытки.");


}

$password = md5($password);
$password = strrev($password);
$password = $password."b3p6f";



$result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db) or die(mysql_error());
$myrow = mysql_fetch_assoc($result);
$result3 = mysql_query("SELECT id,name FROM users_group WHERE id='".$myrow['group']."'",$db);
$myrow3 = mysql_fetch_assoc($result3);
if (empty($myrow['id']))
{


$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'");
$tmp = mysql_fetch_row ($select);
if ($ip == $tmp[0]) {

$result52 = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow52 = mysql_fetch_assoc($result52);

$col = $myrow52[0] + 1;
mysql_query ("UPDATE oshibka SET col=$col,date=NOW() WHERE ip='$ip'");
}

else {

mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')");
}

exit ("Извините, введённый вами логин или пароль неверный.");

}
else {

$_SESSION['password']=$myrow['password'];
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];
$_SESSION['group']=$myrow3['name'];
}

if (isset($_POST['save'])){

setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);
setcookie("id", $myrow['id'], time()+9999999);
setcookie("group", $myrow3['name'], time()+9999999);
}

if (isset($_POST['autovhod']))
{

setcookie("auto", "yes", time()+9999999);
setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);
setcookie("id", $myrow['id'], time()+9999999);
setcookie("group", $myrow3['name'], time()+9999999);
}

echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";

?>


Всем заранее спасибо! user posted image



Спустя 4 часа, 39 минут, 31 секунда (11.12.2011 - 18:26) Shkiper написал(а):
Мне ктонибудь поможет???

Спустя 5 минут, 21 секунда (11.12.2011 - 18:31) Семён написал(а):
Мне вещи постирать нада smile.gif

Спустя 22 минуты, 14 секунд (11.12.2011 - 18:53) Placido написал(а):
А зачем отдельный запрос для того, чтобы вытащить название группы? Одним запросом через JOIN

SELECT `users`.`id`, `users`.`avatar`, `таблица с группами`.`имя группы`
FROM `users`
LEFT JOIN `таблица с группами`
ON `users`.`id группы` = `таблица с группами`.`id группы`
WHERE `users`.`login` = '$login'
AND `users`.`password`='$password'
AND `users`.`activation` = '1';

Спустя 1 час, 33 минуты, 2 секунды (11.12.2011 - 20:26) Shkiper написал(а):
Огромное спасибо!!!!! Просто в моей практике я невстречал JOIN. Если чесно сказать я про это только от вас узнал.

Спустя 4 минуты, 40 секунд (11.12.2011 - 20:31) Shkiper написал(а):
Placido при встраивании в обработчик этой конструкцци я столкнулся с проблемой я непонял ваши коментарии ну там например
таблица с группами это таблица в таблице с пользователями или отдельная таблица с группами просьба поставте мне.
И какоая переменная теперь будет содержать имя группы?

Спустя 5 минут, 39 секунд (11.12.2011 - 20:37) Placido написал(а):
Вместо "таблица с группами" нужно вставить имя второй таблицы, где хранятся id групп и имена групп. Вместо "id группы" и "имя группы" имена соответствующих полей.

Спустя 1 минута, 31 секунда (11.12.2011 - 20:38) Shkiper написал(а):
И какая переменная теперь будет содержать имя группы?

Спустя 17 минут, 59 секунд (11.12.2011 - 20:56) Placido написал(а):
Цитата (Deert @ 11.12.2011 - 19:38)
И какая переменная теперь будет содержать имя группы?

$myrow['имя поля, которое вы указали вместо `имя группы`']

Спустя 15 часов, 7 минут, 30 секунд (12.12.2011 - 12:04) Shkiper написал(а):
Извините, но в последнее время я очень туплю. Я просто PHP выучил давно но на время экзаменов все заволил теперь заново проктикуюсь.
Placido, у меня не получилось. помоги мне. Вот структура
users - таблица с пользователями
group - строка в таблице users где лежит id группы пользователей
users_group - таблица с группами
id - ну это айди группы
name - а это имя группы
И пожалуйста вставте это в код обработчика т.к. я вставлял у меня произходили ошибки.
Placido Большое тебе спасибо за все. И всем тем кто мне помог ранее.

Спустя 4 часа, 20 минут, 14 секунд (12.12.2011 - 16:24) Shkiper написал(а):
Всем спасибо я все решил, но не с помошью JOIN другоим способом.
Помогите мне в другом вот запрос
$result = mysql_query ("INSERT INTO `users_group` (`name`, `admin`, `banned`,'view_off_site','view_off_text','poll','downlaod','feedback','search') VALUES ('" . $name . "', '" . $admin . "','" . $banned . "','" . $view_off_site . "','" . $view_off_text . "','" . $poll . "','" . $downlaod . "','" . $feedback . "','" . $search . "')") or die(mysql_error());

Выдает ошибку
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''view_off_site','view_off_text','poll','downlaod','feedback','search') VALUES ('' at line 1

Чё за х**** извините за выражение?

Спустя 12 минут, 47 секунд (12.12.2011 - 16:37) Placido написал(а):
Проблема в апострофах. Нужно использовать обратные кавычки
(`name`, `admin`, `banned`, `view_off_site`, `view_off_text`, `poll`, `downlaod`, `feedback`, `search`)

Спустя 3 дня, 2 минуты, 35 секунд (15.12.2011 - 16:39) Shkiper написал(а):
Спасибо!! Не обратил внимания!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса