Доска объявлений - Дополнительные формы

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

и так сначала:
Сделал информационную систему : Доска объявлений
Добавил в ее дополнительные свойства

20  Автор autor    
21  E-mail email    
41  Город cityb    
42  Фотография fotob    
43  Сайт url    
44  ICQ icq    
45  Телефон phone    
46  Адрес adres    
47  Дата date    

Потом создал новый макет в разделе : Типовые динамические страницы: Назвал Доска объявлений

потом добавил в ее индификаторы

145 Идентификатор дополнительного свойства "Автор" autor_property_id    
152 Идентификатор дополнительного свойства "Город" cityb_property_id    
146 Идентификатор дополнительного свойства "E-mail" email_property_id    
153 Идентификатор дополнительного свойства "Фотография" fotob_property_id    
154 Идентификатор дополнительного свойства "Адрес" adres_property_id    
155 Идентификатор дополнительного свойства "Телефон" phone_property_id    
156 Идентификатор дополнительного свойства "ICQ" icq_property_id    
151 Идентификатор дополнительного свойства "Сайт" url_property_id    


Затем изменил шаблон :

Добавил в него :

   <tr>
   <td width="142">Имя:</td>
   <td width="322"><input type="text" name="fio" size="50" value="<?=htmlspecialchars(to_str($_POST["fio"]))?>"></td>
   </tr>
   <tr>
   <td>E-mail:</td>
   <td><input type="text" name="email" size="50" value="<?=htmlspecialchars(to_str($_POST["email"]))?>"></td>
   </tr>
   <tr>
      <td>Город:</td>
     <td><input type="Select" name="cityb" size="50" value="<?=htmlspecialchars(to_str($_POST["cityb"]))?>"></td>
     </tr>
   <tr>
      <td>Адрес:</td>
     <td><input type="text" name="adres" size="50" value="<?=htmlspecialchars(to_str($_POST["adres"]))?>"></td>
     </tr>
   <tr>
      <td>Телефон:</td>
     <td><input type="text" name="phone" size="50" value="<?=htmlspecialchars(to_str($_POST["phone"]))?>"></td>
     </tr>
   <tr>
      <td>Фотография:</td>
     <td><input type="text" name="fotob" size="50" value="<?=htmlspecialchars(to_str($_POST["fotob"]))?>"></td>
     </tr>
       <tr>
   <td>ICQ:</td>
   <td><input type="text" name="icq" size="50" value="<?=htmlspecialchars(to_str($_POST["icq"]))?>"></td>
   </tr>
           <tr>
   <td>Адрес сайта:</td>
   <td><input type="text" name="url" size="50" value="<?=htmlspecialchars(to_str($_POST["url"]))?>"></td>
   </tr>
    
   <tr>
   <td>Тема объявления:</td>
   <td><input type="text" name="subject" size="50" value="<?=htmlspecialchars(to_str($_POST["subject"]))?>"></td>
   </tr>
   <tr>
   <td>Объявление:</td>
   <td><textarea type="text" name="text_item" cols="50" rows="10"><?=htmlspecialchars(to_str($_POST["text_item"]))?></textarea></td>
   </tr>

и вроде все ничаво ::: Но наверное ночь на меня так действует,

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

    <option>Ноябрьск</option>
    <option>Муравленко</option>
    <option>Лабытнанги</option>
    <option>Салехард</option>

Не могу понять, прошу Вас помогите. крышняк уже едет) не могу разобраться))


  
#
Re: Доска объявлений - Дополнительные формы
по ходу дела с этим никто не сталкивался, а жаль.. хотелось сделать человеческую доску объявлений (
#
Вот что у меня получилось, токи не хватает возможности загрузить фото, и выбрать город
<?php

$InformationSystem_id = to_int($GLOBALS['LA']['InformationSystemID']);

if (strtolower(end($GLOBALS['URL_ARRAY'])) != 'add'
{
   /* Добавление комментария */
   if(isset($_POST['add_comment']))
   {
      $param['information_items_id'] = to_int($GLOBALS['InformationResult']['item_id']);

      /* XSL шаблон для отправки уведомления администратору о добавлении комментария */
      $param['admin_email_xsl'] = to_str($GLOBALS['LA']['xsl_admin_email']);

      $xsl_add_comment = to_str($GLOBALS['LA']['xsl_add_comment']);

      $result_add_comment = $GLOBALS['LA_InformationSystem']->ShowAddComment('УведомлениеДобавленияОтвета', $param);
   }

   /* Отображаем элемент если не было добавления комментария, или результат добавления комментария отрицательный */
   if (!isset($_POST['add_comment']) || isset($result_add_comment) && !$result_add_comment)
   {
      
      /* XSL шаблон для отображения списка элементов информационной системы */
      $xsl_list = to_str($GLOBALS['LA']['xsl_information_system_list']);

      /* XSL шаблон для отображения элемента информационной системы */
      $xsl_item = to_str($GLOBALS['LA']['xsl_information_item']);

      $InformationResult = $GLOBALS['InformationResult'];

      /* Массив внешних параметров, передаваемых в XML */
      $external_propertys = array();
      $external_propertys['ОтображатьСсылкуНаАрхив'] = 0;
      $external_propertys['ОтображатьСсылкиНаСледующиеСтраницы'] = 1;

      /* Массив дополнительных параметров */
      $property = array();

      /* Число элементов на страницу */
      if (isset($InformationResult['items_on_page']))
      {
         if($InformationResult['items_on_page'] !== true)
         {
            $InformationResult['items_on_page'] = to_int($InformationResult['items_on_page']);
         }
      }
      else
      {
         $InformationResult['items_on_page'] = 10;
      }

      /* Номер, с которого начинается показ */
      if (isset($InformationResult['items_begin']))
      {
         $InformationResult['items_begin'] = to_int($InformationResult['items_begin']);
      }
      else
      {
         $InformationResult['items_begin'] = 0;
      }

      /* Метод определения идентификатора информационной группы и идентификатора информационного элемента по значению URI */
      $result = $GLOBALS['LA_InformationSystem']->GetInformationFromPath($InformationSystem_id);

      if($result != false)
      {
         /* Вывод списка */
         if($result['item'] == false)
         {
            /* Отображаем информационную систему */
            $GLOBALS['LA_InformationSystem']->ShowInformationSystem($InformationSystem_id, $result['group'], $xsl_list, $InformationResult['items_on_page'], $InformationResult['items_begin'], $external_propertys, $property);
         }
         else
         {
            /* Определяем идентификатор информационного элемента */
            $item_id = $GLOBALS['LA_InformationSystem']->GetIdInformationItem($result['item'], $result['group']);

            /* Выводим элемент информационной системы */
            $GLOBALS['LA_InformationSystem']->ShowInformationSystemItem($item_id, $xsl_item, $external_propertys);
         }
      }
   }
}
else
{
   # Иначе выводим форму добавления элемента
   $Captcha = new Captcha();
   $forms_captcha_key = $Captcha->GetCaptchaID();

   if (isset($_POST['captcha_key']) && isset($_POST['captcha_keystring']))
   {
      $cpt = $Captcha->ValidCaptcha($_POST['captcha_key'], $_POST['captcha_keystring']);
   }
   else
   {
      $cpt = false;
   }

   /* Обработка вставки информационного элемента */
   if ($cpt && isset($_POST['submit_question']))
   {
      ?>
      <h1>Добавление объявления</h1>
      <?

      if($GLOBALS['LA_InformationSystem']->confirm_information_item(date('U', $_SERVER['REMOTE_ADDR'])==1)
      {
         $date= date('Y-m-d H:i:s';

         /* Определяем группу (если задана)
         Принимает в качестве параметра ID информационного блока*/
         $result = $GLOBALS['LA_InformationSystem']->GetInformationFromPath($InformationSystem_id);

         $group_id = to_int($result['group']);

         # Статус вновь добавленного элемента
         # 0 - не активен (необходимо вручную проверить и включить)
         # 1 - активен, виден сразу после публикации
         $item_status = 0;

         # Вставляем запись
         $question_id = $GLOBALS['LA_InformationSystem']->InsertInformationItems(0, 0, $InformationSystem_id, $group_id, $date, to_str($_POST['subject']),'', $item_status, to_str($_POST['text_item']), '', 0, to_str($_SERVER['REMOTE_ADDR']));

         $row = $GLOBALS['LA_InformationSystem']->GetInformationSystemItems($question_id);

         # Вставляем в дополнительные свойства для доски объявлений
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['autor_property_id']), $question_id, to_str($_POST['fio']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['email_property_id']), $question_id, to_str($_POST['email']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['cityb']), $question_id, to_str($_POST['cityb']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['adres']), $question_id, to_str($_POST['adres']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['phone']), $question_id, to_str($_POST['phone']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['fotob']), $question_id, to_str($_POST['fotob']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['icq']), $question_id, to_str($_POST['icq']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['url']), $question_id, to_str($_POST['url']));
         ?>
         <p>Благодарим Вас, <?=htmlspecialchars(to_str($_POST['fio']))?>!
         <br>Ваша запись в доску объявлений была принята. После проверки Администратором она станет доступной!
         </p>
         <?

         # Отправка письма администратору
         $message = "Доброе время суток, уважаемый Администратор!\n\nНа сайт, поддерживаемый системой управления сайтом HostCMS, была добавлена запись:   \n";
         $message .= "Автор: ".to_str($_POST['fio'])."\n";
         $message .= "E-mail: ".to_str($_POST['email'])."\n";
         $message .= "Тема: ".to_str($_POST['subject'])."\n";
         $message .=   "Информационная система: ".$row['information_blocks_name']."\n";
         $message .= "Информационный элемент: ".$row['information_items_name']."\n";
         $message .=   "Редактировать - http://".to_str($_SERVER['HTTP_HOST'])."/admin/InformationSystems/InformationSystems.php?information_systems_id={$InformationSystem_id}&information_groups_parent_id={$group_id}&edit_information_items_id={$question_id}\n";
         $DateClass = new DateClass();         
         $message .= "Дата: ".$DateClass->datetime_format($date)."\n";
         $message .= "IP-адрес: ".to_str($_SERVER['REMOTE_ADDR'])."\n";
         $message .= "Вопрос: ".to_str($_POST['text_item']);
         
         mail(EMAIL_TO, 'Добавление вопроса', $message, "From: ".EMAIL_TO."\r\nContent-Type: text/plain; charset=Windows-1251\n";
      }
      else # нельзя добавлить объявление - прошло мало времени
      {
         ?>
         <p>Ошибка!
         Запись не может быть добавлена, т.к. прошло мало времени с момента Вашего последнего добавления!
         </p>
         <?
      }
   }

   if(!$cpt || !isset($_POST['submit_question']))
   {
   ?>
   <h1>Добавление объявления</h1>
   <?
   # Если неправильная CAPTCHA и была заполнена форма
   if (!$cpt && isset($_POST['submit_question']))
   {
      ?>
      <p style="color:#ff0000;"><b>Вы неверно ввели число подтверждения отправки формы!</b></p>
      <?
   }
   ?>
   <form action='./' method="POST">
   <table border="0" cellspacing="2" cellpadding="0">
   <tr>
   <td width="142">Имя:</td>
   <td width="322"><input type="text" name="fio" size="50" value="<?=htmlspecialchars(to_str($_POST["fio"]))?>"></td>
   </tr>
   <tr>
   <td>E-mail:</td>
   <td><input type="text" name="email" size="50" value="<?=htmlspecialchars(to_str($_POST["email"]))?>"></td>
   </tr>
   <tr>
      <td>Город:</td>
     <td><input type="text" name="cityb" size="50" value="<?=htmlspecialchars(to_str($_POST["cityb"]))?>"></td>
     </tr>
   <tr>
      <td>Адрес:</td>
     <td><input type="text" name="adres" size="50" value="<?=htmlspecialchars(to_str($_POST["adres"]))?>"></td>
     </tr>
   <tr>
      <td>Телефон:</td>
     <td><input type="text" name="phone" size="50" value="<?=htmlspecialchars(to_str($_POST["phone"]))?>"></td>
     </tr>
   <tr>
      <td>Фотография:</td>
     <td><input type="text" name="fotob" size="50" value="<?=htmlspecialchars(to_str($_POST["fotob"]))?>"></td>
     </tr>
       <tr>
   <td>ICQ:</td>
   <td><input type="text" name="icq" size="50" value="<?=htmlspecialchars(to_str($_POST["icq"]))?>"></td>
   </tr>
           <tr>
   <td>Адрес сайта:</td>
   <td><input type="text" name="url" size="50" value="<?=htmlspecialchars(to_str($_POST["url"]))?>"></td>
   </tr>
    
   <tr>
   <td>Тема объявления:</td>
   <td><input type="text" name="subject" size="50" value="<?=htmlspecialchars(to_str($_POST["subject"]))?>"></td>
   </tr>
   <tr>
   <td>Объявление:</td>
   <td><textarea type="text" name="text_item" cols="50" rows="10"><?=htmlspecialchars(to_str($_POST["text_item"]))?></textarea></td>
   </tr>
   <tr>
    <td colspan="2" align="center">Для отправки формы введите число, изображенное на картинке</td>
   </tr>
   <tr>
   <td>
      <img style="border: 1px solid #000000" src="/captcha.php?get_captcha=<?=$forms_captcha_key?>" title="Введите число изображенное на картинке"/>   </td>
   <td>
      <input type="hidden" name="captcha_key" value="<?=$forms_captcha_key?>"/>
      <input type="text" name="captcha_keystring" style="width:100%" />   </td>
    </tr>   
   <tr>
   <td></td>
   <td align="center">
   <input type="submit" name="submit_question" value="Добавить запись">   </td>
   </tr>    
   </table>
   </form>
   <?
   }
}

?>
#
Re: Доска объявлений - Дополнительные формы
По поводу выбора города. Почему бы не сделать так:
<tr>
      <td>Город:</td>
     <td>
<select name="cityb">
    <option value="Ноябрьск">Ноябрьск</option>
    <option value="Муравленко">Муравленко</option>
    <option value="Лабытнанги">Лабытнанги</option>
    <option value="Салехард">Салехард</option>
</select>
</td>
</tr>

А по поводу загрузки файла: в принципе Вы можете добавить поле ввода типа файл <input type="file"...> Но Вам нужно будет самостоятельно реализовать загрузку изображения на сервер .
#
Re: Доска объявлений - Дополнительные формы
да, правильно спасибо.. странно токи почему то в админку не передается информация для активации с дополнительными полями,

Хотя я в адмнинке добавил  поля

а в дизайне вот

         # Вставляем в дополнительные свойства для доски объявлений
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['autor_property_id']), $question_id, to_str($_POST['fio']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['email_property_id']), $question_id, to_str($_POST['email']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['cityb']), $question_id, to_str($_POST['cityb']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['adres']), $question_id, to_str($_POST['adres']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['phone']), $question_id, to_str($_POST['phone']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['fotob']), $question_id, to_str($_POST['fotob']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['icq']), $question_id, to_str($_POST['icq']));
         $GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['url']), $question_id, to_str($_POST['url']));
         ?>
         <p>

сча сделал через внешний скрипт прикрутил форму, но блин, это не выход.. как думаете, что посоветуете?)
#
Re: Доска объявлений - Дополнительные формы
Поясните, пожалуйста, что означает "информация для активации с дополнительными полями"? В инфоэлемент не попадают значения, введенные в форме?
#
Re: Доска объявлений - Дополнительные формы
А сами разработчики не могут сделать нормальную Доску Объявлений? Хочется чтобы было как на http://irr.ru
#
Re: Доска объявлений - Дополнительные формы
да... инфоэлемент н попадают, я открываюв админке на подтверждение...

Т.е смотрите заполнил форму, обычно комментарий ждет отображения , а тут нету, я заполнил все поля, нажал добавить.. появилось.. спасиба, ждет подтверждения, захожу в админку а там пусто.. ((
#
Re: Доска объявлений - Дополнительные формы
Дополнительные свойства не заполняются вот почему:  Вы писали, что ввели параметры тип. дин. страницы, например, для сайта имя переменной url_property_id, а на самом деле вставку введенного значения осуществляете так:
$GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['url']), $question_id, to_str($_POST['url']));
Т.е. значение $GLOBALS['LA']['url'] не определено. Нужно так:
$GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['url_property_id']), $question_id, to_str($_POST['url']));
Для остальных доп. свойств аналогично.
Авторизация