Страница 1 из 1

Обработчик данных перед отправкой серверу (PHP)

СообщениеДобавлено: Вс янв 21, 2007 22:48
Darken
В общем есть форма поиска:
Код: Выделить всё
{* simple search form *}

<table cellspacing=0 cellpadding=1 border=0 width="170">

   <form action="index.php" method=get>


   {section name=i loop=$searchstrings}
      <input type=hidden name='search_string_{$smarty.section.i.index}'
         value="{$searchstrings[i]}">      
   {/section}


   <tr>
      <td>
         <font class=light>{$smarty.const.STRING_SEARCH}</font>
      </td>
      <td>
         <input type="text" name="searchstring" size=15
            value="{$searchstring|default:""}">
      </td>
      <td>
         <nobr>&nbsp;<input type="image" border=0 src="images/search.gif">&nbsp;</nobr>
      </td>
   </tr>

      
      {if $old_search_query ne ""}
         <input type=hidden name="oldproducts" value="{$old_search_query}">
      {/if}
      

   <tr>
      <td colspan=3>
         <input type="checkbox" name="inside"
            {if $search_in_results}checked{/if}>
               <font class=light>
                  {$smarty.const.STRING_SEARCH_IN_RESULTS}
               </font>
      </td>
   </tr>

   </form>

</table>



Надо дописать фунцию чтобы она выкидывала из поисковых запросов знаки "-", т.е. если пользователь вводит 51306-S04-N01, поисковик искал бы 51306S04N01

СообщениеДобавлено: Пн янв 22, 2007 13:46
Darken
хм... что никто не знает как? просмотров смотрю много, а советов ни одного.

СообщениеДобавлено: Пн янв 22, 2007 15:16
Muerto
Извини, пропусти эту тему как то.
Код: Выделить всё
function replace() {
val=document.getElementById('тут ИД поля').value;
        if (val != undefined and val != "") {
val=val.split ("-");
val=val.join;
document.getElementById('тут ИД поля').value  = val;
        }
}

Сунь в событие онСабмит в форме. Только инпуту ИД надо дать, чтобы скрипт мог её найти и заменить значение. Скрипт не проверял, но, вроде, должен работать.

СообщениеДобавлено: Пн янв 22, 2007 17:43
Darken
в общем чувствую себя вообще дауном, уже голова плавится, имеем

форма поиска
Код: Выделить всё
{* simple search form *}
<table cellspacing=0 cellpadding=1 border=0 width="170">
<form action="index.php" method=get onsubmit="replace">


   {section name=i loop=$searchstrings}
      <input type=hidden name='search_string_{$smarty.section.i.index}'
         value="{$searchstrings[i]}">      
   {/section}


   <tr>
      <td>
         <font class=light>{$smarty.const.STRING_SEARCH}</font>
      </td>
      <td>
         <input type="text" name="searchstring" size=15   value="{$searchstring|default:""}" id="oem">
      </td>
      <td>
         <nobr>&nbsp;<input type="image" border=0 src="images/search.gif">&nbsp;</nobr>
      </td>
   </tr>

      
      {if $old_search_query ne ""}
         <input type=hidden name="oldproducts" value="{$old_search_query}">
      {/if}
      

   <tr>
      <td colspan=3>
         <input type="checkbox" name="inside"
            {if $search_in_results}checked{/if}>
               <font class=light>
                  {$smarty.const.STRING_SEARCH_IN_RESULTS}
               </font>
      </td>
   </tr>

   </form>

</table>


функции поиска

Код: Выделить всё
<?php
   

   function schIsAllowProductsSearch( $categoryID )
   {
      $q = db_query("select allow_products_search from ".CATEGORIES_TABLE.
         " where categoryID=$categoryID");
      if ( $row = db_fetch_row($q) )
         return $row["allow_products_search"];
      return false;      
   }


   function schUnSetOptionsToSearch( $categoryID )
   {
      $q = db_query( "select optionID from ".CATEGORY_PRODUCT_OPTIONS_TABLE.
         " where categoryID=$categoryID " );
      $data = array();
      while( $row = db_fetch_row($q) )
         $data[] = $row["optionID"];

      foreach( $data as $val )
      {
         db_query( " delete from ".CATEGORY_PRODUCT_OPTION_VARIANTS.
            " where categoryID=$categoryID AND optionID=$val" );

         db_query( " delete from ".CATEGORY_PRODUCT_OPTIONS_TABLE.
            " where categoryID=$categoryID AND optionID=$val" );
      }
   }

   function schSetOptionToSearch( $categoryID, $optionID, $set_arbitrarily )
   {
      db_query( "insert into ".CATEGORY_PRODUCT_OPTIONS_TABLE.
            " ( categoryID, optionID, set_arbitrarily ) ".
            " values( $categoryID, $optionID, $set_arbitrarily ) " );
   }

   function schOptionIsSetToSearch( $categoryID, $optionID )
   {
      $res = array();
      $q = db_query( "select set_arbitrarily from ".CATEGORY_PRODUCT_OPTIONS_TABLE.
            " where categoryID=$categoryID AND optionID=$optionID" );
      if ( $row = db_fetch_row($q) )
      {
         $res["isSet"] = 1;
         $res["set_arbitrarily"] = $row["set_arbitrarily"];
      }
      else
         $res["isSet"] = 0;
      return $res;
   }

   function schUnSetVariantsToSearch( $categoryID, $optionID )
   {
      db_query( " delete from ".CATEGORY_PRODUCT_OPTION_VARIANTS.
             " where categoryID=$categoryID AND optionID=$optionID" );
   }


   function schSetVariantToSearch( $categoryID, $optionID, $variantID )
   {
      db_query( "insert into ".CATEGORY_PRODUCT_OPTION_VARIANTS.
            " ( optionID, categoryID, variantID )  ".
            " values( $optionID, $categoryID, $variantID ) " );
   }   


   function schVariantIsSetToSearch( $categoryID, $optionID, $variantID )
   {
      $q = db_query( "select count(*) from ".
            CATEGORY_PRODUCT_OPTION_VARIANTS.
            " where categoryID=$categoryID AND optionID=$optionID AND ".
            "  variantID=$variantID " );
      $row = db_fetch_row($q);
      return ( $row[0] != 0 );
      
   }

?>


извиняюсь что длинно, можно поподробнее где и что подправить

СообщениеДобавлено: Пн янв 22, 2007 18:57
Muerto
Скрипт в голову страницы с поиском. Если поиск на всех, то во все.
Код: Выделить всё
<script language="javascript" type="text/javascript">
function replacer() {
val=document.getElementById('oem').value;
valArray=val.split("-");
val=valArray.join("");
document.getElementById('oem').value=val;
alert(val);
}
</script>

На кнопку-картинку вешаем событие:
Код: Выделить всё
<input type="image" border=0 src="images/search.gif" onClick="replacer()">

СообщениеДобавлено: Пн янв 22, 2007 20:59
Darken
Спасибо интересная штука получилась -09-
Для примера попробуйте поискать номера
5-1-306-S04-N01
51306-S04-N01
51306S04-N01
51306----

при нажатии на кнопку "Поиск" выдает ненужное сообщение, как его убрать?

если вместо кнопки нажать "Enter" вообще ничего не находит, как это убрать?

СообщениеДобавлено: Вт янв 23, 2007 8:58
Darken
Muerto писал(а):На кнопку-картинку вешаем событие:
Код: Выделить всё
<input type="image" border=0 src="images/search.gif" onClick="replacer()">


повешал не на кнопку, а на онСабмит формы, работает номально, и при нажатии "Enter" большое спасибо за помошь.

Но как убрать это выскакивающее окошко я никак не пойму, может для этого какой-то определенный параметр нужен?
Ну не рублю я в JS

СообщениеДобавлено: Вт янв 23, 2007 10:55
Muerto
alert(val); убери в скрипте. Я всегда забываю проверку снести.

СообщениеДобавлено: Вт янв 23, 2007 12:14
Darken
спасибо, все замечательно работает -18-

СообщениеДобавлено: Сб фев 03, 2007 15:50
kost
Лучше PHP вырезать "-". Проще и надежнее.

СообщениеДобавлено: Сб фев 03, 2007 18:41
Muerto
2kost: Надёжней? Проще? Да чем же, господи! Особено порадывало - "надёжней", типа ЖабаСкрипт через раз вырезает. Людей, которые отключают ЖабаСкрипт я во внимание не беру поскольку понять их не могу в принципе и, честно сказать, ни одного ещё е видел. И, наконец, написать решение на РНР и ПОСЛЕ этого сказать - было бы гораздо правильней. И потом, тема была "Обработчик данных перед отправкой серверу (PHP)".
P.-S. Хайда и иже с тобой! Когда будет оапределён смайлик определяющий неадекватное состояние? Уже полгода прошу!

СообщениеДобавлено: Вс фев 04, 2007 22:03
kost
Код: Выделить всё
$text = str_replace("-", "", $text);

СообщениеДобавлено: Вс фев 04, 2007 22:52
Padonak
чо тут за хрень не понимаю апчом базар -08-