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

Форум MySQL

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

 

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

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

тема: сортировка в алфавитном порядке
 
 автор: liberty   (22.03.2013 в 06:41)   письмо автору
 
 

Добрый день!
Нужно перед списком городов вывести начальные буквы этих городов. Кликнув на букву, чтобы выходил список городов, начинающих с выбранной буквы.
нижеследующий код вывовдит буквы перед городами, но выводит все города из базы town
<?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) {$n=$row[letter]; echo '<hr />'.$row[letter].'<br />';}
      
printf ("<a href='post_towns_pu.php?id_town=$row[id_town]'>%s</a> 
"
$row["name"]); 
    } 
  } 

?>

а надо только те города, которые встречаются в базе pu
для этого я использую $id_town = $myrow3[id_town]
но что-то не работает
дает ошибку syntax error, unexpected $end
<?php
$result3 
mysql_query("SELECT * from pu"$db);
if (!
$result3)
{
echo 
"<p>Запрос на выборку данных из базы не прошел.<strong>Код ошибки:</strong></p>";
exit (
mysql_error()); 

while (
$myrow3 mysql_fetch_array($result3)) {

$id_town $myrow3[id_town];
$query="SELECT LEFT(name,1) AS letter, name, id_town 
          FROM town WHERE id_town='
$id_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) {$n=$row[letter]; echo '<hr />'.$row[letter].'<br />';}
      
printf ("<a href='post_towns_pu.php?id_town=$row[id_town]'>%s</a> 
"
$row["name"]); 
    } 
  } 

}
?>

  Ответить  
 
 автор: Lotanaen   (22.03.2013 в 10:29)   письмо автору
 
   для: liberty   (22.03.2013 в 06:41)
 

после exit фигурную скобку не поставили.

  Ответить  
 
 автор: liberty   (22.03.2013 в 18:18)   письмо автору
 
   для: Lotanaen   (22.03.2013 в 10:29)
 

Ya ne vishu EXIT vo vtorom kode

  Ответить  
 
 автор: Sfinks   (23.03.2013 в 09:06)   письмо автору
 
   для: liberty   (22.03.2013 в 18:18)
 

На шестой строчке.

  Ответить  
 
 автор: cheops   (23.03.2013 в 08:45)   письмо автору
 
   для: liberty   (22.03.2013 в 06:41)
 

В таком случае лучше отталкиваться от многотабличного запроса
SELECT
  t.LEFT(name,1) AS letter,
  t.name AS name,
  t.id_town AS id_town
FROM
  pu AS p
LEFT JOIN
  town AS t
ON
  p.id_town = t.id_town
ORDER BY
  t.name

PS Если будут дубли, сгруппируйте города при помощи GROUP BY.

  Ответить  
 
 автор: liberty   (23.03.2013 в 09:23)   письмо автору
 
   для: cheops   (23.03.2013 в 08:45)
 

Благодарю за ответ.
Пустышки не выводятся - это хорошо. Выводится 4 колонки городов.
А первых букв городов - не видно.
<?php 
$query
="SELECT 
  t.LEFT(name,1) AS letter, 
  t.name AS name, 
  t.id_town AS id_town 
FROM 
  pu AS p 
LEFT JOIN 
  town AS t 
ON 
  p.id_town = t.id_town 
ORDER BY 
  t.name"

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

?>

  Ответить  
 
 автор: Sfinks   (23.03.2013 в 12:16)   письмо автору
 
   для: liberty   (23.03.2013 в 09:23)
 

И ссылки тоже не работают.

Имена ключей массива следует писать в кавычках.

И если вы пишете массив с ключом внутри строки - его следует писать в фигурных скобках.
<?php
  
echo $row[letter];   // не правильно
  
echo $row['letter']; // правильно
  
echo $row["letter"]; // правильно

  
echo "что-то $row[id_town] что-то";       // не правильно
  
echo "что-то $row['id_town'] что-то";     // не правильно
  
echo "что-то $row["id_town"] что-то";     // не правильно
  
echo "что-то {$row['id_town']} что-то";   // правильно
  
echo "что-то {$row["id_town"]} что-то";   // правильно
  
echo "что-то ".$row['id_town']." что-то"// правильно
?>

  Ответить  
 
 автор: liberty   (23.03.2013 в 19:23)   письмо автору
 
   для: Sfinks   (23.03.2013 в 12:16)
 

ссылки как раз работают.
нет букв.

  Ответить  
 
 автор: Sfinks   (23.03.2013 в 22:57)   письмо автору
 
   для: liberty   (23.03.2013 в 19:23)
 

К сожалению не могу вам по албански написать. Только по русски. Если не поняли - прочтите еще несколько раз.

  Ответить  
Rambler's Top100
вверх

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