agentor
26.07.2009 - 20:26
у меня имеется такой вопрос.
в базе данных имеется 25.000 записей городов.
в каждой записи города присутствует ID к какому он региону принадлежит..
Области в текстовой форме
Вопрос:
Как вывести из данной базы только одни названия областей но так что бы они не повторялись?
например что бы было так:
Кемеровсая обл.
Московская обл
Нижехгородская обл.
ит.д
для начала я сделал так
PHP |
<?php $facc=0; $res1 = mysql_query("SELECT bundesland FROM geodata_de ORDER BY bundesland"); while($row1 = mysql_fetch_array($res1)) { $facc++; echo"<li><span>".$row1["bundesland"]."</a></li>"; }
|
но выводит все 25.000 записей областей т.е повторяются
Спустя 30 минут, 39 секунд (26.07.2009 - 19:57) kirik написал(а):
Это нужно?
SQL |
SELECT bundesland FROM geodata_de GROUP BY bundesland ORDER BY bundesland |
Спустя 39 минут, 28 секунд (26.07.2009 - 20:36) Krevedko написал(а):
Спустя 52 минуты, 43 секунды (26.07.2009 - 21:29) agentor написал(а):
да именнно..спасибо огромное
Спустя 3 часа, 49 минут, 7 секунд (27.07.2009 - 01:18) Alchemist написал(а):
а не лучше будет использовать DISTINCT ?
Спустя 4 минуты, 47 секунд (27.07.2009 - 01:23) kirik написал(а):
Цитата (Alchemist @ 26.07.2009 - 17:18) |
а не лучше будет использовать DISTINCT ? |
как правило GROUP BY быстрее.. Где-то тема была по этому поводу.. Щас пруфлинк попробую найти
Спустя 9 дней, 23 часа, 53 минуты, 57 секунд (7.08.2009 - 01:17) agentor написал(а):
спасибо всё класно работает..
внёс кое какие нужны изминения...и также возник вопрос при выводе данных на страницу
на данный момент выводит все существующие записи в 3 Колонки по вертикали
Вопрос:
Как сделать что бы в Колонках ,после каждой 5 записи шол знак Пробела ( <br>) .т.е что бы в каждой колонке шол разделитель после каждых 5 записей?
Собственно вот код...
прошу помощи...
PHP |
<tr valign="top"><td> <ul> <?php $r = mysql_query("SELECT * FROM geodata_de WHERE ort = ".sqlesc($row1[0])." GROUP BY ortschaft, plz ORDER BY ortschaft ASC") or die ('error 6'); $columns = 3; for ($i = 0; $rowid = mysql_fetch_row($r); $i++) { if (($i % $columns) == 0) { echo " </td></tr>\n"; } print("<td><li> <a href=index.php?d=step3&idC=".$rowid[1]."&idR=".$rowid[2]."&idCi=".$rowid[0]."&razd=".$razd."><b><small>".htmlspecialchars($rowid[8])." - ".htmlspecialchars($rowid[9])." (".htmlspecialchars($rowid[7]).")</small></b></a> </li></td>"); if (($i % $columns) == ($columns - 1)) { echo " </td> </tr>\n"; } } ?> & |
Спустя 30 минут, 53 секунды (7.08.2009 - 01:48) kirik написал(а):
Цитата (agentor @ 6.08.2009 - 17:17) |
3 Колонки по вертикали |
Колонки по горизонтали называются строками
Добавь перед
PHP |
print("<td><li> <a href=index.php?d=step3&idC=".$rowid[1]."&idR=".$rowid[2]."&idCi=".$rowid[0]."&razd=".$razd."><b><small>".htmlspecialchars($rowid[8])." - ".htmlspecialchars($rowid[9])." (".htmlspecialchars($rowid[7]).")</small></b></a> </li></td>"); |
этот код:
PHP |
if($i % 5 == 0) echo '<td> </td>'; |
должно помочь.
Спустя 16 минут, 2 секунды (7.08.2009 - 02:04) agentor написал(а):
спасибо..попробовал но не помогло.разбило всё да и добавило ещё пару строк..
Спустя 16 минут, 40 секунд (7.08.2009 - 02:20) kirik написал(а):
Вот код номер раз (для примера)
PHP |
$columns = 3; // количество колонок. $separate = 5; // разделять таблицу каждые n строк
$table = range(1, 50); $all_columns = array_chunk($table, ceil(count($table) / $columns));
$table = '<table>'."\n"; for($i = 0, $c = count($all_columns[0]); $i < $c; $i++) { if($i % $separate == 0 && $i > 0) $table .= '<tr>'.str_repeat('<td> </td>', $columns).'</tr>'."\n";
$table .= '<tr>'."\n";
for($si = 0; $si < $columns; $si++) { $data = isset($all_columns[$si][$i]) ? $all_columns[$si][$i] : ' '; $table .= "\t".'<td>'.$data.'</td>'."\n"; }
$table .= '</tr>'."\n"; } $table .= '</table>';
echo $table; |
PHP |
$columns = 3; $separate = 5;
$table = array(); $query = mysql_query("SELECT * FROM geodata_de WHERE ort = ".sqlesc($row1[0])." GROUP BY ortschaft, plz ORDER BY ortschaft ASC") or die ('error 6'); while($row = mysql_fetch_row($query)) { $table[] = $row; } mysql_free_result($query);
$all_columns = array_chunk($table, ceil(count($table) / $columns));
$table = '<table>'."\n"; for($i = 0, $c = count($all_columns[0]); $i < $c; $i++) { if($i % $separate == 0 && $i > 0) $table .= '<tr>'.str_repeat('<td> </td>', $columns).'</tr>'."\n";
$table .= '<tr>'."\n";
for($si = 0; $si < $columns; $si++) { $data = isset($all_columns[$si][$i]) ? $all_columns[$si][$i] : ' '; $table .= "\t".'<td>'.$data.'</td>'."\n"; }
$table .= '</tr>'."\n"; } $table .= '</table>';
echo $table; |
Спустя 10 часов, 55 минут, 37 секунд (7.08.2009 - 13:16) agentor написал(а):
да..спасибо огромнейщее..всё отлично встало на свои места