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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: выборка из таблицы и сортировка по алфавиту...
relfi
Отправлено: 29 Июня, 2013 - 19:23:46
Post Id


Новичок


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


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




Помогите, пожалуйста! В базе имеется таблица, в ней много строк с id от 1 до 140, а в каждой из строк - 30 полей с названием song1, song2 и т.д., Нужно сделать выборку из этой таблицы всех полей song1, song2 и т.д. до song30 и отсортировать их по алфавиту.

PHP:
скопировать код в буфер обмена
  1. <?PHP $res = mysql_query("SELECT * FROM `table_name` WHERE id='$id'",$db);
  2. $myrow = mysql_fetch_array($res);
  3. for ($a = 0; $a++ < mysql_num_fields($res);) {
  4. printf ("<li>%s</li>
  5. ", $myrow["song$a"]);
  6. }
  7. ?>


Не могу понять что писать после WHERE id...
 
 Top
snikers987
Отправлено: 29 Июня, 2013 - 19:43:20
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




ORDER BY `myfield`


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
teddy
Отправлено: 29 Июня, 2013 - 19:46:41
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


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




relfi
ORDER BY `column` DESC/ASC - на выбор

(Отредактировано автором: 29 Июня, 2013 - 19:47:22)

 
 Top
relfi
Отправлено: 29 Июня, 2013 - 19:54:16
Post Id


Новичок


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


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




ORDER BY - это понятно, но как быть если полей 30*140, которые нужно выбрать
 
 Top
teddy
Отправлено: 29 Июня, 2013 - 19:58:20
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


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




relfi
Тогда добавляем в конец запроса LIMIT 0, 30
 
 Top
relfi
Отправлено: 29 Июня, 2013 - 20:01:55
Post Id


Новичок


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


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




Наверное Вы не поняли. нужно выбрать все поля с именем song1,song2,song3 и т.д. до song30.
 
 Top
teddy
Отправлено: 29 Июня, 2013 - 20:05:37
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


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




relfi
Скорее вы что то делаете не так ) У вас есть 140 полей, вам надо выбрать первые 30 согласно сортировки, покажите запрос
 
 Top
vanicon
Отправлено: 29 Июня, 2013 - 20:08:26
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


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





teddy
Поля и строки это разные вещи Подмигивание

(Отредактировано автором: 29 Июня, 2013 - 20:08:39)



-----
Так было, так есть и так будет
 
 Top
relfi
Отправлено: 29 Июня, 2013 - 20:11:07
Post Id


Новичок


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


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




teddy пишет:
relfi
Скорее вы что то делаете не так ) У вас есть 140 полей, вам надо выбрать первые 30 согласно сортировки, покажите запрос


Имеется таблица в ней имеются 140 строк с id от 1 до 140, в каждой строке имеются 30 полей с именем song1,song2 и т.д. до song30. Нужно выбрать из всех строк id1,id2,id3 и т.д. до id140 поля song1,song2 и т.д. до song30 и отсортировать их по алфавиту. Всего получится полей 140*30=4200.
 
 Top
teddy
Отправлено: 29 Июня, 2013 - 20:19:22
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


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




vanicon
Да, есть такое ) виноват...

relfi
Ну так...
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table_name` ORDER BY `column` ASC LIMIT 0, 30

Потом выводим... echo $row['name']; echo $row['song'];

Если я вас правильно понял, то проблема была в том, что вы указывали конкретный ID, что запрещало выводить ВСЕ записи... А выводило по конкретному критерию...

Если же нужно по id, то оставьте его...

Если и это не так, тогда я вас просто не понимаю )

Кстати, вот в чем проблема я думаю... Я не дочитал что идет дальше после запроса ) Сделайте так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $sql = mysql_query("SELECT * FROM `table_name` ORDER BY `column` ASC LIMIT 0, 30");
  3.     while($row = mysql_fetch_assoc($sql)){
  4.          
  5.           echo $row['name']."<br />";
  6.           echo $row['song']."<br />";
  7.      //и т. д  
  8.   }
  9.  
  10.  

(Отредактировано автором: 29 Июня, 2013 - 20:25:17)

 
 Top
relfi
Отправлено: 29 Июня, 2013 - 20:26:07
Post Id


Новичок


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


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




нужно выбирать по всем id. типа такого
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     $query = "SELECT * FROM `table_name` ORDER BY song1";
  3.     $result = mysql_query($query, $db);
  4.     while ($row = mysql_fetch_assoc($result)){
  5.     $song1[] = $row["song1"];
  6.     $song2[] = $row["song2"];
  7.     $song3[] = $row["song3"];
  8. }
  9. for ($a = 0; $a < count($song1);$a++) {
  10. echo $song1[$a];
  11. echo '<br>';
  12. }
  13. ?>


Но так выводит только все поля с именем song1. А нужно чтобы все от 1 до 30
 
 Top
teddy
Отправлено: 29 Июня, 2013 - 20:36:01
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


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




Если вам нужно выводить результат типа $row[1], то mysql_fetch_array, а не mysql_fetch_assoc

(Отредактировано автором: 29 Июня, 2013 - 20:37:17)

 
 Top
relfi
Отправлено: 29 Июня, 2013 - 20:57:19
Post Id


Новичок


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


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




Нифига неработает!

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     $sql = mysql_query("SELECT * FROM `$view` ORDER BY `column` ASC LIMIT 0, 30");
  3.     while($row = mysql_fetch_array($sql)){
  4.         echo $row['song1']."<br />";
  5.         echo $row['song2']."<br />";
  6.         echo $row['song3']."<br />";
  7.         }
  8. ?>
 
 Top
dubasua
Отправлено: 29 Июня, 2013 - 21:08:43
Post Id



Посетитель


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


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




relfi пишет:
ORDER BY `column`

А у Вас есть поле в таблице с таким именем?
 
 Top
relfi
Отправлено: 29 Июня, 2013 - 21:16:46
Post Id


Новичок


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


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




dubasua пишет:
relfi пишет:
ORDER BY `column`

А у Вас есть поле в таблице с таким именем?


нету. есть 30 полей с именами song1,song2 и т.д. до song30
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB