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

Форум MySQL

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

 

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

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

тема: Доска объявлений PHP/MySQL
 
 автор: PHP-lamer   (03.08.2006 в 15:56)   письмо автору
 
 

Прошу помочь с написанием скрипта доски объявлений, я новичок в программировании и у меня возникли небольшие недопонимания.
Подскажите пожалуйста какой тип поля нужен для занесения в БД значений из полей с выбором ответа, т.е. в поле список на выбор, например

<select name=rub>
<option value=1 selected>Куплю</option>
<option value=2>Продам</option>
<option value=3>Поменяю</option>
<option value=4>Сдам в аренду</option>

И еще вопрос, как можно потом по данному полю осуществить фильтр впоследствии?

Заранее благодарен

   
 
 автор: RV   (03.08.2006 в 16:01)   письмо автору
 
   для: PHP-lamer   (03.08.2006 в 15:56)
 

tinyint(1) например

   
 
 автор: PHP-lamer   (03.08.2006 в 16:03)   письмо автору
 
   для: RV   (03.08.2006 в 16:01)
 

Спасибо, а как потом быть с переменными, например тескт это $msg, а эти выбранные значения как в переменную занести? уж простите за глупый вопрос

   
 
 автор: Holsten Bier   (03.08.2006 в 16:03)   письмо автору
 
   для: PHP-lamer   (03.08.2006 в 15:56)
 

Для хранения значения поля rub (как в примере) подойдет любой целый тип: TINYINT, SMALLINT, INT. А если вместо цифр в тегах OPTION используются строковые значения, например


<select name=rub> 
<option value="buy" selected>Куплю</option> 
<option value="sell">Продам</option> 
<option value="change">Поменяю</option> 
<option value="neznayukak">Сдам в аренду</option></select>


то можно задать поле так


CREATE TABLE ... (
..
rub ENUM('buy','sell','change','neznayukak') default 'buy',
...)


Тогда rub может принимать только одно значение из предложенных.

   
 
 автор: PHP-lamer   (03.08.2006 в 16:06)   письмо автору
 
   для: Holsten Bier   (03.08.2006 в 16:03)
 

Огромное спасибо, возможно будут еще вопросы...

   
 
 автор: Holsten Bier   (03.08.2006 в 16:06)   письмо автору
 
   для: Holsten Bier   (03.08.2006 в 16:03)
 

... напутал я с типами...

   
 
 автор: PHP-lamer   (03.08.2006 в 18:30)   письмо автору
 
   для: Holsten Bier   (03.08.2006 в 16:06)
 

У меня опять вопрос, файл addform.php выдает ошибки
Undefined variable: contact in z:\home\test.ru\www\addform.php on line 16
и
Undefined variable: msg in z:\home\test.ru\www\addform.php on line 60
почему переменные $contact и $msg не определены, подскажите пожалуйста.
Также почему-то не заносится в БД значение переменных $type, $object и $city.
Возможно я что-либо не так сделал.


<form action="add.php" method=post>
<table width=600 border=1 bordercolor=#3c9bf7 cellspacing=0 style='border-collapse: collapse'>
<tr bordercolor=#d5ebff><td bgcolor=#d5ebff colspan=2>
<b><u>Добавить объявление</u></b></td></tr><tr bordercolor=#FFFFFF><td width=200 height=21>
<p align=right>Контактная информация (телефон, e-mail):</td><td height=21>
<input type=text name=contact value=<?= $contact ?>></td></tr>
<tr bordercolor=#FFFFFF><td width=200 height=21><p align=right>Тип операции:</td><td height=21>
<select name=<?= $type ?>>
<option value="sell" selected>Продаю</option>
<option value="buy">Куплю</option>
<option value="arenda_sni">Сниму в аренду</option>
<option value="arenda_sda">Сдаю в аренду</option>
<option value="barter">Обмениваю</option>
<option value="else">Другое</option></select></td></tr>
<tr bordercolor=#FFFFFF><td width=200 height=21>
<p align=right>Объект операции:</td>
<td height=21><select name=<?= $object ?>>
<option value="flat" selected>Квартиру</option>
<option value="room">Комнату</option>
<option value="house">Коттедж (дом)</option>
<option value="dacha">Дачу</option>
<option value="region">Земельный участок</option>
<option value="office">Офис</option>
<option value="shop">Магазин (торговую площадь)</option>
<option value="production">Производство</option>
<option value="store">Склад</option>
<option value="garage">Гараж</option>
<option value="else">Прочее</option></select></td></tr>
<tr bordercolor=#FFFFFF>
<td width=200 height=21>
<p align=right>Город:</td>
<td height=21><select name=<?= $city ?>>
<option value="1">Агрыз</option>
<option value="2">Альметьевск</option>
<option value="3">Бугульма</option>
<option value="4">Елабуга</option>
<option value="5">Заинск</option>
<option value="6">Зеленодольск</option>
<option value="7" selected>Казань</option>
<option value="8">Лениногорск</option>
<option value="9">Менделеевск</option>
<option value="10">Наб. Челны</option>
<option value="11">Нижнекамск</option>
<option value="12">Нурлат</option>
<option value="13">Чистополь</option>
<option value="14">Другой</option></select></td></tr>
<tr bordercolor=#FFFFFF>
<td width=200 height=21 valign=top>
<p align=right>Объявление:</td>
<td  height=21><textarea name=message value=<?= $msg ?> rows=10 cols=37></textarea></td></tr><tr bordercolor=#FFFFFF>
<tr bordercolor=#FFFFFF>
<td height=21 colspan=2 align=center>
<input type=submit value=Отправить name=B1> <input type=reset value=Очистить name=B2></td></tr></table></form>
  </td>
  </tr>
 </table>




далее скрипт add.php


<?php

require_once("config.php");
$error "";
$action "";
if(!isset(
$action)) $action "add.php";
if(empty(
$contact))
{
        
$error $error."<LI>Вы не ввели ни одного контакта!\n";
        
$action "";
}
if(empty(
$msg))
{
        
$error $error."<LI>Вы не ввели объявление!\n";
        
$action "";
}

 
$query "INSERT INTO board VALUES (0,
                                     '
$contact', '$type', '$object', '$city', '$msg', NOW());";
?>

   
 
 автор: Holsten Bier   (03.08.2006 в 20:09)   письмо автору
 
   для: PHP-lamer   (03.08.2006 в 18:30)
 

А почему в форме написано

<select name=<?= $object?>>

?????

Если я правильно понял, то должно быть

<select name="object"
<option value="flat" selected>Квартиру</option> 
<option value="room">Комнату</option> 
<option value="house">Коттедж (дом)</option> 
<option value="dacha">Дачу</option> 
<option value="region">Земельный участок</option> 
<option value="office">Офис</option> 
<option value="shop">Магазин (торговую площадь)</option> 
<option value="production">Производство</option> 
<option value="store">Склад</option> 
<option value="garage">Гараж</option> 
<option value="else">Прочее</option></select>

И так во всех тегах <SELECT>.

Может я че-то не понял?

   
 
 автор: PHP-lamer   (03.08.2006 в 20:20)   письмо автору
 
   для: Holsten Bier   (03.08.2006 в 20:09)
 

Спасибо за помощь, я просто делаю доску по типу гостевой книги и "тупанул" в данном случае. Уж обессудьте ламера.

   
 
 автор: Holsten Bier   (03.08.2006 в 20:32)   письмо автору
 
   для: PHP-lamer   (03.08.2006 в 20:20)
 

Ниче, все так начинали :)

   
 
 автор: PHP-lamer   (03.08.2006 в 22:15)   письмо автору
 
   для: Holsten Bier   (03.08.2006 в 20:32)
 

Хоть я и надоел, рискну продолжить, я исправил предыдущие ошибки, но так и не вышло добавить в БД данные, добавляются только значения $id_msg и время, не понимаю в чем проблема.
Вот исправленная версия addform.php

<form action="add.php" method=post> 
<table width=600 border=1 bordercolor=#3c9bf7 cellspacing=0 style='border-collapse: collapse'> 
<tr bordercolor=#d5ebff><td bgcolor=#d5ebff colspan=2> 
<b><u>Добавить объявление</u></b></td></tr><tr bordercolor=#FFFFFF><td width=200 height=21> 
<p align=right>Контактная информация (телефон, e-mail):</td><td height=21> 
<input type=text name=contact value=<?= $contact ?>></td></tr> 
<tr bordercolor=#FFFFFF><td width=200 height=21><p align=right>Тип операции:</td><td height=21> 
<select name="type"> 
<option value="sell" selected>Продаю</option> 
<option value="buy">Куплю</option> 
<option value="arenda_sni">Сниму в аренду</option> 
<option value="arenda_sda">Сдаю в аренду</option> 
<option value="barter">Обмениваю</option> 
<option value="else">Другое</option></select></td></tr> 
<tr bordercolor=#FFFFFF><td width=200 height=21> 
<p align=right>Объект операции:</td> 
<td height=21><select name="object"> 
<option value="flat" selected>Квартиру</option> 
<option value="room">Комнату</option> 
<option value="house">Коттедж (дом)</option> 
<option value="dacha">Дачу</option> 
<option value="region">Земельный участок</option> 
<option value="office">Офис</option> 
<option value="shop">Магазин (торговую площадь)</option> 
<option value="production">Производство</option> 
<option value="store">Склад</option> 
<option value="garage">Гараж</option> 
<option value="else">Прочее</option></select></td></tr> 
<tr bordercolor=#FFFFFF> 
<td width=200 height=21> 
<p align=right>Город:</td> 
<td height=21><select name="city> 
<option value="1">Агрыз</option> 
<option value="2">Альметьевск</option> 
<option value="3">Бугульма</option> 
<option value="4">Елабуга</option> 
<option value="5">Заинск</option> 
<option value="6">Зеленодольск</option> 
<option value="7" selected>Казань</option> 
<option value="8">Лениногорск</option> 
<option value="9">Менделеевск</option> 
<option value="10">Наб. Челны</option> 
<option value="11">Нижнекамск</option> 
<option value="12">Нурлат</option> 
<option value="13">Чистополь</option> 
<option value="14">Другой</option></select></td></tr> 
<tr bordercolor=#FFFFFF> 
<td width=200 height=21 valign=top> 
<p align=right>Объявление:</td> 
<td  height=21><textarea name=message value=<?= $msg ?> rows=10 cols=37></textarea></td></tr><tr bordercolor=#FFFFFF> 
<tr bordercolor=#FFFFFF> 
<td height=21 colspan=2 align=center> 
<input type=submit value=Отправить name=B1> <input type=reset value=Очистить name=B2></td></tr></table></form> 
  </td> 
  </tr> 
 </table>


файл add.php тот же

   
 
 автор: PHP-lamer   (03.08.2006 в 23:44)   письмо автору
 
   для: PHP-lamer   (03.08.2006 в 22:15)
 

Ошибку нашел, простите за беспокойство.
Заключалась она в том что в файле add.php переменные записаны неправильно, т. е. надо было добавить строчку

$contact = $_POST['contact'];
$type = $_POST['type'];
$object = $_POST['object'];
$city = $_POST['city'];
$msg = $_POST['msg'];


вот исправленный add.php


<?php

require_once("config.php");
$error "";
$action "";
if(!isset(
$action)) $action "add.php";
$contact $_POST['contact'];
$type $_POST['type'];
$object $_POST['object'];
$city $_POST['city'];
$msg $_POST['msg'];


if(empty(
$contact))
{
        
$error $error."<LI>&#194;&#251; &#237;&#229; &#226;&#226;&#229;&#235;&#232; &#237;&#232; &#238;&#228;&#237;&#238;&#227;&#238; &#234;&#238;&#237;&#242;&#224;&#234;&#242;&#224;!\n";
        
$action "";
}
if(empty(
$msg))
{
        
$error $error."<LI>&#194;&#251; &#237;&#229; &#226;&#226;&#229;&#235;&#232; &#238;&#225;&#250;&#255;&#226;&#235;&#229;&#237;&#232;&#229;!\n";
        
$action "";
}

 
$query "INSERT INTO board VALUES (0,
                                     '
$contact',
                                     '
$type',
                                     '
$object',
                                     '
$city',
                                     '
$msg',
                                      NOW());"
;

   
 
 автор: PHP-lamer   (05.08.2006 в 18:05)   письмо автору
 
   для: PHP-lamer   (03.08.2006 в 23:44)
 

Продолжая разработку наткнулся на еще одну проблему, дело в том что мне нужно сделать фильтр по выбранному значению в меню поиска, в форме.
Я пробовал менять в файле index.php sql запрос на такой

$query = "SELECT * FROM board
            WHERE type=$type
            ORDER BY puttime LIMIT $start, $number";

но он не помогает
вот скрипт index.php

<html>
<head>
<title>Доска объявлений</title>
</head>
<link rel="stylesheet" type="text/css" href="../sty.css">
<body>
<form action=index.php method=post>
<table class='top' align=center>
<tr>
<td align=right><b>&#206;&#239;&#229;&#240;&#224;&#246;&#232;&#255;:</b>
</td>
<td>
<select name=type class='filter'><option value=7 selected>Любое</option>
<option value=1>значение 1</option>
<option value=2>значение 2</option>
<option value=3>значение 3</option>
<option value=4>значение 4</option>
<option value=5>значение 5</option>
<option value=6>значение 6</option></select>
</td>
</tr>
<tr>
<td align=right><b>&#206;&#225;&#250;&#229;&#234;&#242;:</b>
</td>
<td>
<select name=object class='filter'><option value=12 selected>Любое</option>
<option value=1>значение 1</option>
<option value=2>значение 2</option>
<option value=3>значение 3</option>
<option value=4>значение 4</option>
<option value=5>значение 5</option>
<option value=6>значение 6</option>
<option value=7>значение 7</option>
<option value=8>значение 8</option>
<option value=9>значение 9</option>
<option value=10>значение 10</option>
<option value=11>значение 11</option></select>
</td>
</tr>
<tr>
<td colspan=2 align=center>
<input type=submit value='&#207;&#238;&#232;&#241;&#234;' class='input'>
</td>
</tr>
</table>
</form>

<center><a href=addform.php>Добавить объявление</a></center>
<?php

require_once("config.php");
  if(isset(
$_GET['start'])) $start $_GET['start'];
  else 
$start "";
  
// &#209;&#242;&#224;&#240;&#242;&#238;&#226;&#224;&#255; &#242;&#238;&#247;&#234;&#224;
  
if (empty($start)) $start 0;
  
// &#209;&#242;&#224;&#240;&#242;&#238;&#226;&#224;&#255; &#242;&#238;&#247;&#234;&#224; &#237;&#229; &#236;&#238;&#230;&#229;&#242; &#225;&#251;&#242;&#252; &#236;&#229;&#237;&#252;&#248;&#229; &#237;&#243;&#235;&#255;
  
if ($start 0$start 0;
  
$query "SELECT count(*) FROM board";
  
$tot mysql_query($query);
  
$query "SELECT * FROM board
            ORDER BY puttime LIMIT 
$start$number";
  
$brd mysql_query($query);

  while(
$board mysql_fetch_array($brd))
  {
    
// &#200;&#231;&#226;&#235;&#229;&#234;&#224;&#229;&#236; &#239;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#251;&#229; &#232;&#231; &#225;&#224;&#231;&#251; &#228;&#224;&#237;&#237;&#251;&#245;
    
$contact trim($board['contact']);
    
$type trim($board['type']);
    
$city trim($board['city']);
    
$object trim($board['object']);
    
$city trim($board['city']);
    
$msg trim($board['msg']);

    switch(
$type)
    {
            case 
1: if($board['type'] = "1"$type "&#202;&#243;&#239;&#235;&#254;";
            break;
            case 
2: if($board['type'] = "2"$type "&#207;&#240;&#238;&#228;&#224;&#236;";
            break;
            case 
3: if($board['type'] = "3"$type "&#209;&#237;&#232;&#236;&#243; &#226; &#224;&#240;&#229;&#237;&#228;&#243;";
            break;
            case 
4: if($board['type'] = "4"$type "&#209;&#228;&#224;&#254; &#226; &#224;&#240;&#229;&#237;&#228;&#243;";
            break;
            case 
5: if($board['type'] = "5"$type "&#207;&#238;&#236;&#229;&#237;&#255;&#254;";
            break;
            case 
6: if($board['type'] = "6"$type "";
    }
        switch(
$object)
    {
            case 
1: if($board['object'] = "1"$object "&#234;&#226;&#224;&#240;&#242;&#232;&#240;&#243;";
            break;
            case 
2: if($board['object'] = "2"$object "&#202;&#238;&#236;&#237;&#224;&#242;&#243;";
            break;
            case 
3: if($board['object'] = "3"$object "&#196;&#238;&#236;";
            break;
            case 
4: if($board['object'] = "4"$object "&#196;&#224;&#247;&#243;";
            break;
            case 
5: if($board['object'] = "5"$object "&#199;&#229;&#236;&#229;&#235;&#252;&#237;&#251;&#233; &#243;&#247;&#224;&#241;&#242;&#238;&#234;";
            break;
            case 
6: if($board['object'] = "6"$object "&#206;&#244;&#232;&#241;";
            break;
            case 
7: if($board['object'] = "7"$object "&#204;&#224;&#227;&#224;&#231;&#232;&#237;";
            break;
            case 
8: if($board['object'] = "8"$object "&#207;&#240;&#238;&#232;&#231;&#226;&#238;&#228;&#241;&#242;&#226;&#238;";
            break;
            case 
9: if($board['object'] = "9"$object "&#209;&#234;&#235;&#224;&#228;";
            break;
            case 
10: if($board['object'] = "10"$object "&#195;&#224;&#240;&#224;&#230;";
            break;
            case 
11: if($board['object'] = "11"$object "";
    }

?>



<center>
<table width='80%' class='menu_up'>
    <tr class='menu_up'>
      <td width="25%"><?php echo $contact?></td>
      <td width="25%"><b>&#206;&#239;&#232;&#241;&#224;&#237;&#232;&#229;:</b> <?php echo $type?> <?php echo $object?></td>
      <td width="25%"><b>&#195;&#238;&#240;&#238;&#228;:</b> <?php echo $city ?></td>
      <td width="25%" align='right'><b>&#196;&#224;&#242;&#224;:</b> <? print $board['puttime']; ?></td>
    </tr>
    <tr class='menu_down'>
        <td colspan=4><? echo $msg?><br>
        </td>
    </tr>
</table><br>
</center>
<?php
}
?>
</body>
</html>


как же мне сделать фильтр по выбранной форме, пожалйста помогите.

   
 
 автор: cheops   (05.08.2006 в 22:44)   письмо автору
 
   для: PHP-lamer   (05.08.2006 в 18:05)
 

Не очень понятно в чём вопрос?

   
 
 автор: PHP-lamer   (05.08.2006 в 23:10)   письмо автору
 
   для: cheops   (05.08.2006 в 22:44)
 

Нужно сделать поисковый фильтр с помощью данной формы

Т.е. чтобы при нажатии "поиск" выводились только записи из БД, соответствующие выбраным значениям, как бы это сделать на практике, можно ли прямо в index.php или надо еще файл filter.php?

   
 
 автор: PHP-lamer   (08.08.2006 в 02:19)   письмо автору
 
   для: cheops   (05.08.2006 в 22:44)
 

Скрипт дописал, всем спасибо за помощь.
Уважаемый cheops, возможно ли данный скрипт поместить у Вас на сайте в разделе downloads, очень бы хотел сие осуществить, т. к. читал Ваши книги, уважаю авторов да и сайт Ваш мне помогал не раз, так что если Вам нужен в разделе такой скрипт, пожалуйста отпишите, следующим сообщением прикреплю архив.
Скрипт представляет собой несложную доску объявлений с поиском в виде фильтра по выбранным значениям(например зн.1="Куплю" зн.2="квартиру") и простую администраторскую панель с возможностью редактирования, скрытия/отображения и удаления записей. Прилагается небольшой css-файл(делал для себя, но легко можно отредактировать).
Жду Вашего ответа, с уважением

   
 
 автор: cheops   (08.08.2006 в 11:29)   письмо автору
 
   для: PHP-lamer   (08.08.2006 в 02:19)
 

С удовольствием разместим этот скрипт в разделе downloads, у нас нет ещё доски объявлений.

PS Только сообщите своё ФИО.

   
 
 автор: PHP-lamer   (08.08.2006 в 14:32)   письмо автору
 
   для: cheops   (08.08.2006 в 11:29)
 

Прикрепил скрипт в zip архиве, если Вы считаете нужным вносить какие-либо изменения я буду только рад, зовут меня Денис Олегович Шашкин.

   
 
 автор: elenaki   (08.08.2006 в 16:51)   письмо автору
 
   для: PHP-lamer   (08.08.2006 в 14:32)
 

в файле del.php в админ'e не исправили строку:
else puterror("Ошибка при обращении к гостевой книге");

   
 
 автор: PHP-lamer   (08.08.2006 в 17:25)   письмо автору
23.8 Кб
 
   для: elenaki   (08.08.2006 в 16:51)
 

Да, спасибо, действительно не исправил. С гостевой данный скрипт копировал.
Прилагается исправленный архив

   
Rambler's Top100
вверх

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