PDA

Просмотр полной версии : Помогите с базой


-=ALbaNeЦ=-
24.01.2008, 19:24
Народ помогите пожалуйста!
Есть БД- в ней 5 таблиц:
klass
ocenka
predmet
teacher
users
В users поля -там ID, имя, фамилия ...... ,класс,пароль!
В teacher- tID, имя, фам ............предмет1......пркдмет2, пароль
В predmet -pID,название, tID
В ocenka- дата, оценка, pID, ID-ученика(из users)
В klass- kID, предмет1............предмет13!
Нужно как то связать все эти таблицы примерно так- вводишь ИД юзера и его пароль и тебе выдается таблица со всеми всеми прдметами для данного класса, и оценками!
Вот только все это связать у мя никак не получается!!!Помогите ПЛИЗЗ!!!!!!!

mad_xakep
24.01.2008, 19:26
это типа запрос сделать ?

-=ALbaNeЦ=-
24.01.2008, 20:00
Ну впринципе да! Первая страничка просто два поля для ввода(ид и пас) и кнопка запроса, а потом как то нужно чтобы по всем таблицам прошлась и именно для введенного ид ученика, собрала инфу и вывела в табл примерно так:
Предмет | Дата|
05|06|07|08|09
___________________________________
Алгебра | 4 | н |
Русский | 3 | 4 |
Геом | 1 | 5 |
_____________|

Ну или может подскажите как получше сделать!!!

-=ALbaNeЦ=-
24.01.2008, 20:34
Ну впринципе да! Первая страничка просто два поля для ввода(ид и пас) и кнопка запроса, а потом как то нужно чтобы по всем таблицам прошлась и именно для введенного ид ученика, собрала инфу и вывела в табл примерно так:
Предмет | Дата|
05|06|07|08|09
___________________________________
Алгебра | 4 | н |
Русский | 3 | 4 |
Геом | 1 | 5 |
_____________|

Ну или может подскажите как получше сделать!!!
Не обязательно чтоб именно так выводилось, эт я так думаю, но может так вообще и нельзя вывести! Подскажите!!!!

PiNzit
25.01.2008, 01:11
Я так понимаю разные классы изучают разный набор предметов да? В атком случае когда ученик логинится проверяеш его класс, а даллее из спец таблицы джойномвыбираеш нужные предметы, подробнее о джойнах почитай тут http://www.knizheknet.msk.ru/www.knizhek.net_406.rar (Сама книга на другую тему, но твой вопрос достаточно понятно освящен на странице 126 "раздел 3.4.2 Реструктуризация модели")

-=ALbaNeЦ=-
25.01.2008, 03:32
Ссылка на книжку битая:) РАзные классы не изучают разные предметы, просто у каждого класса их разное количество и кое гдн разные название!

-=ALbaNeЦ=-
25.01.2008, 15:46
Скажите хотя бы код странички:
Вводишь ИД и пас, она соединяется с таблицой users и при прохождении проверки просто тупо выдае на белом листе остальные данные из таблицы, тобишь имя, фамилию, отчество и класс! Подскажите пожалуйтса как это реализовать, а там мож я сам от этого смогу плясать

bul.666
25.01.2008, 16:31
select name, last_name,класс from users where name=".SESSION['name'];
Если авторизация была по сессиям... =\

-=ALbaNeЦ=-
25.01.2008, 16:51
Не запрос то я знаю, я имел ввиду код самой авторизации! Ну там поля ввода к ним чет привязаь надо(плохо в кодинге, сам не знаю)кнопочка ок связанная наверно тоже с базой.

-=ALbaNeЦ=-
25.01.2008, 18:52
Вот есть страничка login.php
<? include_once ("config.php"); ?>
<html>
<head>
<title>Запрос данных ученика</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<p><font face="Arial, Helvetica, sans-serif" size="5"><b>Запрос данных ученика</b></font></p>

<form name="Sample" method="post" action="<? print $resultpage ?>">
<table width="40%" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000">
<tr>
<td colspan="2" bgcolor="#FFFFCC" valign="middle">
<div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b>Запрос</b></font></div>
</td>
</tr>
<tr>
<td width="32%" bgcolor="#CCCCCC" valign="middle"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&nbsp;ID</font></b></td>
<td width="68%" valign="middle"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">
&nbsp;
<input type="text" name="ID" size="15" maxlength="15">
</font></b></td>
</tr>
<tr>
<td width="32%" bgcolor="#CCCCCC" valign="middle"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&nbsp;Пароль</font></b></td>
<td width="68%" valign="middle"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">
&nbsp;
<input type="password" name="password" size="15" maxlength="15">
</font></b></td>
</tr>
<tr valign="middle" bgcolor="#CCCCCC">
<td colspan="2">
<div align="center">
<input type="submit" name="Login" value="OK">
<input type="reset" name="Clear" value="Очистить">
</div>
</td>
</tr>
</table>
</form>

<p>&nbsp;</p>
</body>
</html>
После ввода ИД и пасса должно перенаправлятся на страничку проверки этих данных и если данные верни выдавать остальные данные из таблицы, а если не верны перводить на какуенибудь страничку! Подскажите код этой странички проверки плиз!

bul.666
25.01.2008, 19:04
<?php

include ("header.php");

echo "<form action='auth.php' method='post'>
<span style='margin-left:90px;'>Login :</span> <br /><span style='margin-left:90px;'><input type='text' name='name' value='".$_SESSION['name']."' /></span><br /><br />
<span style='margin-left:90px;'>Pass :</span> <br /><span style='margin-left:90px;'><input type='password' name='password' value='".$_SESSION['password']."' /></span><br /><br />
<span style='margin-left:90px;'><input type='submit' value='Войти' title='Войти' /></span>
</form>";

if($_POST['name'] && $_POST['password'])
{

if(!get_magic_quotes_gpc())
{
$password = $_POST['password'];
$name = mysql_escape_string($_POST['name']);
} else {
$password = stripslashes($_POST['password']);
$name = $_POST['name'];
}

$password = md5($password);
$query = "SELECT * FROM `users` WHERE `name` = '".$name."' AND `pass` = '".$password."'";
$result = mysql_query($query);
if(!$result) exit("Ошибка");

if(mysql_num_rows($result))
{
$_SESSION['fname'] = $name;
$_SESSION['password'] = $password;
setcookie('name_cook',$_SESSION['fname'],time()+ 86400 * 30 * 12);
setcookie('pass_cook',$_SESSION['password'],time()+ 86400 * 30 * 12);
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD><body>";
} else {
echo("<span style='margin-left:90px;'>Неверный пароль</span>");
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='1; URL=index.php'></HEAD><body>";
}
}

if($_GET['do'] == 'logout')
{
setcookie('name_cook', "");
setcookie('pass_cook', "");
session_destroy();
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD></HTML>";
}

include ("footer.php");
?>
PS. CODED by Isis

-=ALbaNeЦ=-
25.01.2008, 19:20
а header.php & footer.php где взять?

-=ALbaNeЦ=-
25.01.2008, 19:24
И насколько я понял это страница не проверки, а именно ввода, а вот перенаправляет она как раз на то что походу мне надо!!!!

bul.666
25.01.2008, 21:42
Омг тебе надо проверку наличия кук?

-=ALbaNeЦ=-
26.01.2008, 05:20
Не мне куки не нужны(вроде не нужны). Мне нужны такая фишка:
1стр- подключение к базе данных, два поля ввода и кнопка окей и сброс
2.стр - это страница куда перенаправляет первая после нажатия окей, на этой страници какойто код, который подключается к бд проверяет введенные данные на первой и если они совпадают перенапавляет на 3, а если нет обратно на первую
Вот код второй стран мне и нужен:)

-=ALbaNeЦ=-
26.01.2008, 18:50
ОООО нашел впринципе подходящий мне скрипт!
Но остался вопрос! Вот скрипт:
<?php

include("config.php");

$connect = mysql_connect("$dbhost", "$dbusername", "$dbpass");
mysql_select_db("$dbname", $connect);

session_start();

if(!isset($ID)) {

echo "<form method=\"POST\" action=$PHP_SELF>
<center>
<table>
<tr>
<td>Username:</td>
<td><input type=\"text\" name=\"ID\" size=\"20\"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type=\"password\" name=\"password\" size=\"20\"></td>
</tr>
<tr>
<td colspan=\"2\">
<p align=\"center\"><input type=\"submit\" value=\"Submit\" name=\"submit\"></td>
</tr>
</table>
</center>
</form>";
exit;
}

session_register("ID");
session_register("password");

$sql = "SELECT * FROM users WHERE ID = \"$ID\" AND password = \"$password\"";
$result = @mysql_query($sql) or die("No.");

if(mysql_num_rows($result) == "0") {

session_unregister("ID");
session_unregister("password");

echo "<h2 align=center>Wrong username and password, try again</h2>";
exit;

}

$ID = mysql_result($result,0,"name");
mysql_close($connect);

?>
А вопрос такой:
$ID = mysql_result($result,0,"name");- вот эта строка выводит после проверки ид и пасса строку из таблицы-имя, а как зделать чтоб помимо строки имя она выводила и строку фамилия и отчество и класс??? Помогите кто может плиз!!!

-=ALbaNeЦ=-
27.01.2008, 08:08
Ну плиз помогите, очень надо!!!!!!

bul.666
27.01.2008, 12:45
Короче вот накатал проверку пароля и вывод данных:
Создал БД "db" и таблицу users
Внес туда 5 полей...
Вот SQL:

# phpMyAdmin SQL Dump
# version 2.5.6
# http://www.phpmyadmin.net
#
# Хост: localhost
# Время создания: Янв 27 2008 г., 11:34
# Версия сервера: 3.23.53
# Версия PHP: 4.3.6
#
# БД : `db`
#

# --------------------------------------------------------

#
# Структура таблицы `users`
#

CREATE TABLE `users` (
`id` tinyint(3) unsigned NOT NULL auto_increment,
`name` varchar(40) NOT NULL default '',
`last_name` varchar(40) NOT NULL default '',
`class` char(2) NOT NULL default '',
`password` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

#
# Дамп данных таблицы `users`
#

INSERT INTO `users` VALUES (1, 'Ivan', 'Ivonov', '6b', 'iamhacker');

Отсюда создастая Таблица users:
1 Ivan Ivanov 6b iamhacker
Дальше PHP:
Файл index.html (Тут форма для отправки данных)

<form action="auth.php" method="POST">
Name: <input type="text" name="name"><br>
Password: <input type="password" name="password">
<input type="submit">
</form>

Файл auth.php (Тут проверки данных имя и пароля и редирект на вывод данных)
<?php
mysql_connect("localhost","","");
mysql_select_db("db");

if(isset($_POST['password'])) {
$query = "SELECT * FROM `users` WHERE `name` = '".$_POST['name']."' AND `password` = '".$_POST['password']."'";
$result = mysql_query($query);
if(mysql_num_rows($result))
{
$_SESSION['name'] = $_POST['name'];
$_SESSION['password'] = $_POST['password'];
setcookie('name',$_SESSION['name']);
setcookie('password',$_SESSION['password']);
Header("Location: db.php");
}else {
echo "Wrong Password!";
}
}
?>
Тут я немного поизвращался с COOKIE и SESSION =)
Файл db.php (Сюда нас привел редирект из auth.php)
<?php
mysql_connect("localhost","","");
mysql_select_db("db");

$result = mysql_query("SELECT * FROM `users` WHERE `name`='".$_COOKIE['name']."'");
mysql_close();
while($data = mysql_fetch_row($result))
{
list($id,$name,$last_name,$class,$password)=$data;
echo "
<table>
<tr>
<td>ID</td><td>$id</td>
</tr>
<tr>
<td>NAME</td><td>$name</td>
</tr>
<tr>
<td>LAST_NAME</td><td>$last_name</td>
</tr>
<tr>
<td>CLASS</td><td>$class</td>
</tr>
<tr>
<td>PASSWORD</td><td>$password</td>
</tr>
</table>";
}
?>
Результат скрипат при правильном вводе name='Ivan' password='iamhacker':
ID 1
NAME Ivan
LAST_NAME Ivonov
CLASS 6b
PASSWORD iamhacker
В ФОРМАТЕ HTML:

<table>
<tr>
<td>ID</td><td>1</td>
</tr>
<tr>
<td>NAME</td><td>Ivan</td>
</tr>
<tr>
<td>LAST_NAME</td><td>Ivonov</td>
</tr>
<tr>
<td>CLASS</td><td>6b</td>
</tr>
<tr>
<td>PASSWORD</td><td>iamhacker</td>
</tr>
</table>

:D :D :D :D :D :D :D :D :D :D :D :D :D

-=ALbaNeЦ=-
27.01.2008, 13:06
Спасибо бальшое bul, очень признателен, пойду потестирую эти скрипты:)