Сортировка полученных данных из MySQL

FedY@

Новичок
Сортировка полученных данных из MySQL

Мне нужно чтобы все записи где есть имя fedya кидало в одну таблицу.., а все записи на имя: star в совсем другую таблицу!

тоесть это будет выглядеть вот так:

----------------------------------------------------------------
fedya 15 16 0
fedya 25 0 20
fedya 15 16 0
fedya 15 16 0
fedya 15 16 0
fedya 15 16 0
-----------------------------------------------------------------

----------------------------------------------------------------
star 15 16 0
star 25 0 20
star 15 16 0
star 15 16 0
star 15 16 0
star 15 16 0
-----------------------------------------------------------------

Вопрос: Но присутсвтует тут одна трабла, что я незнаю имен... как мне зделать например такой вывод примерно для 50 человек? Не вписывать же мне их имена в файл и потом просматривать кодом РНР... не умно как - то !
 

FedY@

Новичок
тоесть каждый пользователь это новая таблица, и ряд строк которые пренадлежат (...WHERE name='fedya') !
Но имена я не знаю...

-~{}~ 01.06.04 14:23:

CREATE TABLE users_billing(
name VARCHAR(25) NOT NULL,
date DATE NOT NULL,
lan VARCHAR(3) NOT NULL,
mbin INT(100) NOT NULL,
mbout INT(100) NOT NULL,
costs INT(100) NOT NULL,
paid INT(100) NOT NULL
);

Вот таблица если кому - то поможет для того чтобы помочь мне...
 

martinelli

Новичок
сортируешь по полю name, а потом в цикле смотришь, когда name текущей записи будет отличаться от предыдущей
 

fixxxer

К.О.
Партнер клуба
что за бред? зачем разносить данные по идиотски?

или ты имеешь в виду таблица=<table>?
 

Tigr

Новичок
делай простой запрос, а при выборке из результирующего набора делай массив
while ($row = mysql_fetch_array(...)) $result[$row['name']][] = array();

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

Фанат

oncle terrible
Команда форума
федя.
в запросе сорируешь.
это тебе доступно?

при выводе, если меняется имя, то закрываешь таблицу. и начинаешь новую.
оператор if тебе знаком?
 

FedY@

Новичок
Автор оригинала: martinelli
сортируешь по полю name, а потом в цикле смотришь, когда name текущей записи будет отличаться от предыдущей
Если можеш то поточнее...

-~{}~ 01.06.04 16:53:

Автор оригинала: Фанат
федя.
в запросе сорируешь.
это тебе доступно?

при выводе, если меняется имя, то закрываешь таблицу. и начинаешь новую.
оператор if тебе знаком?
чтобы что - то сравнивать нужно что - то иметь!
Первое имя я буду иметь, а вот второе? а если у меня в таблице все розкидано например вот так :

fedya
star
fedya
andrew
decibel
star
fedya

???????
 

Falc

Новичок
FedY@
>>а если у меня в таблице все розкидано
Тебе же сказали отсортировать.
 

FedY@

Новичок
Автор оригинала: Фанат
федя.
в запросе сорируешь.
это тебе доступно?

при выводе, если меняется имя, то закрываешь таблицу. и начинаешь новую.
оператор if тебе знаком?
СОРТИРОВАТЬ КАК ? имена то я незнаю, читай до конца....

-~{}~ 01.06.04 16:56:

Автор оригинала: Falc
FedY@
>>а если у меня в таблице все розкидано
Тебе же сказали отсортировать.
Если честно то я не могу понять, сортировать при получении данных, или самую ДБ сортировать по имени?
 

FedY@

Новичок
не могу понять как мне проверить соотвествую ли имена?
пост сверху говорит что типа нужно проверить имена, каким образом, что записівать их в сесию и потом при получении нового сравнивать? или как?

-~{}~ 01.06.04 17:31:

PHP:
$connect=mysql_connect('localhost', $db_name, $db_password) or die('Не могу создать соеденение с базой '.$table);
@mysql_select_db($table, $connect) or die('Ошибка при выборе базы данных '.$table.'<br>'.mysql_error());
session_start();
     $billing_query="SELECT * FROM users_billing ORDER by name";
     $billing_result=mysql_query($billing_query);
$billing=mysql_fetch_array($billing_result);
if($billing){
echo "<style type=\"text/css\">
<!--
.header {font-family: \"Comic Sans MS\"; font-size: x-small; font-weight: bold;}
.danue {font-family: \"Comic Sans MS\"; color: #699DF8; font-size: x-small; font-weight: bold; }
.silki {font-family: \"Comic Sans MS\"; font-size: x-small; font-weight: bold; }
-->
</style>
<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#699DF8\" width=\"100%\" id=\"AutoNumber4\">
  <tr>
    <td colspan=\"7\" bgcolor=\"#FFCC00\"> <font face=\"Tahoma\" size=\"2\" color=\"#0E397A\">&nbsp;<strong>Сумарная за все проживание в сети: </strong></font></td>
  </tr>
  <tr class=\"header\">
    <td width=\"13%\" height=\"20\"><span class=\"style16\">&nbsp;Имя:</span></td>
    <td width=\"15%\"><span class=\"style16\">&nbsp;Дата: </span></td>
    <td width=\"12%\"><span class=\"style16\">&nbsp;За сеть :</span></td>
    <td width=\"14%\"><span class=\"style16\">&nbsp;Mb заказал:</span></td>
    <td width=\"19%\"><span class=\"style16\">&nbsp;Mb использовал:</span></td>
    <td width=\"13%\"><span class=\"style16\">&nbsp;Стоимость:</span></td>
    <td width=\"14%\"><span class=\"style16\">&nbsp;Заплатил:</span></td>
  </tr>";
  do{
  $billing_mbin=$billing_mbin+$billing['mbin'];
  $billing_mbout=$billing_mbout+$billing['mbout'];
  $billing_costs=$billing_costs+$billing['costs'];
  $billing_paid=$billing_paid+$billing['paid'];
}while($billing=mysql_fetch_array($billing_result));
  echo "</tr>
  <tr class=\"danue\">
    <td>&nbsp;<font color=red>".$billing['name']."</font></td>
    <td width=\"15%\"></td>
    <td width=\"12%\"></td>
    <td width=\"14%\">&nbsp;<font color=red>".$billing_mbin." mb</font></td>
    <td width=\"19%\">&nbsp;<font color=red>".$billing_mbout." mb</font></td>
    <td>&nbsp;<font color=red>".$billing_costs."$</font></td>
    <td>&nbsp;<font color=red>".$billing_paid."$</font></td>
  </tr></table><br><br>";
}
if($billing_mbin<$billing_mbout){
   echo "<font class=\"header\">Вы переиспользовали - ".($billing_mbout-$billing_mbin)." mb</font>";
}elseif($billing_mbin>$billing_mbout){
   echo "<font class=\"header\">У вас ище есть - ".($billing_mbin-$billing_mbout)." mb";
}else{
   echo "<font class=\"header\">У вас нету ни одного mb!";
}

if($billing_costs<$billing_paid){
   echo "<br>У вас на счету - ".($billing_paid-$billing_costs)."$</font>";
}elseif($billing_costs>$billing_paid){
   echo "<br>Вы в долгу на - ".($billing_costs-$billing_paid)."$</font>";
}else{
   echo "<br>У вас всё оплачено!</font>";
}
Вот предоставлен код, попробуйте его изменить чтобы он работал так как мне надо, я уже делал незнать что! Всеравно ничего не выходит... помогите ПОЖАЛУЙСТО!

-~{}~ 01.06.04 17:49:

жду ответа !
 

FedY@

Новичок
Автор оригинала: lucas
Жди.

Разбираться в этом мусоре никто не собирается.
Читай [f]debug[/f], локализуй проблемы и задавай конкретные вопросы.
А это не конкретный вопрос:
"Как мне зделать проверку на получение нового имени и сравнить со старым" ти того
 

Larson

Новичок
PHP:
 if ($старое_имя != $новое_имя) { ... }
-~{}~ 01.06.04 18:45:

Посмотри на свой первый пост.
Там у тебя есть набор записей отсортированных по имени. Возьми карандаш и бумагу. Запиши самую первую на бумажку. Теперь преходи к следующей записи на экране. Перешел? Посмотри она совпадает с той, которая записана на бумажке? Да? Иди дальше. Теперь следующая, следующая ... Ой, теперь не совпадает очередная с той которая на бумаге записана? Хорошо, значит это новая, которой у нас еще не было, запиши ее на бумажку, а ту предыдущую сотри, теперь будем с ней сверяться.
Когда поймешь алгоритм, останется его только переписать на язык, понятный компютеру, в данном слечае РНР.
 

Stm

Новичок
примерно так:
PHP:
// получил выборку
if($billing_result=mysql_query('SELECT * FROM `test` order by name')){
	// вывел стили и все остальное что должно быть до начала таблиц.
    $prev_name='';
	do{
	    // получил запись
		$billing=mysql_fetch_array($billing_result);
		$some=$billing && $prev_name==$billing['name'];
		if(!$some && $prev_name){
	    	// вывел footer таблицы
	        echo "</table><br/>\r\n";
	    }
		if($billing){
	        if(!$some){
	            $prev_name=$billing['name'];
	            // вывел header таблицы
	            echo "<table>\r\n";
	        }
            // вывел одну строку таблицы
            echo '<tr><td>'.$billing['name']."</td></tr>\r\n";
		}
	}
    while($billing);
}
}
да, фигня была
 

Фанат

oncle terrible
Команда форума
Stm
это ты этот шедевр сам придумал, или тебе подсказал кто?
 
Сверху