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

Форум MySQL

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

 

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

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

тема: Помогите реализовать сортировку данных
 
 автор: dimon   (26.10.2007 в 13:27)   письмо автору
 
 

Так получилось, что была создана таблица одной структуры, а оказывается, нужна была другая. Данные уже в таблице, по-этому хочу попытаться выкрутиться.
Нужно реализовать что-та на подобие графика на картинке вложенной.
Ситуация такая, что используя запрос
SELECT file.model FROM table_name

нужно выявить совпадения в столбце с названием файла, и присвоить ему все значения моделей из второго столбца, которым присваивается этот же файл в других записях. на словах тяжеловато объяснить, мне кажется схема это все объясняет лучше. Если кто знает как это делает, буду надеяться на помощь.
Я не знаю это просто или нет, но пока в голову ничего не приходит
Спасибо

   
 
 автор: Poul   (26.10.2007 в 13:58)   письмо автору
 
   для: dimon   (26.10.2007 в 13:27)
 


$query_select = "select DISTINCT file.model FROM table_name";
$result_select = mysql_query($query_select) or die("Query failed : " . mysql_error());
$num_result_select = mysql_num_rows($result_select);
if($num_result_select != 0)
{
while ($line_select = mysql_fetch_array($result_select, MYSQL_ASSOC))
{
$file$line_select[file.model] = array();
    $query_select2 = "select * from table_name where file.model =$line_select[file.model]";
    $result_select2 = mysql_query($query_select2) or die("Query failed : " . mysql_error());
    $num_result_select2 = mysql_num_rows($result_select2);
    while ($line_select2 = mysql_fetch_array($result_select2, MYSQL_ASSOC))
    {
        $file$line_select[file.model][] = $line_select[col2];
    }
}
}

   
 
 автор: dimon   (26.10.2007 в 17:07)   письмо автору
 
   для: Poul   (26.10.2007 в 13:58)
 

что-то я не пойму, а почему $file$line_select вместе пишуться? это разве не играет никакой роли?
да, и кстати, прошу прощения за опечатку в запросу SQL: вместо file.model нужно files, model, т.е. выборка из двух таблиц.

   
 
 автор: EXP   (27.10.2007 в 00:37)   письмо автору
 
   для: dimon   (26.10.2007 в 13:27)
 

всё почти так-же
<?
    $name 
'';
    
$query "SELECT files, model FROM table_name ORDER BY files"
$result mysql_query($query) or die("Query failed : " mysql_error()); 

if (
mysql_num_rows($result); ) { 
    while (
$line mysql_fetch_assoc($result) ) 
    { 
        if (
$name != $line['files']) echo 'создан массив $' . ($name $line['files']) . ".<br>'\n" ;
        $
$line['files'][] = $line['model'] ;
     } 
}
?>

непроверял, но должно работать

// но поскольку не удобно будет получать имена массивов после этого ,
лучше сделать один массив
<?
$massiv 
= array();
    
$query "SELECT files, model FROM table_name"
$result mysql_query($query) or die("Query failed : " mysql_error()); 

if (
mysql_num_rows($result); ) { 
    while (
$line mysql_fetch_assoc($result) ) 
    { 
            
$massiv$line['files'] ][] = $line['model'] ;
     } 
}
var_dump($massiv);
?>

тоже не проверял :)

   
 
 автор: dimon   (27.10.2007 в 13:12)   письмо автору
 
   для: EXP   (27.10.2007 в 00:37)
 

ок, спасибо! буду пробовать... сообщу о результатах.

   
 
 автор: dimon   (29.10.2007 в 13:23)   письмо автору
 
   для: EXP   (27.10.2007 в 00:37)
 

кажысь получилось... первые примеры, по незнанию, я стал перелопачивать и залез в тёмный лес.... но последний пример оказался почти то что нужно, но я немного изменил код, чтоб ключи массива, т.е. имена файлов не повторялись:

<?php
function mkArrayFromDistinct ($col1$col2$tablename){
    
$massiv = array();
    
$query "SELECT $col1$col2 FROM $tablename"
    
$result mysql_query($query) or die("Query failed : " mysql_error()); 
    if (
mysql_num_rows($result)) { 
        while (
$line mysql_fetch_assoc($result)) { 
            if (!
array_key_exists($line[$col1], $massiv)){
                
$massiv[$line[$col1]][] = $line[$col2];
                }
            else 
array_push($massiv[$line[$col1]], $line[$col2]);
            } 
        }
    
print_r ($massiv);
    }
?>

спасибо за участие

   
Rambler's Top100
вверх

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