Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Помогите с базой (https://forum.antichat.xyz/showthread.php?t=59808)

-=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

Цитата:

Сообщение от -=ALbaNeЦ=-
Ну впринципе да! Первая страничка просто два поля для ввода(ид и пас) и кнопка запроса, а потом как то нужно чтобы по всем таблицам прошлась и именно для введенного ид ученика, собрала инфу и вывела в табл примерно так:
Предмет | Дата|
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 код:

<?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 код:

<?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 (Тут форма для отправки данных)
Код 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 код:

<?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 код:

<?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:
Код 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, очень признателен, пойду потестирую эти скрипты:)


Время: 03:41