Перейти к содержимому


Разбор выборки данных из бд.


Сообщений в теме: 6

#1 Снеговик

Снеговик

    Активный участник

  • Модераторы
  • PipPipPip
  • 1679 сообщений
  • Пол:Мужчина
  • Форум:IPB 2.3.x
  • Версия MKP:C1.2.2 R0.0.2

Отправлено 23 August 2010 - 19:32

вопрос следующий.

имею 2 таблицы:

первая  tv_channels    
id`| `xmlid`|	 `name`		|	 `src`	   |

1   |	1	  |  Первый канал | channel/1.gif |

вторая  tv_program
`id`|	`start`	   |	`stop`	  |`channel_id`|  `title`	|`desc`|`category`

 1   |  1282525200  | 1282525500 |	  1		   |  Новости |		  |

вопрос следующий как разобрать средствами php  выборку из бд.

я попробовал выбратть так  

$query = $DB->query("SELECT id, xmlid, 	name ,	src FROM tv_channels 
 ORDER BY `id`"); 

while( $row = $DB->fetch_row($query) ) { 
	$id = $row['id']; 
	$evento = $row['name'];
	$xmlid = $row['xmlid'];


	


	$subCat = $DB->query( "SELECT id ,start ,stop ,channel_id ,	title FROM tv_program  WHERE channel_id =
'$xmlid' AND  start > '$startden' AND start < '$stopden'");
	while(  $last = $DB->fetch_row($subCat)) { 
	 $content .= "";   
		$ide1 = $last['id_cat']; 
		$name1 = $last['title'];
		$start = $last['start'];
		$start1 = date("H:i",$start);  

 }
  
					
}


но как видно по коду использовал только средства мускула. что не гуд , так как колличество запросов прапорционально количесву каналов((( тоесть при 20 каналов получается больше 20 запросов.

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

прошу помощи!!!

#2 Flumaster

Flumaster

    Активный участник

  • Пользователи
  • PipPipPip
  • 67 сообщений

Отправлено 24 August 2010 - 01:33

Извини, третью ночь не сплю, мод делаю, поэтому все не читал, если хочешь вывести только одну строку то тебе надо написать

Цитата

$db = mysql_connect("хост", "юзер", "пароль");
mysql_select_db("БАЗАДАННЫХ",$db) or die("Не могу выбрать базу данных ");

Цитата

$id= "ВПИСАТЬ СЮДА id возможно $_GET['id']";
$sql = "SELECT * FROM таблица WHERE id=$id";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);

printf(" $row["id"], $row["xmlid"], $row["name"], $row["src"] ");



Цитата

Вторая строка в конце WHERE id=$id" это и есть выборка того что тебе надо по айди, также можно по имени и т.д.  1 ая строка $id = к примеру 1 то будет выводиться только" 1  ,    1      ,  Первый канал  , channel/1.gif "

Сообщение отредактировал Flumaster: 24 August 2010 - 01:35


#3 Снеговик

Снеговик

    Активный участник

  • Модераторы
  • PipPipPip
  • 1679 сообщений
  • Пол:Мужчина
  • Форум:IPB 2.3.x
  • Версия MKP:C1.2.2 R0.0.2

Отправлено 24 August 2010 - 10:30

неправильно понял меня.
в таблице programm  около 1000 передач.
этим запросами я выбираю названия каналов и программу к этим каналам на определенный промежуток времени.

но я все разбираю запросами в бд. а мне нужно минимизировать колво за росов.

#4 BMG

BMG

    Активный участник

  • Пользователи
  • PipPipPip
  • 419 сообщений
  • Пол:Мужчина
  • Интересы:http://www.mokro.us
    http://www.chih-pih.ru
  • Форум:PHPBB3
  • Версия MKP:C1.2.2

Отправлено 24 August 2010 - 15:32

Не совсем понятно для чего в базе xmlid если есть Id и в каком виде планируете выводить на страницу, но думаю можно обойтись одним запросом:

$sql= "SELECT tv_program.id as prid, start, stop, title, name, src FROM tv_program 
left join tv_channels on tv_program.channel_id=tv_channels.xmlid
WHERE start > '$startden' AND start < '$stopden'
";
$DB->query($sql);	
while( $row = $DB->fetch_row() ) {
$start = date("H:i",$row['start']);
$stop = date("H:i",$row['stop']);
$content .= "{$row['prid']} | $start | $stop | {$row['title']} | {$row['name']} | {$row['src']} <br>";

}
Резльтат будет примерно такой:
Id программы | начало программы | конец программы | Новости | первый канал  | channel/1.gif


#5 Снеговик

Снеговик

    Активный участник

  • Модераторы
  • PipPipPip
  • 1679 сообщений
  • Пол:Мужчина
  • Форум:IPB 2.3.x
  • Версия MKP:C1.2.2 R0.0.2

Отправлено 24 August 2010 - 20:47

спс. напрашивается тогда вопрос как получить  

имя канала


програма канала


имя канала

программа канала

#6 Flumaster

Flumaster

    Активный участник

  • Пользователи
  • PipPipPip
  • 67 сообщений

Отправлено 25 August 2010 - 02:25

Мой не умеющий спать мозг завис на этом месте, перезагрузится через 7-12 часов

#7 BMG

BMG

    Активный участник

  • Пользователи
  • PipPipPip
  • 419 сообщений
  • Пол:Мужчина
  • Интересы:http://www.mokro.us
    http://www.chih-pih.ru
  • Форум:PHPBB3
  • Версия MKP:C1.2.2

Отправлено 25 August 2010 - 09:48

$sql= "SELECT tv_program.id as prid, start, stop, title, name, src FROM tv_program 
left join tv_channels on tv_program.channel_id=tv_channels.xmlid
WHERE start > '$startden' AND start < '$stopden'
ORDER BY name
";
$DB->query($sql);	
$channel="";
while( $row = $DB->fetch_row() ) {
	if ($channel != $row['name']) {
		$channel=$row['name'];
		$content .= "{$row['src']} $channel <br>";
	}

	$start = date("H:i",$row['start']);
	$stop = date("H:i",$row['stop']);
	$content .= "{$row['prid']} | $start | $stop | {$row['title']}<br>";

}




Ответить



  


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных