|
|
|
| Вообщем суть такая есть как бы каталог, в нём категории при просмотре одной из категории выводиться всё что в ней находиться буквально по 3-4 столбца, далее по сцылке переход на детальный просмотр, суть проблемы, при переходе выводиться тока одна позиция всё время.
Во собственно код.
echo "<p align=center class=\"box\">$navi_h";
$query = mysql_query("SELECT * FROM catalog
WHERE id_catalog=".$_GET['id_parent'])or die("Invalid query: " . mysql_error());
while ($row = mysql_fetch_row($query)){echo "$row[1]";}
$query="SELECT * FROM obiev WHERE id_catalog=".$_GET['id_parent']."";
$result = mysql_query($query) or die("Ошибка обработки данных: " . mysql_error());
while ($row = mysql_fetch_assoc($result))
{
switch ($row['tips'])
{
case 'tip':
$tips = "Тип объявления";
break;
case 'serch':
$tips = "Поиск Работы";
break;
case 'pred_rab':
$tips = "Предложение работы";
break;
case 'bay':
$tips = "Покупка";
break;
case 'sel':
$tips = "Продажа";
break;
case 'yslygi':
$tips = "Услуги";
break;
}
switch ($row['cena'])
{
case 'tvcen':
$cena = "Твёрдая цена";
break;
case 'torg':
$cena = "Торг";
break;
case 'max':
$cena = "Максимальная";
break;
case 'min':
$cena = "Минимальная";
break;
}
}
echo " -> $tips";
$query = mysql_query("SELECT * FROM obiev WHERE id_catalog=".$_GET['id_parent']);
$row = mysql_fetch_row($query);
echo" просмотров[$row[13]]";
echo "</a>";
echo "</p>";
// Выбираем из базы product товарные позиции относящиеся к
// текущему каталогу
$query= mysql_query("SELECT * FROM obiev
WHERE id_catalog=".$_GET['id_parent']);
$row = mysql_fetch_row($query);
{
// Выводим заголовок таблицы
?>
<table class=bodytable width="100%" border="1" cellpadding=2 cellspacing=0 bordercolorlight=gray bordercolordark=white>
<?
echo "<tr align=center class='tableheader'>
<td><p class=help>ТИП</td>
<td><p class=help>Заголовок</td>
<td><p class=help>Цена</td>
<td><p class=help>Имя</td>
<td><p class=help>Email</td>
<td><p class=help>Телефон</td>
<td><p class=help>Страна</td>
<td><p class=help>Город</td>
<td><p class=help>Сообщение</td>
<td><p class=help>Дата</td>
</tr>";
// Определяем район
switch ($row['tips'])
{
case 'tip':
$tips = "Тип объявления";
break;
case 'serch':
$tips = "Поиск Работы";
break;
case 'pred_rab':
$tips = "Предложение работы";
break;
case 'bay':
$tips = "Покупка";
break;
case 'sel':
$tips = "Продажа";
break;
case 'yslygi':
$tips = "Услуги";
break;
}
switch ($row['cena'])
{
case 'tvcen':
$cena = "Твёрдая цена";
break;
case 'torg':
$cena = "Торг";
break;
case 'max':
$cena = "Максимальная";
break;
case 'min':
$cena = "Минимальная";
break;
}
echo "<tr>
<td><p class=small> $tips</td>
<td><p class=small> ".$row['2']."</td>
<td><p class=small> $cena</td>
<td><p class=small> ".$row['5']."</td>
<td><p class=small> ".$row['4']."</td>
<td><p class=small> ".$row['6']."</td>
<td><p class=small> ".$row['9']."</td>
<td><p class=small> ".$row['10']."</td>
<td><p class=small> ".$row['1']."</td>
<td><p class=small> ".$row['11']."</td>
</tr></table>";
}
|
В чём проблема понять не могу...
Переход по сцылке осуществляеться вот таким кодом.
<a href=detail.php?id_parent=".$_GET['id_parent']."&id_catalog=".$par['id_catalog']."&id_product=".$par['id_product'].">$tips</a>
|
| |
|
|
|
|
|
|
|
для: Antik_
(16.05.2007 в 07:43)
| | Прикрепите дамп таблиц catalog и obiev (лучше в виде архива), чтобы можно было воспроизвести ситуацию? | |
|
|
|
|
|
|
|
для: cheops
(16.05.2007 в 10:16)
| | Базу зачистил...
CREATE TABLE `obiev` (
`id_product` int(11) NOT NULL auto_increment,
`post` tinytext NOT NULL,
`note` tinytext NOT NULL,
`tips` enum('tip','serch','bay','sel','yslygi','pred_rab') NOT NULL default 'tip',
`email` tinytext NOT NULL,
`name` tinytext NOT NULL,
`tel` tinytext NOT NULL,
`cena` enum('tvcen','torg','max','min') NOT NULL default 'tvcen',
`tcen` tinytext NOT NULL,
`strana` tinytext NOT NULL,
`gorod` tinytext NOT NULL,
`time` datetime NOT NULL default '0000-00-00 00:00:00',
`reiting` smallint(6) default '0',
`id_catalog` int(8) NOT NULL default '0',
PRIMARY KEY (`id_product`),
KEY `id_catalog` (`id_catalog`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
CREATE TABLE `catalog` (
`id_catalog` int(8) NOT NULL auto_increment,
`name` text NOT NULL,
`id_parent` int(8) NOT NULL default '0',
PRIMARY KEY (`id_catalog`),
KEY `id_parent` (`id_parent`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
| |
|
|
|
|
|
|
|
для: Antik_
(16.05.2007 в 10:26)
| | >Базу зачистил...
Ну на пустой базе ой как классно отлаживаться.
С другой стороны, при пустой базе всё должно работать нормально :) | |
|
|
|
|
|
|
|
для: Trianon
(16.05.2007 в 10:45)
| | Вот, если я правильно понел ваш вопрос.
echo "<p align=center class=\"box\">$navi_h";
if($_GET['id_parent'] != 0)
{
$query = mysql_query("SELECT * FROM catalog
WHERE id_catalog=".$_GET['id_parent'])or die("Invalid query: " . mysql_error());
while ($row = mysql_fetch_row($query)){echo "[$row[1]]";}
$query = mysql_query("SELECT * FROM obiev WHERE id_catalog='$id_catalog'")or die("Invalid query: " . mysql_error());
$row = mysql_fetch_array($query);
echo " Объявлений (всего $row[12]) Страница:[$page]</p>";
$list_news_delete=20;
if(!$block && !$page_b){$block=0;}
$query = mysql_query("SELECT * FROM catalog WHERE id_catalog=".$_GET['id_parent'])or die("Invalid query: " . mysql_error());
$row = mysql_fetch_array($query);
$total_messages=$row["4"];
$query = mysql_query("SELECT MAX(id_catalog) FROM obiev WHERE reiting='$reiting'");
$row = mysql_fetch_array($query);
$total_block=($total_messages-($total_messages % 200))/200 ;
$total_page=($total_messages-($total_messages % 20))/20 +1;
if($page<1)
{
$page=1;
$start_page=0;
$end_page=$list_news_delete;
}
// если послана страница ввыводим станиц
if($page || $page_p || $page_m)
{
if($page_p) {
$block++;
$page=$page_p;
}
if($page_m) {
$block--;
$page=$page_m;
}
$start_page=$page*$list_news_delete-$list_news_delete;
$end_page=$list_news_delete;
$i=$block*200;
}
$nu=1;
$query = "SELECT * FROM obiev
WHERE id_catalog=".$_GET['id_parent']." AND
'$lasttime'<time
ORDER BY time";
$prt = mysql_query($query);
if($prt)
{
echo "
<p class=\"box\">";
echo "<table width=\"100%\">";
echo "<tr align=center>
<td><p class=box>ТИП</td>
<td><p class=box>Заголовок</td>
<td><p class=box>Цена</td>
<td><p class=box>Имя</td>
<td><p class=box>Email</td>
<td><p class=box>Телефон</td>
<td><p class=box>Страна</td>
<td><p class=box>Добавленно</td>
</tr>
</tr>";
$str1="<tr bgcolor=#e6e6e6>";
$str2="<tr bgcolor=#ffffff>";
$istr=2505;
$nom=($page-1)*30;
while($par = mysql_fetch_array($prt))
{
// Определяем район
switch ($par['tips'])
{
case 'tip':
$tips = "Тип объявления";
break;
case 'serch':
$tips = "Поиск Работы";
break;
case 'pred_rab':
$tips = "Предложение работы";
break;
case 'bay':
$tips = "Покупка";
break;
case 'sel':
$tips = "Продажа";
break;
case 'yslygi':
$tips = "Услуги";
break;
}
$nom=$nom+1;
$istr=$istr+1;
if($istr%2==0)
{$str=$str1;}
else {$str=$str2;}
echo "<tr>
<p class=\"box\"><td> <a href=detail.php?id_parent=".$_GET['id_parent']."&id_catalog=".$par['id_catalog']."&id_product=".$par['id_product'].">$tips</a></td></p>
<td> ".$par['note']."</td>
<td> ".$par['name']."</td>
<td> ".$par['email']."</td>
<td> ".$par['tel']."</td>
<td> ".$par['strana']."</td>
<td> ".$par['gorod']."</td>
<td> ".$par['time']."</td>
<br> </tr>";
}
}
if ($nu==2)
$nu=1;
else
$nu=2;
}
echo "
</tr>
</table>
</p>
";
echo"
<p class=\"box\"><table>
<tr><td><a class=menu href=\"addprodform.php?id_parent=$id_parent&id_catalog=$id_parent\">Добавить Объявление</a>
</td></tr></table></p>";
|
| |
|
|
|
|
|
|
|
для: Antik_
(16.05.2007 в 11:00)
| | неправильно поняли.
Вот фрагмент Вашего кода.
// Выбираем из базы product товарные позиции относящиеся к
// текущему каталогу
$query= mysql_query("SELECT * FROM obiev
WHERE id_catalog=".$_GET['id_parent']);
$row = mysql_fetch_row($query);
{
// Выводим заголовок таблицы
|
Такой код выдаст лишь первую строку результата запроса.
Для вытягивания всех нужен цикл.
Где оператор цикла? | |
|
|
|
|
|
|
|
для: Trianon
(16.05.2007 в 11:05)
| | Гм запутался сам, суть в том что он при нажатии на сцылку выводить один и тот же аргумент, тоесть сцылка будет товар2_сатаог1_перент1 то он выведит товар1_сатаог1_перент1 вот в чем проблема. | |
|
|
|
|
|
|
|
для: Antik_
(16.05.2007 в 07:43)
| | а где опрератор цикла, шагающий по объявлениям? | |
|
|
|