Добрый вечер, столкнулся с такой проблемой, быть может кто подскажет как это сделать или посоветует где прочесть. мне не обходимо в базе создать такую таблицу, но что то логика не лезит в голову.
Я предпологаю что здесь нужно объеденить 3 а быть может и 4 таблицы, но как это реализовать в базе, не пойму. Вот дамп таблиц Код (Text): CREATE TABLE IF NOT EXISTS `day` ( `id_d` int(11) NOT NULL AUTO_INCREMENT, `day` text NOT NULL, PRIMARY KEY (`id_d`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `fio` ( `id_u` int(11) NOT NULL AUTO_INCREMENT, `name` text NOT NULL, PRIMARY KEY (`id_u`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `pred` ( `id_p` int(11) NOT NULL AUTO_INCREMENT, `chas` text NOT NULL, PRIMARY KEY (`id_p`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; вот код, как видите получается какаятя чушь. мозги кипят .... PHP: <table width="80%" border="1" cellspacing="0" cellpadding="3"> <tr> <td width="5%" scope="col">b</td> <td scope="col"><table width="80%" border="1" cellspacing="0" cellpadding="3"> <tr> <?php include('config.php'); ?><? $result = mysql_query("SELECT * FROM `pred` LIMIT 0, 7"); //echo $numOL = mysql_num_rows($result); while($row = mysql_fetch_array($result)){ echo ' <td nowrap> <a href="test.php?id='.$row['id_p'].'">'.stripslashes($row['chas']).'</a> </td> '; } ?> </tr> </table></td> </tr> <tr> <td><table bgcolor="#CCCCCC"><?php include('config.php'); ?><? $result = mysql_query("SELECT * FROM `fio` "); //echo $numOL = mysql_num_rows($result); while($row = mysql_fetch_array($result)){ echo ' <tr> <td nowrap> <a href="test.php?id='.$row['id_u'].'">'.stripslashes($row['name']).'</a> </td> </tr>'; } ; ?></table></td> <td><table bgcolor="#999999"><?php include('config.php'); ?><? $result = mysql_query("SELECT * FROM `fio` "); $numOL = mysql_num_rows($result); $i=1; for($i=1; $i<=$numOL; $i++){ echo ' <tr> <td> проверка </td> </tr>'; } ; ?></table></td> </tr> </table>
Таблица в БД судя по всему плоская, а чтоб вывести на экран в нужном виде изучаем HTML <table> ............... </table>
Наверно я не совсем правильно изложил то что я хочу сделать. Все данные в таблице, динамически подгружаемые из mysql. Мне необходимо сделать что бы параметры из таблицы с цыфрами выводились каждая привязанной к своему дню, фамилии и "час", где также "час", тоесть "первое","второе","третье" также меняютс от зависимости дня недели.
aziz ничерта не понятно. =) надо плясать не от того что вы хотите, а от того что вы хотите - потом структура бд строится от этого - потом уже просто и легко все выводится... мозги у вас кипят по простой причине (по той же по которой вывести не получается). в предложеной вами структуре бд из трех таблиц я вижу что есть айди и какие-то данные. и? как они связаны между собой? почему данные по этому айди нужно выводить туда-то или сюда-то - ниоткуда не следует. кому пренадлежат или предназначаются данные - не понятно. либо заводите таблицу куда пишите кому какой айди раздали, либо пишите связи прямо в те же строки как еще один айди =) только надо сначала сформулировать задачу человеческим языком. потом почесать репу, потом подумать нафига это все надо, и уже от этого думать сколько таблиц надо и как их связывать.
Дело в том что ФИО берется с одной таблицы, день недели с другой, "первое"...."седьмое" с третьей таблицы и меняет место в зависимости от дня недели а заполняющие цыфры с четвёртой. Эти цыфры привязаны к первым трём таблицам. В конце пользователь видит таблицу как на картинке. Вот и не пойму как это реализовать.
еще раз. то что одно берется из одной, другое из другой - это и ежу понятно. это постановка задачи такая. одно будет жить в одной, а другое - в другой. а вот какое одно брать из одной, и какое другое из другой - нигде не написано. я по крайней мере этого не вижу.
Из 1.таблицы фио беру фамилии и имя. из 2.таблицы день беру дни недели. из 3.таблицы пред беру "первое"..."седьмое".(данные из этой таблицы меняют очередность в зависимости от дня недели) из 4.таблицы очки (её дампа здесь нет.) беру заполняющие цыфры. теперь 4 табл. связано с 1,2.3. таблицами. к примеру, если смотрим Смирнов Андрей то у него в понедельник в графе первое 2 очка и тд. отдельно все таблицы создал, но немогу их объеденить что бы при выход получить нужную мне таблицу.
базы данных были специально созданы для того, чтобы можно было произвольно и по-всякому из них данные выдергивать. то что вы "берете данные" из них вам ничего не дает. они могут идти в любой последовательности. То что у вас у Смирнова Андрея в понедельник раз от раза два очка - это не более чем по сути случайность. Вам необходимо строго указать, что, мол, данная строка в таблице очков принадлежит андрею и понедельнику. Панимай?
Это я прекрасно понимаю, вто мто и проблема что не получается у меня это сделать. Не могу никак связять эти таблицы и заставит вывести донные так, как задумано. Игорь? если не ошибаюсь, быть может где нибудь есть скрипт похожий, что бы можно было посмотреть и понять как энто всё делается?
ну вот такой пример есть три группы - админы, клиенты и исполнители. заводим одну таблицу, где эти группы описаны groups id, name, description, rights - айди, название, описание, и права которые они имеют. Это одна строка. Одна запись. 1, Администратор, Рулит тут всяким, создавать_пользователей/удалять_пользователей 2, Клиент, Всегда прав, читать/спрашивать 3, Исполнитель, Работает без предоплаты, читать/писать/отвечать Все просто. Не важно как, но вот их три. Теперь у нас есть необходимость вести список пользователей users id, name соотв - айди, имя 1, Вася 2, Петя 4, Федя 8, Марина 9, Егор кого-то удалили видимо... =) Теперь надо раздать права и обязанности =). Но это можно было бы сделать и в той же таблице. Не важно. Главное, чтобы связь была. id, user_id, group_id 1, 1, 1 2, 2, 1 3, 4, 2 4, 8, 3 5, 9, 3 В принципе можно и во второй же таблице сразу указать их права. например так users id, name, group соотв - айди, имя, группа 1, Вася, 1 - вася админ. сразу видно. Но тогда один человек не может обладать правами и исполнителя и админа. если это нужно - как раз нужна таблица третья. В нее в таком случае будет входить еще одна запись про того же человека id, user_id, group_id 1, 1, 1 - Вася тут 2, 2, 1 3, 4, 2 4, 8, 3 5, 9, 3 6, 1, 3 - Вася тут Тогда можно сделать выборку Select * where user_id='Вася' и получить что вася является исполнителем и несет бремя админа в одном лице. Вот так. А когда вы выбираете подряд все данные и считаете что они как-то между собой соотносятся - это иллюзия. =) Вы даже дату создания записи не храните. Вы по id выборку строите? И если кто-то что-то исправить захочет, и 6 id из одной таблице не будет соответстовать ни одна запись во второй? Ну вот удалили ее внесли новую. Или у вас строго по id привязано и пофик? Допустим так. Тогда нужно указать ORDER BY чтобы точно знать, что в том и том цикле шестой строкой пойдет все про Васю. Но тогда отпадает нужда делать три таблицы. Раз они являются по сути продолжением строки одной и той же. Таблицы нужны когда в одной таблице васи, а в другой понедельник - 2 вторник - 5 а среду вася пропустил - он болел. четверг - 17 и все это про васю. тогда запись должна иметь три поля не считая собственный айди id(по сути тут и не нужен), user_id, day_id или day (зависит от того как вы храните дни), и собственно эти баллы. Строка будет выглядеть для васи так 1, 1, 1, 2 2, 1, 2, 5 3, 1, 4, 17 Для пети так 4, 2, 1, 6 5, 2, 2, 12 6, 2, 3, 7 7, 2, 4, 5 Выборка строится по второй колонке - айди человека, с ордербай третьей колонкой - если в хронологическом порядке. (А если хотим построить допустим в убывающем типа в четверг Вася набрал больше всего баллов, а во вторник чуть меньше - соотв по четвертой.) Вот... Если у вас понедельник + еще раунды или этапы соревнования, или там еще что, надо добавить поле, опять же. например 4, 2, 1, сюда, 6 ясно изложил?