Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с выводом данных из базы!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Вывод данных из базы в таблицу!
chehonte
Отправлено: 06 Февраля, 2009 - 11:20:50
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2009  
Откуда: Ташкент


Помог: 0 раз(а)




Здравствуйте!

Вообщем такая задача, есть база в ней много записей и нужно вывести их в 2 колонки в таблицу! Идея такая что сначала делаем mysql_num_rows, смотрим сколько в базе записей делим на 2+1 и в первую колонку выводим первую половину записей, а во вторю колонку остатки =) пробовал написать но чёт торможу =) в 1 колонку всё вываливается, а во 2 никак! помогите пожалуйста очень буду благодарен!


-----
Занимаюсь созданием машины времени, чтобы вернуться в прошлое и предотвратить создание IE =)
 
 Top
Stierus Супермодератор
Отправлено: 06 Февраля, 2009 - 11:26:14
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




код выложить было бы неплохо
 
My status
 Top
chehonte
Отправлено: 06 Февраля, 2009 - 11:40:00
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2009  
Откуда: Ташкент


Помог: 0 раз(а)




Прошу не смеяться =) я не идеал в написании кода! вот что получилось, вообщем с 1 колонкой всё нормально а во 2 выходит только 1 запись а остальные за пределы таблицы улетают, просто немогу понять куда поставить создание 2 td и чтоб всё остальное именно в неё печаталось!
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $result=mysql_query("SELECT * FROM `menu`");
  4. $row=mysql_num_rows($result);
  5. $result2=$row/2+1;
  6. print '<table cellpadding="0" cellspacing="0" border="1"><tr><td>';
  7. $i="1";
  8. while ($array=mysql_fetch_array($result))
  9. {
  10.         if($result2>$i)
  11.         {
  12.                 ?>
  13.                 <input type='checkbox' value="<?PHP print $array['name']; ?>">
  14.                 <?PHP print $array['name']; ?>
  15.                 <?PHP
  16.         }
  17.         else
  18.         {
  19.                 print "<td>";
  20.                 ?>
  21.                
  22.                 <input type='checkbox' value="<?PHP print $array['name']; ?>">
  23.                 <?PHP print $array['name']; ?>
  24.                 <?PHP  
  25. print "<td>";
  26.         }
  27. $i++;
  28. }
  29. print "</td></tr></table>";
  30. ?>
  31.  


-----
Занимаюсь созданием машины времени, чтобы вернуться в прошлое и предотвратить создание IE =)
 
 Top
Stierus Супермодератор
Отправлено: 06 Февраля, 2009 - 11:52:07
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Попробуйте сначала в голове алгоритм составить, а уже потом попытайтесь написать, что хотите, на php. если не получится - поможем. Учитывайте, что таблицы заполняются построчно, т.е. <table><tr><td></td><td></td></tr></table> - это 1 строка , тоесть вы не можете заполнить сначала 1 столбец, потом второй, как бы этого не хотелось Улыбка Нужно сразу оба заполнять.
 
My status
 Top
chehonte
Отправлено: 06 Февраля, 2009 - 11:59:47
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2009  
Откуда: Ташкент


Помог: 0 раз(а)




Я то алгоритм составил в голове токо криво Радость а новый чёт не получаесО Улыбка


-----
Занимаюсь созданием машины времени, чтобы вернуться в прошлое и предотвратить создание IE =)
 
 Top
Stierus Супермодератор
Отправлено: 06 Февраля, 2009 - 12:11:40
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




как насчет :
1. сохранить все записи в массив
2. Посмотреть размер массива
3. В цикле заполнить таблицу :
ячейка первого столбца будет I-й элемент массива,
ячейка второго столбца будет (i+ половина размера массива)-й элемент массива
 
My status
 Top
chehonte
Отправлено: 06 Февраля, 2009 - 12:21:21
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2009  
Откуда: Ташкент


Помог: 0 раз(а)




Вроде дошло Радость буду пробовать!
(Добавление)
Вообщем мучился мучился, в конце концов сделал так Улыбка
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $result=mysql_query("SELECT `name` FROM `menu`");
  4. print  '<table cellpadding="0" cellspacing="0" border="1">';
  5. $print=false;
  6. while ($array=mysql_fetch_array($result))
  7. {
  8.         if(!$print)
  9.         {
  10.                 print "<tr><td>";
  11.                 ?>
  12.                 <input type='checkbox' value="<?PHP print $array['name']; ?>" />
  13.                 <?PHP
  14.                 print $array['name'];
  15.                 print "</td>";
  16.                 $print=true;
  17.         }
  18.         else
  19.         {
  20.                 print "<td>";
  21.                 ?>
  22.                 <input type='checkbox' value="<?PHP print $array['name']; ?>" />
  23.                 <?PHP
  24.                 print $array['name'];
  25.                 print "</td></tr>";
  26.                 $print=false;
  27.         }
  28. }
  29.  
  30. print "</table>";
  31. ?>
  32.  

(Отредактировано автором: 06 Февраля, 2009 - 13:41:10)



-----
Занимаюсь созданием машины времени, чтобы вернуться в прошлое и предотвратить создание IE =)
 
 Top
Stierus Супермодератор
Отправлено: 06 Февраля, 2009 - 13:53:27
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Тебе нужно, что бы было именно в 1-й колонке 1-я половина, во 2-й вторая :
1 5
2 6
3 7
4 8
...

или можно сделать что будет идти так:

1 2
3 4
5 6
7 8
...

?
 
My status
 Top
chehonte
Отправлено: 06 Февраля, 2009 - 14:48:49
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2009  
Откуда: Ташкент


Помог: 0 раз(а)




Последний скрипт который я кинул это реализация второго варианта предложенного вами, а вообще желательно бы сделать первый вариант Улыбка

(Отредактировано автором: 06 Февраля, 2009 - 14:50:35)



-----
Занимаюсь созданием машины времени, чтобы вернуться в прошлое и предотвратить создание IE =)
 
 Top
Stierus Супермодератор
Отправлено: 06 Февраля, 2009 - 15:05:29
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Цитата:
а вообще желательно бы сделать первый вариант

1 Цикл заполняет массив записями из базы данных, но ничего не выводит
2. Смотрим сколько элементов в массиве, делим пополам - это наша дельта
3. for ($i=0; $i<#наша дельта; $i++){ - второй цикл по уже сформированному массиву
внутри цикла выводим строку (2 ячейки),
ячейка первого столбца будет I-й элемент массива,
ячейка второго столбца будет (i+ #наша дельта)-й элемент массива

ps
Когда пополам делить будешь - учитывай случаи нечётных чисел Улыбка. Подробнее алгоритм не знаю как описать, разве что всё написать самому, что не хотелось бы.
 
My status
 Top
chehonte
Отправлено: 06 Февраля, 2009 - 15:12:56
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2009  
Откуда: Ташкент


Помог: 0 раз(а)




Stierus пишет:
Когда пополам делить будешь - учитывай случаи нечётных чисел


Да я об этом тоже думал, но в 1 скрипте который я прислал, там более менее всё работало, у меня в базе было 9 записей, в 1 столбец вышло 5, а остальные 4 тоже вышли, но только за пределы таблицы улетели Радость

А вообще попробую доработать ваше предложение если не лень будет, ото уж чёт впарился, пол дня только этот скрипт мучил Радость если вдруг доберусь то скину сюда готовый вариант!

Большое вам спасибо за помощь! Улыбка


-----
Занимаюсь созданием машины времени, чтобы вернуться в прошлое и предотвратить создание IE =)
 
 Top
chehonte
Отправлено: 06 Февраля, 2009 - 19:10:17
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2009  
Откуда: Ташкент


Помог: 0 раз(а)




Вот конечный результат, может кому и пригодиться
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $result=mysql_query("SELECT * FROM `menu`");
  4. $row=mysql_num_rows($result);
  5. $result2=ceil($row/2);
  6. print '<table cellpadding="0" cellspacing="0" border="0"><tr valign="top"><td width="150">';
  7. $i="1";
  8. while ($array=mysql_fetch_array($result))
  9. {
  10. ?>
  11.         <input type='checkbox' value="<?PHP  print $array['name']; ?>">
  12.         <?PHP  print $array['name']; ?>
  13.                 <?PHP  
  14.         if($result2==$i)
  15.         {
  16.                 print "</td><td width='150'>";
  17.         }
  18.         $i++;
  19. }
  20. print "</td></tr></table>";
  21. ?>
  22.  


-----
Занимаюсь созданием машины времени, чтобы вернуться в прошлое и предотвратить создание IE =)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB