[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с таблицами
Гость_Александр
Доброго времени всем!
Возникла такая задачка. Имеется бланк документа на бумаге (альбомная ориентация), состоящий из 3-х таблиц по 3 колонки. Таблицы размещены рядом (бок-обок). Необходимо из базы вывести данные для распечатки на бланке.
Сколько эти данные займут таблиц - неизвестно. Но если данные не помещаются на одной таблице надо продолжить заполнение соседней таблицы.
Я делаю вывод данных через <div> и <table>:
PHP
<? 
echo 
"<div id=1 style=\"position:absolute;top:155;left:58;\">"
echo 
"<table border=0 width=550 cellspacing=2 cellpadding=0>"
while (
$line mysql_fetch_array($resultMYSQL_ASSOC)){ 
echo 
"<tr><td valign=top width=280><p style=\"text-indent: 0px; line-height: 22pt\"><font size=2>"
echo 
"$line[name1]"
echo 
"<td valign=bottom width=90 align=center><p style=\"text-indent: 0px; line-height: 22pt\"><font size=2>"
echo 
"$line[name2]"
echo 
"<td valign=bottom align=left><p style=\"text-indent: 20px; line-height: 22pt\"><font size=2>"
echo 
"$line[name3]"

echo 
"</table>"
echo 
"</div>"

Но таблица выходит за пределы бланка. Считать строки таблицы нельзя - некоторые ячейки содержат текст в несколько строк.

Может у кого есть идеи?



Спустя 16 минут, 36 секунд (14.05.2009 - 08:35) olgatcpip написал(а):
A где у тебя </tr>? И вообще где закрывающие теги?

Спустя 54 минуты, 18 секунд (14.05.2009 - 09:29) glock18 написал(а):
Задачу конкретнее опиши. Чего-то я не могу понять.

Спустя 1 минута, 49 секунд (14.05.2009 - 09:31) vedmed написал(а):
Во-первых согласен с olgatcpip, нужно закрывать ячейки, т.е. должно быть так:
PHP
while ($line mysql_fetch_array($resultMYSQL_ASSOC)){
echo 
"<tr><td valign=top width=280><p style=\"text-indent: 0px; line-height: 22pt\"><font size=2>";
echo 
"$line[name1]";
echo 
"</font></p>";
echo 
"</td>";
echo 
"<td valign=bottom width=90 align=center><p style=\"text-indent: 0px; line-height: 22pt\"><font size=2>";
echo 
"$line[name2]";
echo 
"</font></p>";
echo 
"</td>";
echo 
"<td valign=bottom align=left><p style=\"text-indent: 20px; line-height: 22pt\"><font size=2>";
echo 
"$line[name3]";
echo 
"</font></p>";
echo 
"</td>";
echo 
"</tr>";
}


Во-вторых посчитай сколько у тебя строк умещается на странице и сделай цикл в цикле, т.е. первый цикл у тебя создает таблицу(не заканчивается пока есть данные из базы (while($line = mysql_fetch_assoc($result)))), второй цикл у тебя у тебя создает строки в количестве которое умещается на листе, т.е.
PHP
(for $i=0;$i<(количество строк умещающихся на листе);$i++) 
{
echo 
"<tr><td valign=top width=280><p style=\"text-indent: 0px; line-height: 22pt\"><font size=2>";
echo 
"$line[name1]";
echo 
"</td>";
echo 
"<td valign=bottom width=90 align=center><p style=\"text-indent: 0px; line-height: 22pt\"><font size=2>";
echo 
"$line[name2]";
echo 
"</td>";
echo 
"<td valign=bottom align=left><p style=\"text-indent: 20px; line-height: 22pt\"><font size=2>";
echo 
"$line[name3]";
echo 
"</td>";
echo 
"</tr>";
}


Оформляй код согласно правилам форума!!!

Спустя 44 минуты, 44 секунды (14.05.2009 - 10:15) Гость_Александр написал(а):
1-е. Спасибо за ответы!!!!!!!!!!!!!!!!!
2-е. Дело не в закрывающих тегах!!! На практике и так все закрывается где надо.
3-е. Я сказал, что считать строки нельзя!!!! Этот вариант и я думал.

Ну а если точно - задача такова:

- все, кто заканчивал ВУЗ знают что вместе с дипломом выдается приложение с оценками - это лист формата А4 в альбомной ориентации (украинский стандарт).
- с одной стороной я разобрался - та все просто - позиционирую блоки и вывожу данные в таблицах.
- а вторая стророна выглядит как 3 таблицы размещенные бок-обок.
- каждая таблица состоит из 3-х колонок: первая - название дисциплины, вторая - кол-во часов, третья - оценка.
- выводить данные надо построчно, но названия дисциплин по кол-ву символов разные - одни могут занять одну строку, другие - 2-е или даже 3-и, по-этому считать стороки неправильно - я не знаю сколько дисциплин поместится в первую таблицу!!!

Вот так конкретнее. Я на связи. ICQ: 314683390 если надо.

Спустя 26 минут, 55 секунд (14.05.2009 - 10:42) olgatcpip написал(а):
<td width="33%"> не помогает?

Спустя 16 минут, 31 секунда (14.05.2009 - 10:59) vedmed написал(а):
Тогда надо проверять высоту таблицы после каждого добавления строки, например, jQuery: $("#table").height() и добавлять строки, пока таблица меньше определенного размера.

Спустя 13 минут, 13 секунд (14.05.2009 - 11:12) Гость_Александр написал(а):
С высотой таблицы я думал, но незнал как!!!
Если не сложно то по-подробнее - примерчик!

Заранее благодарен!!!

Спустя 58 минут, 44 секунды (14.05.2009 - 12:11) vedmed написал(а):
Я бы предложил php-скриптом вытаскивать данные из таблицы и отправлять их с помощью Json jQuery-скрипту.
Код php-скрипта был бы примерно такой:
PHP
$query = 'SELECT ххх FROM ххх';
$line=mysql_query($query);                
while($line=mysql_fetch_assoc($result)){                                    
                $dat
[] = $result;                        
        
}
/*здесь кодируем массив jsonom,массив 
у нас содержит значения типа $dat[val] - значение оценки,
 $dat[name] - название примера */
echo json_encode($dat);<


Примерный код JavaScript:
HTML
$("#table").ready(function(){
- таблица с идентификатором, в которую будем вставлять данные
$.getJSON("/php_script_base.php", function(data){
for(var i=0;i<count(data);i++) {
var Theight=$("#table").height();
if (Theight<1000) {
$("#table").append("<tr>");
$("#table").append("<td>"+data.name[i]+"</td>");
$("#table").append("<td>"+data.val[i]+"</td>");
$("#table").append("</tr>");
}
}


Ну вот как-то так. Просто с ходу, код не проверял.

Спустя 9 минут, 19 секунд (14.05.2009 - 12:20) Гость_Александр написал(а):
Это уже интереснее.

Только пару вопросов - прошу прощения я только учусь smile.gif

1. php_script_base.php - это внешний файл с запросом к базе?
2. Библиотек не надо никах подключать?

Спустя 4 минуты, 34 секунды (14.05.2009 - 12:25) Гость_Александр написал(а):
В догонку!!!

Только ведь надо использовать цикл (While вместо If)?

Спустя 37 минут, 6 секунд (14.05.2009 - 13:02) vedmed написал(а):
1. php_script_base.php - угу. файл с запросом к базе.
2. только jQuery
3. А чем вам не нравится if c for?

Спустя 28 минут, 39 секунд (14.05.2009 - 13:30) Guest написал(а):
С третьем прогнал sad.gif

Пробую собрать, но не получается.

Посмотри коды.

php_script_base.php

PHP
<?
$query_d "SELECT name_d FROM $table_disciplin";
$line_d=mysql_query($query_d);  

while(
$line_d=mysql_fetch_assoc($result_d)){                                    
                
$dat[] = $result_d;                        
        }
echo 
json_encode($dat);



Основной документ:

HTML
echo "<div id=3 style=\"position:absolute;top:145;left:700;\">";
echo "<table border=1 width=550 cellspacing=2 cellpadding=0>";
?>

<script language="JavaScript">
<!--
$("#table").ready(function(){
$.getJSON("php_script_base.php", function(data){
for(var i=0;i<count(data);i++) {
var Theight=$("#table").height();
if (Theight<1000) {
$("#table").append("<tr>");
$("#table").append("<td>&ndsp;"+data.name[i]+"</td>");
$("#table").append("<td>&ndsp;"+data.val[i]+"</td>");
$("#table").append("</tr>");
}
}
//-->
</script>
<?
echo "</table>";
echo "</div>";

Спустя 8 часов, 44 минуты, 35 секунд (14.05.2009 - 22:15) Guest написал(а):
Добрый вечер, не было времени написать раньше.
Во-первых зачем тебе в html код php? Забудь, приучайся использовать чистый код php, чистый код JavaScript, чистый код html.
Во-вторых, код html должен быть вида:
HTML
<html>
<head>
<title><title>
</head>
<body>
<table id="mytable">
</table>
</body>
</html>


В jQuery $("#table") - означает выбрать элемент с идентификатором id="table", в том коде html, что я тебе привел команда будет выглядеть вот так $("#mytable").
В третьих прочитай как передаются значения в JSON. Я уверен что массив $dat, у тебя имеет ключи массива не $dat[name], $dat[val].
Не воспринимай код буквально, я лишь дал тебе направление. Анализируй и старайся выбрать то, что подойдет тебе.

Спустя 1 минута, 10 секунд (14.05.2009 - 22:16) vedmed написал(а):
Забыл зарегиться.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.