Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите разбить на две колонки(столбцы) результат запроса
 
 автор: bohanostra   (01.10.2010 в 07:41)   письмо автору
 
 

Возможно ли вообще вывести результат в два столбца?

<?php

// table content:

$i = 0;
if ( is_array( $this->users ) && count( $this->users ) > 0 ) {
foreach ( $this->users as $userIdx => $user) {
$class = "sectiontableentry" . ( 1 + ( $i % 2 ) ); // evenodd class

if ( $this->allow_profilelink ) {
$style = "style=\"cursor:hand;cursor:pointer;\"";
$style .= " id=\"cbU".$i."\"" ;
} else {
$style = "";
}
if ( $user->banned ) {
echo "\t\t<tr class=\"$class\"><td colspan=\"".$colsNbr."\"><span class=\"error\" style=\"color:red;\">"._UE_BANNEDUSER." ("._UE_VISIBLE_ONLY_MODERATOR.") :</span></td></tr>\n";
}
echo "\t\t<tr class=\"$class\" ".$style.">\n";

foreach ( array_keys( $this->columns ) as $colIdx ) {
echo "\t\t\t<td valign=\"top\" class=\"cbUserListCol" . $colIdx . "\">" . $this->_getUserListCell( $this->tableContent[$userIdx][$colIdx] ) . "\t\t\t</td>\n";


}
echo "\t\t</tr>\n";
$i++;
}
} else {
echo "\t\t<tr class=\"sectiontableentry1\"><td colspan=\"".$colsNbr."\">"._UE_NO_USERS_IN_LIST."</td></tr>\n";
}
?>

  Ответить  
 
 автор: sim5   (01.10.2010 в 07:48)   письмо автору
 
   для: bohanostra   (01.10.2010 в 07:41)
 

Возможно, и даже непосредственно при выводе результата запроса, без всякого промежуточного массива. Ну а массив тем более.

  Ответить  
 
 автор: bohanostra   (01.10.2010 в 07:58)   письмо автору
 
   для: sim5   (01.10.2010 в 07:48)
 

Так, как это сделать????

  Ответить  
 
 автор: sim5   (01.10.2010 в 08:07)   письмо автору
 
   для: bohanostra   (01.10.2010 в 07:58)
 

Подходов может быть несколько, все завист от того что за данные и во что их разместить. Например, это фрагметны текста (скажем так параграфы), разбиваем общее число их на 2, и начинаем последовательно выводить, при этом первая часть будет выводится в один элемент DIV, вторая во второй, ну а все остальное это уже CSS.
Ну а вывод в таблицу так вообще какие проблемы? Если не важно расположение выводимого (слева следующее или снизу предыдущего), то вообще просто.

  Ответить  
 
 автор: bohanostra   (01.10.2010 в 08:21)   письмо автору
 
   для: sim5   (01.10.2010 в 08:07)
 

"Ну а вывод в таблицу так вообще какие проблемы? Если не важно расположение выводимого (слева следующее или снизу предыдущего), то вообще просто."

Расположение не важно...
КАК?
Дайте ответ! С меня пиво =)

  Ответить  
 
 автор: sim5   (01.10.2010 в 08:51)   письмо автору
 
   для: bohanostra   (01.10.2010 в 08:21)
 

Вы что не знаете как устроена html таблица? Выводите в цикле по два элемента ее ячейки (TD) с помещением в них извлеченного из базы, и обрамленных тегами строки таблицы (TR), вот и получится у вас таблица в две колонки.

  Ответить  
 
 автор: bohanostra   (01.10.2010 в 08:57)   письмо автору
 
   для: sim5   (01.10.2010 в 08:51)
 

ну не получается! где я должен поставить теги?

  Ответить  
 
 автор: sim5   (01.10.2010 в 09:03)   письмо автору
 
   для: bohanostra   (01.10.2010 в 08:57)
 

Там где им положено быть:
<table>
в цикле
<tr>
<td>Данные из запроса</td>
<td>Данные из запроса</td>
</tr>
<tr>
<td>Данные из запроса</td>
<td>Данные из запроса</td>
</tr>
<tr>
<td>Данные из запроса</td>
<td>Данные из запроса</td>
</tr>
.... и т.д. до окончания цикла
</table>

PS. Неужели сам код таблицы не подсказывает вам, что после каждых двух итераций цикла нужно закрывать и открывать тег строки таблицы, а при последней итерации только закрыть? При этом первый открывающий тег таблицы вывести вне цикла. Вот у вас и разметиться все (содержимое каждой строки запроса) в две колонки.

  Ответить  
 
 автор: bohanostra   (02.10.2010 в 08:19)   письмо автору
 
   для: sim5   (01.10.2010 в 09:03)
 

Мы видимо не понимаем друг друга. То о чем вы пишите, я делал.
Запрос у меня один: echo "\t\t\t<td valign=\"top\" class=\"cbUserListCol" . $colIdx . "\">" . $this->_getUserListCell( $this->tableContent[$userIdx][$colIdx] ) . "\t\t\t</td>\n";
и если я его выведу в еще один столбец, он у меня будет дублироватся:

<td></td>1 <td></td> <td></td>1<td></td>
<td></td>2<td></td> <td></td>2<td></td>
<td></td>3 <td></td> <td></td>3<td></td>
<td></td>4 <td></td> <td></td>4<td></td>
<td></td>5<td></td> <td></td>5<td></td>
<td></td>6 <td></td> <td></td>6<td></td>

А мне надо один единственный запрос разбить на два столбца, без повторений:

Первый столбец Второй
1 2
3 4
5 6

  Ответить  
 
 автор: sim5   (02.10.2010 в 08:46)   письмо автору
 
   для: bohanostra   (02.10.2010 в 08:19)
 

Вы думаете я провидец, и знаю чего у вас там в результате запроса, и что надо разбить на два столбца? Запрос может вернуть все лишь одну строку записи, а может N-ое их количество. Nn записей результата запроса, это тоже самое, что и массив:
<?
$a 
= array(1,2,3,4,5,6,7,8);
echo 
"<table><tr>";
for(
$i=0$i<count($a); $i++) {
  echo 
"<td>" $a[$i] . "</td>";
  echo 
$i%? ($i+== count($a) ? "</tr>" "</tr><tr>") : null;
}
echo 
"</table>";

Что в вашем случае разбить....

  Ответить  
 
 автор: bohanostra   (04.10.2010 в 00:32)   письмо автору
 
   для: sim5   (02.10.2010 в 08:46)
 

То ли лыжи не едут, то ли я ебанутый! от 1 до 8 я сам считать умею! cbUserListCol на два столбца! ВОПРОС ПОНЯТЕН?????????????

  Ответить  
 
 автор: sim5   (04.10.2010 в 04:47)   письмо автору
 
   для: bohanostra   (04.10.2010 в 00:32)
 

Насчет первого не знаю, ничего определенного сказать не могу. То, что можете считать радует, но класс никак на два не делится, а чего вы там пытаетесь разделить, нет, не понятно, пора бы уже родить слово конкретное.
Одна строка результата выборки, это тоже масссив - считать умеете, делить умеете, разбивайте, вставляйте.

  Ответить  
 
 автор: gurza   (10.12.2011 в 19:10)   письмо автору
 
   для: sim5   (02.10.2010 в 08:46)
 

а как разбить в таком порядке
1 5
2 6
3 7
4 8

  Ответить  
 
 автор: gurza   (11.12.2011 в 16:33)   письмо автору
 
   для: gurza   (10.12.2011 в 19:10)
 

неужели нет идей

  Ответить  
 
 автор: cheops   (11.12.2011 в 16:38)   письмо автору
 
   для: gurza   (10.12.2011 в 19:10)
 

Чтобы разбить данные в таком порядке, вам предварительно нужно сохранить данные в массив, затем вычисилить, какая позиция будет соответствовать точке 5 и после этого выводить в цикле данные $i и $i + 5 в одной строке.

  Ответить  
 
 автор: gurza   (11.12.2011 в 19:25)   письмо автору
 
   для: cheops   (11.12.2011 в 16:38)
 

а готового примерчика нет

  Ответить  
 
 автор: cheops   (11.12.2011 в 19:32)   письмо автору
 
   для: gurza   (11.12.2011 в 19:25)
 

Можно начать с примера по ссылке http://softtime.ru/forum/read.php?id_forum=3&id_theme=8325.

  Ответить  
 
 автор: gurza   (11.12.2011 в 20:44)   письмо автору
 
   для: cheops   (11.12.2011 в 19:32)
 

спасибо за помошь все получилось

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования