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

Форум MySQL

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

 

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

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

тема: Сортировка по алфавиту
 
 автор: liberty   (02.03.2013 в 06:33)   письмо автору
 
 

Есть Города России.
Как сделать, чтобы при выборе буквы алфавита можно было перейти к списку городов, отфильтрованному по этой букве.

   
 
 автор: elenaki   (03.03.2013 в 12:23)   письмо автору
 
   для: liberty   (02.03.2013 в 06:33)
 

SELECT *  from YOUR_TABLE WHERE LEFT (YOUR_TABLE.TOWN_NAME,1) = '".$_POST["litera"]."' order by YOUR_TABLE.TOWN_NAME


YOUR_TABLE - таблица с названиями городов
YOUR_TABLE.TOWN_NAME - поле с названием города
$_POST["litera"] - переменная, содержащая букву для поиска

   
 
 автор: liberty   (07.03.2013 в 08:36)   письмо автору
 
   для: elenaki   (03.03.2013 в 12:23)
 

Не совсем понятно, что выводить в строке printf ();
$result100 = mysql_query("SELECT *  from pu WHERE LEFT (pu.title,1) = '".$_POST["litera"]."' order by pu.title", $db);
if (!$result100)
{
echo "<p>1)Запрос на выборку данных из базы не прошел.
<br> <strong>Код ошибки:</strong></p>";
}
if (mysql_num_rows($result100) > 0)
{
$myrow100 = mysql_fetch_array($result100);
do
{
printf ();
}

   
 
 автор: Lotanaen   (07.03.2013 в 10:15)   письмо автору
 
   для: liberty   (07.03.2013 в 08:36)
 

ну что Вам нужно - то и выводите. Список городов наверное...

   
 
 автор: liberty   (08.03.2013 в 01:24)   письмо автору
 
   для: Lotanaen   (07.03.2013 в 10:15)
 

слушайте список у меня уже есть.
мне надо буквы сверху этого списка.
и как $_POST["litera"] - формируется?
Как записать в нее буквы алфавита?

   
 
 автор: liberty   (10.03.2013 в 08:59)   письмо автору
 
   для: liberty   (08.03.2013 в 01:24)
 

в ожидании ответа.

   
 
 автор: Valick   (10.03.2013 в 09:32)   письмо автору
 
   для: liberty   (10.03.2013 в 08:59)
 

может начнете книги читать?

   
 
 автор: Jovidon   (10.03.2013 в 12:07)   письмо автору
 
   для: liberty   (10.03.2013 в 08:59)
 

у тебя в голове ветер
тебе туда http://softtime.ru/php5/?id_article=117

   
 
 автор: liberty   (11.03.2013 в 06:49)   письмо автору
 
   для: Jovidon   (10.03.2013 в 12:07)
 

ну вы в своем репертуаре.

   
 
 автор: Lotanaen   (11.03.2013 в 12:06)   письмо автору
 
   для: liberty   (08.03.2013 в 01:24)
 

почитайте что такое $_POST, $_GET и т.д.

   
 
 автор: liberty   (13.03.2013 в 02:44)   письмо автору
 
   для: Lotanaen   (11.03.2013 в 12:06)
 

прочитал. но у меня конкретная ситуация.

   
 
 автор: Lotanaen   (13.03.2013 в 09:49)   письмо автору
 
   для: liberty   (13.03.2013 в 02:44)
 

Ну раз прочитали, то должны понять откуда $_POST['litera'] берется... можете и методом GET передавать значение litera. $_POST['litera'] во всех возможных ситуациях будет $_POST['litera']... Формировать буквы это либо запрос делать на выборку первых символов городов из базы, либо жестко прописать, если буквы уже известны и не будут добавляться-удаляться... А через форму или методом get Вы будете делать - это уже сами решайте.

   
 
 автор: liberty   (15.03.2013 в 05:30)   письмо автору
 
   для: Lotanaen   (13.03.2013 в 09:49)
 

Можете привести пример как сделать запрос на выборку первых символов городов из базы?

   
 
 автор: Igorek   (15.03.2013 в 07:27)   письмо автору
 
   для: liberty   (15.03.2013 в 05:30)
 

SELECT DISTINCT LEFT(name,1) AS letter
FROM towns
ORDER BY letter

   
 
 автор: liberty   (15.03.2013 в 08:29)   письмо автору
 
   для: Igorek   (15.03.2013 в 07:27)
 

у меня есть таблица городов town (основное поле - name).

запрос не проходит. дает ошибку
Запрос на выборку данных из базы не прошел
<?php
$result111 
mysql_query("SELECT DISTINCT LEFT(name,1) FROM town ORDER BY pu.title"$db); 
if (!
$result111

echo 
"<p>1)Запрос на выборку данных из базы не прошел. 
<br> <strong>Код ошибки:</strong></p>"


?>


надо вывести перед списков городов - вывод идет ниже - первые буквы городов.
<?php 
$sql 
mysql_query("SELECT * FROM town ORDER by name");     
if(!
$sql)   
{echo 
"<br><p>В данном разделе пока нет информации</p>";}   
else    
{   
  if(
mysql_num_rows($sql) > 0)    
  {    
    while (
$row mysql_fetch_array($sql))     
    { 
      
$query "SELECT COUNT(*) FROM pu   
                WHERE approved='1' and id_town='
$row[id_town]'";  
      
$res mysql_query($query);  
      if(!
$res) exit("<br>Ошибка обращения к базе данных - ".mysql_error());  
      
$total mysql_result($res0); 
    if(
$total 0
      { 
      
$filename[] = "<a href='post_towns_pu.php?id_town=$row[id_town]'>$row[name]</a>&nbsp;($total)"
    } 
    }
  } 

?>

   
 
 автор: Valick   (15.03.2013 в 08:54)   письмо автору
 
   для: liberty   (15.03.2013 в 08:29)
 

Запрос на выборку данных из базы не прошел
между
SELECT DISTINCT LEFT(name,1) FROM town ORDER BY pu.title

и
SELECT DISTINCT LEFT(name,1) AS letter
FROM towns
ORDER BY letter

вы правда не видите разницы?

   
 
 автор: liberty   (15.03.2013 в 14:31)   письмо автору
 
   для: Valick   (15.03.2013 в 08:54)
 

что такое
letter  
в этом запросе?

   
 
 автор: Lotanaen   (15.03.2013 в 14:36)   письмо автору
 
   для: liberty   (15.03.2013 в 14:31)
 

у Вас с английским как?
DISTINCT LEFT(name,1) AS letter

as это как по русски

   
 
 автор: liberty   (15.03.2013 в 21:23)   письмо автору
 
   для: Lotanaen   (15.03.2013 в 14:36)
 

Ok.
What does Letter mean?
Is it table? Or something else?
I don't have this table in my database.
I am waiting for your reply.
thank's for your time.

   
 
 автор: Valick   (15.03.2013 в 21:42)   письмо автору
 
   для: liberty   (15.03.2013 в 21:23)
 

Вы безнадежны ....
При нулевом уровне знаний, вы дадите фору 10-ти программистам по части гонора.
У меня складывается впечатление, что вы чего-то недопонимаете, не только в РНР, но и в жизни. Поймите вам тут никто, и ничего не должен. И если вы даже правильный запрос не можете разобрать и применить, то кто виноват?

   
 
 автор: liberty   (16.03.2013 в 08:06)   письмо автору
 
   для: Valick   (15.03.2013 в 21:42)
 

запрос сделал.
выводит первые буквы и цифры "1 2 4
<?php
$result111 
mysql_query("
SELECT DISTINCT LEFT(name,1) AS letter 
FROM town 
ORDER BY letter
"
$db); 
if (!
$result111

echo 
"<p>1)Запрос на выборку данных из базы не прошел.</p>"

else 
{   
if (
mysql_num_rows($result111) > 0)
{
while (
$myrow111 mysql_fetch_array($result111))
{
printf ("<a href='post_towns_pu.php?id_town=$myrow111[id_town]'>%s</a>
"
$myrow111["letter"]);

}
}
?>

как вот теперь связать букву с нужным городом?

   
 
 автор: Valick   (16.03.2013 в 09:02)   письмо автору
 
   для: liberty   (16.03.2013 в 08:06)
 

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

<?php
$query
="SELECT LEFT(name,1) AS letter, name, id_town
          FROM town 
          ORDER BY name"
;
$res=mysql_query($query);
$n='';
if(
$res){
  if(
mysql_num_rows($res)){
    while(
$row=mysql_fetch_assoc($res)){
      if(
$row[letter]<>$n) echo '<hr />'.$row[letter].'<br />';
      
printf ("<a href='post_towns_pu.php?id_town=$row[id_town]'>%s</a>
"
$row["name"]);
    }
  }
}
?>

   
 
 автор: liberty   (16.03.2013 в 09:26)   письмо автору
 
   для: Valick   (16.03.2013 в 09:02)
 

ну теперь понятно.
сейчас выводятся таким образом
"
"ПОСЁЛОК СОВХОЗА ""ОСТАНКИНО"""
1
10 ЛЕТ ОКТЯБРЯ
1
12 ЛЕТ ОКТЯБРЯ
1
15 ЛЕТ ОКТЯБРЯ
2
2 ОТДЕЛЕНИЕ СОВХОЗА ВОЛГО-ДОН
2
2 ОТДЕЛЕНИЕ СОВХОЗА ДИНАМО
4
40 ЛЕТ ОКТЯБРЯ
А
АБАБКОВО

цифры вот откуда выходят.
ну не совсем так хотелось бы.
нужно оставить города по колонкам как здесь
<?php 
$sql 
mysql_query("SELECT * FROM town ORDER by name");     
if(!
$sql)   
{echo 
"<br><p>В данном разделе пока нет информации</p>";}   
else    
{   
  if(
mysql_num_rows($sql) > 0)    
  {    
    while (
$row mysql_fetch_array($sql))     
    { 
      
$query "SELECT COUNT(*) FROM pu   
                WHERE approved='1' and id_town='
$row[id_town]'";  
      
$res mysql_query($query);  
      if(!
$res) exit("<br>Ошибка обращения к базе данных - ".mysql_error());  
      
$total mysql_result($res0); 
    if(
$total 0
      { 
      
$filename[] = "<a href='post_towns_pu.php?id_town=$row[id_town]'>$row[name]</a>&nbsp;($total)"
    } 
    }
  } 

?>

а сверху вывести в строку буквы городов - только те, которые есть в базе pu по полю id_town
из вашего примера - выводятся все города из базы town - а там тысячи.

   
 
 автор: Valick   (16.03.2013 в 09:40)   письмо автору
 
   для: liberty   (16.03.2013 в 09:26)
 

чуть забыл
вот это
if($row[letter]<>$n) echo '<hr />'.$row[letter].'<br />';

замените на это
if($row[letter]<>$n) {$n=$row[letter]; echo '<hr />'.$row[letter].'<br />';}

и попробуйте
___
но если надо сверху, то отдельным запросом, который был выше

   
 
 автор: liberty   (16.03.2013 в 09:52)   письмо автору
 
   для: Valick   (16.03.2013 в 09:40)
 

вау.

щас вот так выглядит

"
"ПОСЁЛОК СОВХОЗА ""ОСТАНКИНО""" "САНАТОРИЙ ""ВОРОБЬЕВО""" "ЦЕНТРАЛЬНАЯ УСАДЬБА СОВХОЗА ""НОВООРСКИЙ"""
1
10 ЛЕТ ОКТЯБРЯ 12 ЛЕТ ОКТЯБРЯ 15 ЛЕТ ОКТЯБРЯ
2
2 ОТДЕЛЕНИЕ СОВХОЗА ВОЛГО-ДОН 2 ОТДЕЛЕНИЕ СОВХОЗА ДИНАМО
4
40 ЛЕТ ОКТЯБРЯ
А
АБАБКОВО АБАГА АБАГА-ЦЕНТРАЛЬНАЯ АБАГАЙТУЙ АБАДЗЕХСКАЯ АБАЗА АБАЙ 
АБАКАН АБАКАНОВО АБАКУМОВКА АБАКУМОВО АБАЛАК АБАЛАКОВО АБАЛАЧ АБАН
 АБАТСКИЙ АБАШЕВО АБАШЕВО АБАШЕВО АББАКУМОВО АБГАНЕРОВО АБГАНЕРОВО-ВОКЗАЛ

и т.д.

   
 
 автор: Sfinks   (16.03.2013 в 12:07)   письмо автору
 
   для: Valick   (16.03.2013 в 09:40)
 

Спасибо, Valick =)

   
 
 автор: Valick   (16.03.2013 в 13:21)   письмо автору
 
   для: Sfinks   (16.03.2013 в 12:07)
 

:)

   
Rambler's Top100
вверх

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