|
|
|
| Добрый день!
Нужно перед списком городов вывести начальные буквы этих городов. Кликнув на букву, чтобы выходил список городов, начинающих с выбранной буквы.
нижеследующий код вывовдит буквы перед городами, но выводит все города из базы 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"]);
}
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: liberty
(22.03.2013 в 06:41)
| | после exit фигурную скобку не поставили. | |
|
|
|
|
|
|
|
для: Lotanaen
(22.03.2013 в 10:29)
| | Ya ne vishu EXIT vo vtorom kode | |
|
|
|
|
|
|
|
для: liberty
(22.03.2013 в 18:18)
| | На шестой строчке. | |
|
|
|
|
|
|
|
для: 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. | |
|
|
|
|
|
|
|
для: 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"]);
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: 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']." что-то"; // правильно
?>
|
| |
|
|
|
|
|
|
|
для: Sfinks
(23.03.2013 в 12:16)
| | ссылки как раз работают.
нет букв. | |
|
|
|
|
|
|
|
для: liberty
(23.03.2013 в 19:23)
| | К сожалению не могу вам по албански написать. Только по русски. Если не поняли - прочтите еще несколько раз. | |
|
|
|