|
|
|
| добрый день!
выводим список учебных заведений.
а сверху указываем города, в которых есть эти учебные заведения + кол-во учебных заведений в этих городах.
счетчик не верно считает.
<?php
$sql = mysql_query("SELECT * FROM towns WHERE id_region='$id_region' ORDER by title");
if(!$sql)
{echo "<br>В данном разделе пока нет информации";}
else
{
if(mysql_num_rows($sql) > 0)
{
// ниже узнаем сколько записей в таблице universities в которых id_town одинаковое
$res = mysql_query("SELECT COUNT(*) FROM universities WHERE id_town='$id_town'");
$row = mysql_fetch_row($res);
$total = $row[0]; // всего записей
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
$i = 0;
while ($row = mysql_fetch_array($sql))
{
$i++;
if($i == 1) echo "<tr>";
echo "<td><table width='100px' border='0' cellspacing='0' cellpadding='0' >
<tr>
<td nowrap><a href='post_towns.php?id_town=$row[id_town]'>$row[title]</a> ($row[0])</td>
</tr>
</table></td>";
//Указываем количество столбцов на странице
if($i == 3)
{
echo "</tr>";
$i = 0;
}
}
echo "</table>";
}}
?>
|
| |
|
|
|
|
|
|
|
для: franko
(06.04.2011 в 17:08)
| | $total куда пропала?
$row уже переопределена в цикле.
<td nowrap><a href='post_towns.php?id_town=$row[id_town]'>$row[title]</a> ($total)</td>
|
| |
|
|
|
|
|
|
|
для: franko
(06.04.2011 в 17:08)
| | 1. А откуда берется значение $id_town (оно корректное)?
2. Поставьте проверку - не выводится никакой ошибки?
<?php
...
$query = "SELECT COUNT(*) FROM universities WHERE id_town='$id_town'";
$res = mysql_query($query);
if(!$res) exit("Ошибка - ".$query);
$row = mysql_fetch_row($res);
$total = $row[0]; // всего записей
...
?>
|
PS Да, и в самом деле, у вас действительно переменная $total далее не используется, а следующий цикл затирает все что в $row. | |
|
|
|
|
|
|
|
для: cheops
(06.04.2011 в 17:56)
| | 1. Вот структура используемых таблиц
universities (id_university, title, ID_town, ID_region, ID_state)
towns ( ID_town, title, id_region)
2. Ошибок нет.
3. поставил $total во всех значениях теперь нули | |
|
|
|
|
|
|
|
для: franko
(06.04.2011 в 18:17)
| | Выведите запросы при помощи echo, как они выглядят?
echo "SELECT COUNT(*) FROM universities WHERE id_town='$id_town'";
|
Если их выполнять в phpMyAdmin или в командной строке они тоже 0 возвращают? | |
|
|
|
|
|
|
|
для: cheops
(06.04.2011 в 18:25)
| | последнее не понял как сделать. можете еще раз пояснить?
echo $total - тут ноль. | |
|
|
|
|
|
|
|
для: franko
(06.04.2011 в 18:33)
| | А прямо рядом с вызовом mysql_query() выведите
<?php
...
echo "SELECT COUNT(*) FROM universities WHERE id_town='$id_town'<br>";
$res = mysql_query("SELECT COUNT(*) FROM universities WHERE id_town='$id_town'");
...
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(06.04.2011 в 19:02)
| | на выходе:
SELECT COUNT(*) FROM universities WHERE id_town='' | |
|
|
|
|
|
|
|
для: franko
(06.04.2011 в 19:03)
| | Значит переменная $id_town пустая, нужно выяснить почему так. | |
|
|
|
|
|
|
|
для: cheops
(06.04.2011 в 19:02)
| | id_town не пустая.
видно запрос SELECT COUNT(*) FROM universities WHERE id_town='$id_town' не верен | |
|
|
|
|
|
|
|
для: franko
(06.04.2011 в 20:37)
| | Значит переменная $id_town где-то обнуляется, иначе бы значение было в одиночных скобках поля id_town
SELECT COUNT(*) FROM universities WHERE id_town=''
| Откуда она поступает в скрипт и как формируется? | |
|
|
|
|
|
|
|
для: cheops
(06.04.2011 в 21:35)
| | структура таблиц
universities (id_university, title, ID_town, ID_region, ID_state)
towns ( ID_town, title, id_region)
вначале вывожу города одного региона
$sql = mysql_query("SELECT * FROM towns WHERE id_region='$id_region' ORDER by title");
|
у этого города известно ID_town
далее просто надо посчитать сколько одинаковых городов в таблице universities
$res = mysql_query("SELECT COUNT(*) FROM universities WHERE id_town='$id_town'");
|
вот откуда берется id_town | |
|
|
|
|
|
|
|
для: franko
(07.04.2011 в 07:50)
| | Имеется в виду не MySQL-поле id_town, с ним все в порядке, а PHP-переменная $id_town, которая подставляется в MySQL-запрос. Она оказывается пустой - из-за этого запрос работает неправильно. | |
|
|
|
|
|
|
|
для: cheops
(07.04.2011 в 09:00)
| | тогда что можно занести в $id_town чтобы запрос верно работал? | |
|
|
|
|
|
|
|
для: franko
(07.04.2011 в 09:42)
| | Если я правильно понял, задумка была извлечь города из запроса
<?php
...
$sql = mysql_query("SELECT * FROM towns WHERE id_region='$id_region' ORDER by title");
...
?>
| Вы его выполняете, однако, данных из него не извлекаете: для этого запроса нет ни одного вызова функции mysql_fetch_array(), или какой-то другой функции, извлекающей данные из результирующей таблицы. Вы просто проверяете выполнен ли запрос и если выполнен, то начинаете извлекать ВУЗы. Обработайте его так (у вас получится два вложенных while-цикла), чтобы получить массив $towns и тогда вы сможете заполнить переменную $id_town
<?php
...
while($towns = mysql_fetch_array($sql))
{
...
$id_town = $towns['id_town'];
...
}
...
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(07.04.2011 в 09:49)
| | если взглянуть на http://vuz.11klassniki.ru/post_regions.php?id_region=1 то города у меня извлекаются.
в скобках - (кол-во вузов) -по нулям | |
|
|
|
|
|
|
|
для: franko
(07.04.2011 в 10:05)
| | Если не сложно прикрепите полный вариант скрипта в виде файла или опишите подробнее, как формируете переменную $id_town. | |
|
|
|
|
 3.6 Кб |
|
|
для: cheops
(07.04.2011 в 10:21)
| | прикладываю | |
|
|
|
|
|
|
|
для: franko
(07.04.2011 в 10:26)
| | Понятно, вы запрос вынесли за пределы цикла, возьмите вот этот блок
<?php
$sql = mysql_query("SELECT * FROM towns WHERE id_region='$id_region' ORDER by title");
if(!$sql)
{echo "<br>В данном разделе пока нет информации";}
else
{
if(mysql_num_rows($sql) > 0)
{
$res = mysql_query("SELECT COUNT(*) FROM universities WHERE id_town='$id_town'");
if(!$res) exit("Ошибка - ".$query);
$row = mysql_fetch_row($res);
$total = $row[0]; // всего записей
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
$i = 0;
while ($row = mysql_fetch_array($sql))
{
$i++;
if($i == 1) echo "<tr>";
echo "<td><table width='100px' border='0' cellspacing='0' cellpadding='0' >
<tr>
<td nowrap><a href='post_towns.php?id_town=$row[id_town]'>$row[title]</a> ($total)</td>
</tr>
</table></td>";
//Указываем количество столбцов на странице
if($i == 3)
{
echo "</tr>";
$i = 0;
}
}
echo "</table>";
}}
?>
| и замените его следующим
<?php
$query = "SELECT * FROM towns
WHERE id_region='$id_region'
ORDER by title";
$sql = mysql_query($query);
if(!$sql) exit("<br>Ошибка обращения к базе данных - ".mysql_error());
if(!mysql_num_rows($sql))
{
echo "<br>В данном разделе пока нет информации";
}
else
{
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
$i = 0;
while ($row = mysql_fetch_array($sql))
{
$query = "SELECT COUNT(*) FROM universities
WHERE id_town='$row[id_town]'";
$res = mysql_query();
if(!$res) exit("<br>Ошибка обращения к базе данных - ".mysql_error());
$total = mysql_result($res, 0);
$i++;
if($i == 1) echo "<tr>";
echo "<td><table width='100px' border='0' cellspacing='0' cellpadding='0' >
<tr>
<td nowrap><a href='post_towns.php?id_town=$row[id_town]'>$row[title]</a> ($total)</td>
</tr>
</table></td>";
//Указываем количество столбцов на странице
if($i == 3)
{
echo "</tr>";
$i = 0;
}
}
echo "</table>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(07.04.2011 в 11:23)
| | ошибку дает
Warning: Wrong parameter count for mysql_query() in .. on line 74
Ошибка обращения к базе данных -
74 строка - $res = mysql_query(); | |
|
|
|
|
|
|
|
для: franko
(07.04.2011 в 11:52)
| | Забыл $query, возьмите вот этот вариант
<?php
$query = "SELECT * FROM towns
WHERE id_region='$id_region'
ORDER by title";
$sql = mysql_query($query);
if(!$sql) exit("<br>Ошибка обращения к базе данных - ".mysql_error());
if(!mysql_num_rows($sql))
{
echo "<br>В данном разделе пока нет информации";
}
else
{
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
$i = 0;
while ($row = mysql_fetch_array($sql))
{
$query = "SELECT COUNT(*) FROM universities
WHERE id_town='$row[id_town]'";
$res = mysql_query($query);
if(!$res) exit("<br>Ошибка обращения к базе данных - ".mysql_error());
$total = mysql_result($res, 0);
$i++;
if($i == 1) echo "<tr>";
echo "<td><table width='100px' border='0' cellspacing='0' cellpadding='0' >
<tr>
<td nowrap><a href='post_towns.php?id_town=$row[id_town]'>$row[title]</a> ($total)</td>
</tr>
</table></td>";
//Указываем количество столбцов на странице
if($i == 3)
{
echo "</tr>";
$i = 0;
}
}
echo "</table>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(07.04.2011 в 12:32)
| | Работает как часы. спасибо! | |
|
|
|
|
|
|
|
для: franko
(07.04.2011 в 12:35)
| | к примеру, как реализовать следующее:
ссылка которая содержит город с кол-вом учебных заведений
<td nowrap><a href='post_towns.php?id_town=$row[id_town]'>$row[title]</a> ($total)</td>
|
будет вести не на post_towns.php а возвращаться на эту же страницу, но теперь город по которому кликнули выделяется и выводится список учебных заведений в этом городе.
вот как здесьhttp://www.edu.ru/abitur/act.5/rgn.25000000/index.php | |
|
|
|
|
|
|
|
для: franko
(07.04.2011 в 13:20)
| | Сравнивайте переменную $_GET['id_town'] с $row['id_town'], если они совпадают - выделяйте ссылку, а при выборе университета ориентируйтесь на id_town, а не на id_region (для этого удобно WHERE-условие формировать отдельно от запроса тоже при помощи оператора if).
PS Под новые вопросы лучше заводить новые темы (эта уже слишком длинная). | |
|
|
|