Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Доска объявлений на сайте


Автор: larinva 18.1.2007, 14:12
Привет всем!!! подскажите где можно взять информацию как правильно написать скрипт доски объявлений, не хочу пользоваться готовыми, хочу написать сам, Заранее благодарю всех!!!

Автор: PARROT 18.1.2007, 14:18
larinva, как написать тебе никто не скажет. Каждый пишет так как ему нужно или нужно клиенту. Создай новый топик и начни проектировать и писать, если что получаться не будет, мы тебе поможем.

Добавлено @ 14:19 
А вот дублировать свои сообщения в разных темах не стоит. 

Автор: larinva 24.1.2007, 12:36
Привет всем !!! Начал писать сам но сталкнулся с такой проблемой, помогите!!! Мне нужно чтобы из базы выводились заголовки разделов при нажатии на которые происходит переход в них очень нужно, плиз (Пример: заголовок
(Косметика и парфюмерия) при нажатии на эту ссылку открывается этот раздел с объявлениями. Заранее благодарю.

Автор: PARROT 24.1.2007, 12:41
larinva, в чем проблема? 
Выводишь все заголовки из базы и делаешь их ссылками вида: <a href=bord.php?id=номер записи в базе>Сам заголовок</a>

Автор: larinva 24.1.2007, 12:46
а можете какой нить пример небольшой? плиз

Автор: PARROT 24.1.2007, 13:02
Код

<table width="100%" cellpadding="0" cellspacing="0" border="0" align="center" class="1">
<?
$rous=mysql_query("SELECT caption FROM texnika") or die(mysql_error());
while($tex=mysql_fetch_row($rous))
{
?>
<tr><td height="50px" class="7"><a href=<a href=bord.php?idr=номер записи в базе><?=$tex[0];?></a></td></tr>
<?
        }
?>
</table>


Добавлено @ 13:03 
larinva, вы лучше выложите свой пример и покажите что не получается. Мы не пишем за Вас скрипты, иначе обращайтесь в работу. 

Автор: larinva 24.1.2007, 13:50
вот мой пример
Код

<link href="board.css" rel="stylesheet" type="text/css" />
<table align="center" width="100%">
<?php
//соединяемся с базой
require_once("../admin/config.php");
if (!isset($id_board)) $id_board=0;

//формируем запрос
$query = "SELECT * FROM board";
$rub = mysql_query($query);
if (!$rub) { puterror ("Ошибка");}
//если в текущем рфзделе имеется хотябы одно 
//объвление - формируем таблицу с объявлениями
if (mysql_num_rows($rub)>0)
{
$td == 0;

//выводим заголовок таблицы
while ($board = mysql_fetch_array($rub))
{
if (!empty($board['rubrika']) && $board['rubrika'])
{
$href = "<a href='board.php?id_board=".$board['id_board']."'>".$boardrub['msg']."></a>";
} else $h = "Нет";
                    
//если значение временной переменной равно 0,
//выводим тег начала строки таблицы <td>
if ($td == 0) echo "<td>";

echo "<table border=0 width=100%>
<tr><td>$href</td>
</tr></table>";

$td++;
if ($td == 8)
{
echo "</td>";
$td = 0;
}
}
}
?>
</table>

Автор: larinva 24.1.2007, 15:09
с этим кодом я разобрался теперь возникла другая проблема, как вывести из базы данные только те которые относятся именно к этой теме???

Автор: PARROT 24.1.2007, 15:17
larinva, запросить все остальное из той же таблицы, вывести по условию:
Код

WHERE id=$_GET['idr']

Автор: larinva 24.1.2007, 15:53
сделал вот так выдает ошибку 
Код

$query = "SELECT * FROM board WHERE id_board=".$_GET['ribrika']."";

Автор: PARROT 24.1.2007, 16:00
какую?

Добавлено @ 16:02 
проверяем на ошибки
Код

$rous=mysql_query("SELECT * FROM board where id_board='".$_GET['ribrika']."'") or die(mysql_error());

Автор: larinva 24.1.2007, 16:03
у меня вобщем написано вот так 
Код

$query = "SELECT * FROM board WHERE id_board=".$_GET['ribrika']."";
$obj = mysql_query($query);
if (!$obj) puterror ("Ошибка при обращении к объявлению");
//если в каталоге присутствует хотя бы одно объявление выводим его
if (mysql_num_rows($obj)>0)
while($board = mysql_fetch_array($obj))


а выдает ошибку "Ошибка при обращении к объявлению"

Автор: PARROT 24.1.2007, 16:08
Для проверки всегда все печатаем: 
Код

echo "SELECT * FROM board where id_board='".$_GET['ribrika']."'"; 
$query="SELECT * FROM board where id_board='".$_GET['ribrika']."'"; 
$obj = mysql_query($query) or die(mysql_error());

Автор: larinva 24.1.2007, 16:23
вот полный код
Код

//соединяемся с базой
require_once("../admin/config.php");
//делаем запрос 
echo "SELECT * FROM board where id_board='".$_GET['ribrika']."'"; 
$query="SELECT * FROM board where id_board='".$_GET['ribrika']."'" ;
$obj = mysql_query($query) or die(mysql_error());

//если в каталоге присутствует хотя бы одно объявление выводим его
if (mysql_num_rows($obj)>0)
while($board = mysql_fetch_array($obj))
 {
$rub = trim($board['rubrika']);
$zag = trim($board['zag']);
$msg = trim($board['msg']); 
echo "<table align=center width=100% border=1>
        <tr>
        <td width='25%'>Рубрика</td>
        <td width='25%'>Тема объявления</td>
        <td width='25%'>Текст объявления</td></tr>
        <tr>
        <td width='25%'>".$board['rubrika']."</td>
        <td width='25%'>".$board['zag']."</td>
        <td width='25%'>".$board['msg']."</td></tr></table><br>";

и выводит сообщение SELECT * FROM board where id_board=''

Автор: PARROT 24.1.2007, 16:37
а как выглядит ссылка? 

Автор: larinva 24.1.2007, 16:40
http://127.0.0.1/site/board/board.php?b=obj&id_board=53

Автор: PARROT 24.1.2007, 16:50
я не то имела ввиду, теперь сравните разницу:
Код

$href = "<a href='board.php?id_board=".$board['id_board']."'>".$boardrub['msg']."></a>";

Автор: larinva 24.1.2007, 16:57
появилось вместо разделов вот это > и все

Автор: PARROT 24.1.2007, 17:00
Код

$href = "<a href=\"board.php?id_board=".$board['id_board']."\">".$boardrub['msg']."</a>"; 

Cсылки вообще печатаются на странице?  

Автор: larinva 24.1.2007, 17:10
да на странице печатаются ссылки рубрик, а когда нажимаешь на них выводится пустое окно браузера, вместо содержимого данной рубрики, вот в чем проблемя

Добавлено @ 17:13 
а рубрики выводятся вот по этой ссылке
Код

$href = "<a href='board.php?b=obj&id_board=".$bor['id_board']."'>".$bor['rubrika']."</a>";


Добавлено @ 17:20 
сделал вот так
Код

//формируем запрос
$query = "SELECT * FROM board WHERE id_board='".$_GET['rubrika']."'";
$rub = mysql_query($query);



и ссылку вот так
Код

$href = "<a href='board.php?b=obj&id_board=".$board['id_board']."'>".$board['rubrika']."</a>";


и в итоге чистое окно браузера

Автор: PARROT 24.1.2007, 17:20
Код

echo "SELECT * FROM board where id_board='".$_GET['ribrika']."'"; 


Добавлено @ 17:22 
а ссылка печатетеся? 
оба кода в студию. 

Автор: larinva 24.1.2007, 17:29
у меня сейчас вот такой запрос
Код

$query = "SELECT * FROM board WHERE id_board='".$_GET['rubrika']."'";


а ссылка 
Код

$href = "<a href='board.php?id_board=".$board['id_board']."'>".$board['msg']."</a>";

 
и в итоге чистый экран ни рубрик и содержимого объявлений

Автор: PARROT 24.1.2007, 17:32
Код

echo "<a href=\"board.php?id_board=".$board['id_board']."\">".$board['msg']."</a>";

Автор: larinva 24.1.2007, 17:34
если отсечь из запроса вот эту часть 
Код

where id_board='".$_GET['ribrika']."'


то тогда будут выводиться ссылки на рубрики, но когда на них нажмешь открывается чистое окно

Автор: PARROT 24.1.2007, 17:36
Нет. 
1) Выводим рубрики
2) Выводим по ссылке начинку объяв. Если отсечь условие, то объявления будут выводиться все.

Добавлено @ 17:37 
Цитата(larinva @  24.1.2007,  17:34 Найти цитируемый пост)
если отсечь из запроса вот эту часть 
код PHP
1:

where id_board='".$_GET['ribrika']."'






то тогда будут выводиться ссылки на рубрики, но когда на них нажмешь открывается чистое окно 

Это запрос уже на вывод объяв. Второй запрос.

Автор: larinva 24.1.2007, 17:46
т.е в моем коде должно быть 2 запроса
1. выводит все содержимое базы
2. уже сортирует выведенное содержимое
правильно я понял?

Автор: PARROT 24.1.2007, 17:51
да.

Автор: larinva 24.1.2007, 18:04
чаво-то я окончательно запутался!!!

Автор: PARROT 24.1.2007, 18:13
Вот как пример:
Код

<?
if(!$id)
{
?>
<table width=100%>
<tr>
<td colspan=2><hr color=#28166F size=0></td>
</tr>
<tr>
<td style="padding-left:30"><a class=2 href=index.php?page=board&cat=1><img src="pic/m1.gif" width=12 height=12 border=0> Спрос</a></td>
<td align=right style="padding-right:30"><a class=2 href=index.php?page=board&cat=2><img src="pic/m1.gif" width=12 height=12 border=0> Предложение</a></td>
</tr>
<tr>
<td colspan=2><hr color=#28166F size=0></td>
</tr>
<tr>
<td colspan=2>
</br>
<table width=100% >
 <tr>
 <td align=center class=1>Добавлено</td>
 <td align=center class=1>Заголовок</td>
 <td align=center class=1>Город</td>
 <td align=center class=1>Автор</td>
 <td align=center class=1>Просмотров</td>
 </tr>
<?
if(empty($cat)){$cat=3;}
if ($cat==1 or $cat==2) {
         $cat_str="WHERE id_cat=".$cat;
        }
else {
         $cat_str="";
        }
if (!isset($s)) $s=0;
$res2=mysql_query("select id_notice,data,caption,txt,firms,name,city,phone,site,mail,img,img_b,'',cnt FROM notice ".$cat_str." order by data desc limit $s,20");
 $break        = array('#F4F2FA', '#F9EBDF');
for($i=0;$i<mysql_num_rows($res2);$i++)
{
        $mas=mysql_fetch_row($res2);
        $mas[2]=ucfirst($mas[2]);
        $mas[5]=ucfirst($mas[5]);
        $mas[6]=ucfirst($mas[6]);
        $mas[3]=stripslashes($mas[3]);
        $mas[4]=stripslashes($mas[4]);
        list($y,$m,$d)=split("-",$mas[1]);
        $mas[1]="$d.$m.$y";
        $color        = (($i%2) != 0) ? $break[0] : $break[1];

       echo  "<tr bgcolor=$color>
        <td align=center>$mas[1]</td>
        <td style='padding-left:5'><a class=5 href=?page=board&id=$mas[0]>$mas[2]</a></td>
        <td style='padding-left:5'>$mas[6]</td>
        <td style='padding-left:5'>$mas[5]</td>
        <td align=center>$mas[13]</td>
        </tr>";
}
$res3=mysql_query("select count(id_notice) from notice ".$cat_str."");
$num=mysql_fetch_row($res3);

$numstr=ceil($num[0]/20);
echo "<table><tr><td>Страницы: ($numstr)</td>";
for($i=1; $i<=$numstr; $i++){
        $start=($i-1)*20;
        if ($start==$s OR ($s==0 AND $i==1));
        print "<td><a class=6 href=index.php?page=board&cat=$cat&s=$start>[$i]</a></td> ";
        if ($start==$s OR ($s==0 AND $i==1));
}
echo "</tr></table>";


?>
</td>
</tr>
</table>
<?
}
if($id) {
$res3=mysql_query("select id_notice,data,caption,txt,firms,name,city,phone,site,mail,img,img_b,'',cnt FROM notice WHERE id_notice=".$id);
if(mysql_num_rows($res3) == 0)
{
header('location: index.php?page=board');
exit;
}else {
for($i=0;$i<mysql_num_rows($res3);$i++)
{
        $mas=mysql_fetch_row($res3);
        $mas[0]=stripslashes($mas[0]);
        $mas[3]=stripslashes($mas[3]);
        $mas[4]=stripslashes($mas[4]);
        $mas[5]=stripslashes($mas[5]);
        $mas[6]=stripslashes($mas[6]);
        $mas[2]=stripslashes($mas[2]);
         $mas[7]=stripslashes($mas[7]);
        $mas[8] = str_replace('http://', '', $mas[8]);
        $mas[2]=ucfirst($mas[2]);
        $mas[5]=ucfirst($mas[5]);
        $mas[6]=ucfirst($mas[6]);
        $mas[4]=ucfirst($mas[4]);
        if($mas[4]=="") $fm="Нет данных"; else $fm=$mas[4];
        if($mas[5]=="") $nm="Нет данных";  else $nm=$mas[5];
        if($mas[6]=="") $g="Нет данных";   else $g=$mas[6];
        if($mas[7]=="") $f="Нет данных";   else $f=$mas[7];
        if($mas[8]=="") $st="Нет данных";  else $st="<a href=http://$mas[8]>$mas[8]</a>";
        if($mas[9]=="") $m="Нет данных";   else $m=$mas[9];
       $size = getimagesize ($mas[11]);
       if ($mas[10]=="") $img="<td>Нет фото</td>";
else $img = "<td onClick=\"showImg('','$mas[11]')\" style=\"cursor: pointer\"><img src=\"$mas[10]\" border=1 alt=\"увеличить фото\"></td>";
if(mysql_query("UPDATE notice SET cnt=cnt+1   WHERE  id_notice=".$mas[0]));
        echo "<table  width=100%>
        <tr>
        <td class=3>$mas[2]</td>
        </tr>
        <tr>
        <td style='padding-left:10'>$mas[3]</td>
        </tr>
        <tr>
        <td>Фирма: $fm</td>
        </tr>
        <tr>
        <td>Имя: $nm</td>
        </tr>
        <tr>
        <td>город: $g</td>
        </tr>
        <tr>
        <td>телефон: $f</td>
        </tr>
        <tr>
        <td>site: $st</td>
        </tr>
        <tr>
        <td><a href=?page=post&id=$id>послать письмо</a></td>
        </tr>
        <tr>
        $img
        </tr>
        </table>";
}
        }
        }
?>





Автор: larinva 25.1.2007, 10:37
большое спасибо за пример я как только освобожусь попробую его и тогда дам знать!!!! smile 

Автор: larinva 25.1.2007, 10:56
и еще может посоветуете какую нибудь литературу по написанию сайтов на php

Автор: PARROT 31.1.2007, 14:58
larinva, использовать мой пример, стоит просто как пример. 

Цитата(larinva @  25.1.2007,  10:56 Найти цитируемый пост)
и еще может посоветуете какую нибудь литературу по написанию сайтов на php 

Такой литературы нет. Есть отдельно дизайн сайтов и написание функциональности сайтов на языке РНР. 

Автор: larinva 2.2.2007, 09:36
тогда по написанию функциональности сайтов на языке php

Автор: larinva 2.2.2007, 10:47
подскажите как сделать выборку из нескольких таблиц одной базы нужные поля в одном запросе? спасибо заранее! 

Автор: PARROT 2.2.2007, 11:45
Модератор: Пожалуйста, один топик - один вопрос.
http://www.mysql.ru/docs/man/Multiple_tables.html

Автор: larinva 2.2.2007, 11:50
уже смотрел не получается

Автор: PARROT 2.2.2007, 12:22
larinva, это не ответ, чтобы получилось надо не смотреть, а пробовать.

Добавлено @ 12:28 
Код

$res2=mysql_query("SELECT
        t1.id,
        t1.data,
        date_format(t2.`newdata`, '%d.%m.%Y %H:%i') as newdata,
        t1.caption,
        t1.txt,
        t1.name,
        t1.parent,
        t1.cnt,
        t1.smile
FROM
        review as t1, review as t2
WHERE
        t1.parent = '0' and
        t2.parent = t1.id

group by t1.id
order by t2.`newdata` asc limit $s, 10") or die(mysql_error());

Автор: larinva 2.2.2007, 12:30
и пробовал тоже

Автор: PARROT 2.2.2007, 12:31
larinva, что из сего надо выбрать. Нужна база.
Или вы даетет свою базу и показываете что из чего надо выбирать или я закрою тему и отправлю ее в работу, так как тут скриптов не пишут, а помогают их писать. 
Флеймим мы в другом разделе. 
Читаем правила http://forum.vingrad.ru/s/7e9242369ab0b9519132bfdae02e65f6/act-SR/f-27.html

Автор: larinva 2.2.2007, 12:55
есть база в ней 2 таблицы 
1. boardrub с полями (id_boardrub, rubrika)
2. board c полями (id_board, rubrika, zag, msg)
нужно в ссылке вывести на странице board.php из таблицы boardrub поле rubrika кликнув на которое откроются данные из таблицы board все поля и только той рубрики на которую кликнул и они должны туда выгружаться все этой рубрики.

Автор: -=Ustas=- 2.2.2007, 13:09
larinva, почитай на dev.mysql.com в разделе документация про оператор JOIN. Там очень хорошо описано и с примерами, как раз для твоей выборки из двух таблиц.

Автор: larinva 8.2.2007, 11:23
все написал все что хотел, вот еще какой вопрос как из выподающего списка <option> сделать так чтобы в первой строке стояло (- выберите доску объявлений -) , а потом шло перечисление рубрик из базы. 

Автор: PARROT 8.2.2007, 11:40
Забей в базу все рубрики и выбирай их из базы.

Автор: larinva 8.2.2007, 11:50
у меня так и есть. Но нужно чтобы первым всегда было вот это (- выберите доску объявлений -) и проверялось если не выбран раздел

Автор: PARROT 8.2.2007, 12:04
http://www.htmlbook.ru/html/select.html

Автор: PARROT 8.2.2007, 12:32
larinva, что не получается, дай код. Иначе отправлю тему в работу или закрою. 

Автор: larinva 8.2.2007, 12:39
это форма добавления объявления
Код

<?php
//соединяемся с базой
require_once("../admin/config.php");
echo"<table align='center' width='550' border='1' cellpadding='0' cellspacing='0'>
<form method='post' action='add.php'  name='addform'>
<td >Категория:</td>
<td><SELECT name=rubrika style='FONT-SIZE: 12px; WIDTH: 270px'>-выберите доску объявлений-";
//делаем выборку из базы
$query = "SELECT * FROM boardrub";
$rub = mysql_query($query);
if (!$rub) puterror ("Ошибка");

echo "<option>-выберите доску объявлений-</option>";

while ($boardrub = mysql_fetch_array($rub))
{
$rubrika = trim($boardrub['rubrika']);
echo "<option>".$boardrub['rubrika']."</option>"; 
} 
echo "</select></td></tr>";
echo "<tr><td width='250'>Тема объявления:* (не более 100 символов)</td>
<td ><input type='text' name=zag style='FONT-SIZE: 14px; WIDTH: 300px'/></td></tr>
<tr><td>Тип объявления</td>
  <td>Спрос
    Предложение</td>
</tr>
<tr><td>Текст обяъвления:</td>
<td><textarea name=msg style='FONT-SIZE: 14px; HEIGHT: 200px; WIDTH: 300px'></textarea></td></tr>
<tr><td>Срок хранения объявления:</td>
<input type=hidden name=id_page value='". $_GET['id_page']."'>
<td><!--DWLayoutEmptyCell-->&nbsp;</td>
</tr>
<tr><td colspan='2' align='center'><input type='submit' value='Отправить' style='FONT-SIZE: 10px; HEIGHT: 20px; WIDTH: 100px' /></td></tr>
</form>
</table>";
?>


а это обработчик
Код

<?php
//устанавливаем соединение с базой
require_once ("../admin/config.php");
//проверим достаточно ли информации для занесения в базу данных
if (empty($_POST['zag'])) links ($_POST['id_board'], "Вы не ввели заголовок объявления");
if (empty($_POST['msg'])) links ($_POST['id_board'], "Вы не ввели текст объявления");
//заменяем одинарные кавычки обратными
$_POST['zag'] = str_replace("'","`",$_POST['zag']);
$_POST['msg'] = str_replace("'","`",$_POST['msg']);

//делаем sql-запрос на добавление объявления
$query = "INSERT INTO board VALUES (Null,
                                    '".$_POST['rubrika']."',
                                    '".$_POST['zag']."',
                                    '".$_POST['msg']."',
                                    '".$_POST['id_page']."');";
if (mysql_query($query))
{
echo "Объявление успешно добавлено!";
echo "<html><head>
        <meta http-equiv='Refresh' CONTENT='1; url=board.php?b=razdel'>
    </head></html>";
} else echo "Ошибка сообщение не добавлено!";

function links($id_board, $ms)
  {
    echo "<p>".$ms."</p>";
    echo "<p><a href=board.php?b=addform onclick='history.back()'>Вернуться к правке сообщения</a></p>";
    
    exit();
  }
?>

Автор: PARROT 8.2.2007, 12:46
Код

<option selected>Выберите доску объявлений</option>
<option value="тут должно быть значение выбранное из базы,номер id">".$boardrub['rubrika']."</option>


Добавлено @ 12:47 
larinva, в данной Вам выше ссылке, все написано. 

Автор: larinva 8.2.2007, 12:56
у меня из базы все выводится в выпадающий список мне нужно вот так как тут http://boards.sarbc.ru/add/

Автор: PARROT 8.2.2007, 13:03
Код

<?php
//соединяемся с базой
require_once("../admin/config.php");
echo"<table align='center' width='550' border='1' cellpadding='0' cellspacing='0'>
<form method='post' action='add.php'  name='addform'>
<td >Категория:</td>
<td><SELECT name=rubrika style='FONT-SIZE: 12px; WIDTH: 270px'>;
//делаем выборку из базы
$query = "SELECT * FROM boardrub";
$rub = mysql_query($query);
if (!$rub) puterror ("Ошибка");

echo "<option selected>Выберите доску объявлений</option>";

while ($boardrub = mysql_fetch_array($rub))
{
$rubrika = trim($boardrub['rubrika']);
echo "<option value=\"$boardrub['id']\">".$boardrub['rubrika']."</option>"; 
} 
echo "</select></td></tr>";
echo "<tr><td width='250'>Тема объявления:* (не более 100 символов)</td>
<td ><input type='text' name=zag style='FONT-SIZE: 14px; WIDTH: 300px'/></td></tr>
<tr><td>Тип объявления</td>
  <td>Спрос
    Предложение</td>
</tr>
<tr><td>Текст обяъвления:</td>
<td><textarea name=msg style='FONT-SIZE: 14px; HEIGHT: 200px; WIDTH: 300px'></textarea></td></tr>
<tr><td>Срок хранения объявления:</td>
<input type=hidden name=id_page value='". $_GET['id_page']."'>
<td><!--DWLayoutEmptyCell-->&nbsp;</td>
</tr>
<tr><td colspan='2' align='center'><input type='submit' value='Отправить' style='FONT-SIZE: 10px; HEIGHT: 20px; WIDTH: 100px' /></td></tr>
</form>
</table>";
?>

Автор: larinva 8.2.2007, 14:00
все тоже самое нет проверки !!!!

Автор: PARROT 8.2.2007, 14:08
Так проверку надо написать! Ктож ее писать то будет?
Проверяйте какой селект пришел и выбирайте то значение из базы и выводите доску объявлений.

Добавлено @ 14:08 
не забудьте значение по умолчанию поставить. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)