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]   

> Без описания
Морозов Семен
Отправлено: 14 Марта, 2012 - 20:22:37
Post Id



Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Март 2012  


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




Здравствуйте. Подскажите пожалуйста: как правильно организовать цикл, чтобы получилось следущее

Спойлер (Отобразить)



ссылки достаются из БД MySql.

У меня получилось сделать первый столбик, а вот как сделать чтобы если в БД строк в столбце было больше четырех, то пятая строка выводилась во втором столбике и т.д. у меня это никак не приходит в голову.


Прикрепленный php файл

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $query = 'SELECT * FROM publication ORDER BY name';
  4. $result = mysql_query($query) or die ('Сбой при доступе к базе данных: '. mysql_error());
  5.  
  6. $text = '<table id=text><tr>';
  7.  
  8. $text .= '<td>';
  9. //в этом столбике у меня выводит из БД строки под номерами от 1 до 4
  10. $count=1;
  11. while ($count<=4 & $row = mysql_fetch_assoc($result))
  12. {$text .= $count.'&nbsp;<a id=text href='.$row['link'].'><img src='.$row['pic']. '&nbsp; align=top border=0 />&nbsp;'.$row['name'].'</a><br>';
  13. $count++;}
  14. $text .= '</td>';
  15.  
  16. $text .= '<td>';
  17. //здесь мне необходимо вывести из БД строки под номерами от 5 до 8
  18. $text .= '</td>';
  19.  
  20. $text .= '<td>';
  21. //здесь мне необходимо вывести из БД строки под номерами от 9 до 12
  22. $text .= '</td>';
  23. $text .= '</tr></table>';
  24. ?>
 
 Top
jovani
Отправлено: 14 Марта, 2012 - 23:21:02
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Март 2012  


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




Морозов Семен попробуйте так
CODE (htmlphp):
скопировать код в буфер обмена
  1. $res = mysql_query("SELECT * FROM table1 LIMIT 0, 4");
  2. $row = mysql_fetch_array($res);
  3.  
  4. echo '<p>Первый столбик</p>';
  5. do {
  6.  
  7.     printf('%s. %s', $row['id'], $row['texts']);
  8.     echo '<br />';
  9. }
  10. while ($row = mysql_fetch_array($res));
  11.  
  12. $res = mysql_query("SELECT * FROM table1 LIMIT 4, 4");
  13. $row = mysql_fetch_array($res);
  14.  
  15. echo '<p>Второй столбик</p>';
  16. do {
  17.  
  18.     printf('%s. %s', $row['id'], $row['texts']);
  19.     echo '<br />';
  20. }
  21. while ($row = mysql_fetch_array($res));
  22.  
  23. $res = mysql_query("SELECT * FROM table1 LIMIT 8, 12");
  24. $row = mysql_fetch_array($res);
  25.  
  26. echo '<p>Третий столбик</p>';
  27. do {
  28.  
  29.     printf('%s. %s', $row['id'], $row['texts']);
  30.     echo '<br />';
  31. }
  32. while ($row = mysql_fetch_array($res));
 
 Top
Plusminuz
Отправлено: 14 Марта, 2012 - 23:28:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 156
Дата рег-ции: Апр. 2011  
Откуда: Россия


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




jovani а если столбиков 100 будет? писать отдельно для каждого свой echo и свой запрос к базе?


-----
учусь... Улыбка
 
 Top
dzubchik
Отправлено: 14 Марта, 2012 - 23:33:39
Post Id



Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Июль 2010  


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




Морозов Семен, немножко модифицировал ваш код
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $query = 'SELECT * FROM publication ORDER BY name';
  3. $result = mysql_query($query) or die ('Сбой при доступе к базе данных: '. mysql_error());
  4.  
  5. $text = '<table id=text><tr>';
  6. $text .= '<td>';
  7. //в этом столбике у меня выводит из БД строки под номерами от 1 до n
  8. $count=0; //начнём с ноля
  9. $n = 4; // количество нужных линков в столбце
  10.  
  11. while ($row = mysql_fetch_assoc($result)){
  12. $text .= $count.'&nbsp;<a id=text href='.$row['link'].'><img src='.$row['pic']. '&nbsp; align=top border=0 />&nbsp;'.$row['name'].'</a><br>';
  13. $count++;
  14. if($count%$n==0){ // если делится без остатка, переходим дальше
  15.      $text .="</td><td>"; // переходим к следующему столбцу
  16. }
  17. }
  18. $text .= '</td></tr></table>';
  19. ?>


Не проверял, но должно работать.
 
 Top
Морозов Семен
Отправлено: 15 Марта, 2012 - 12:30:45
Post Id



Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Март 2012  


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




Огромное спасибо ребята Улыбка

Очень рад, что есть такие замечательные люди как вы
 
 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