Jump to content

AlexV

Members
  • Posts

    21
  • Joined

  • Last visited

Posts posted by AlexV

  1. Thanks for the reply Ryan!

    In the second case, I used a «text» field, so that did not work. I changed it on the field «float» and added your code, thank you, it works!

    I will describe in more detail the first question.

    I have two checkboxes and code which I specified above.

    Now when I choose one checkbox search works well. When I choose two checkboxes, search shows that one is chosen only. How it is possible to change a code that search was on two values (which I select checkboxes)?

  2. There are still questions of search. While I can't answer them itself.

    First question. Now I have two checkbox, it work by a principle "or", in what case they will work as "and". Now the code in the search template looks like this:

    $name = $sanitizer->pageName($input->get->type_of_oper);
    $man = $pages->get("parent=/business_type/, name=$name");
    if($man->id) {
           $input->whitelist('type_of_oper', $man->name);
           $selector .= "type_of_operation=$man, ";
    }

    Second question. In the search form has two text fields "from" and "before". How to realize search for them?

    Сode search form:

    <label for="square">Square</label>
    <input type="text" name="squareMin" value="<?php if($input->whitelist->squareMin) echo htmlentities($input->whitelist->squareMin, ENT_QUOTES, "UTF-8"); ?>" />
    <input type="text" name="squareMax" value="<?php if($input->whitelist->squareMax) echo htmlentities($input->whitelist->squareMax, ENT_QUOTES, "UTF-8"); ?>" />

    Code that I tried to use in search template, but it does not work:

    $valueMin = $sanitizer->selectorValue($input->get->squareMin);
    $valueMax = $sanitizer->selectorValue($input->get->squareMax);
    $selector .= "object_square>=$valueMin, object_square<=$valueMax, ";
  3. Ryan, when I remove the code

    /*if($input->get->distr) {
    	$district = $pages->get("/district/" . $sanitizer->pageName($input->get->distr));
    	if($district) {
    			$selector .= "parent=$district, ";
    			$input->whitelist('distr', $distr->name);
    	}
    }*/
    
    

    rest of the code begins to work.

    When I turn on, I get:

    parent=/direction/city/, parent=1253,

    There are no results matching the query

    I can guess why. Here is the hierarchy of pages:

    |- direction

    | |

    | |- city

    | |- object 1 (object has a Pagefield named «district», in which selected pages «district 1 and so on»)

    | |- object 2

    | |- and so on

    |

    |- district

    | |- district 1

    | |- district 2

    I want to get a list of objects from the section «city» criteria «district». How can I do?

    upd:

    I found the solution, it was too easy, instead of the «parent» it is necessary to use a «field»

    $selector .= "parent district_location=$district, ";

    But now another question, not displayed «whitelist» )

    In what may be the reason?

    upd2:

    I found the solution works until I add another criterion in the search, for example:

    if($input->get->type_of_oper) {
    	$type_of_oper = $pages->get("/business_type/" . $sanitizer->pageName($input->get->type_of_oper));
    	if($type_of_oper) {
    			$selector .= "type_of_operation=$type_of_oper, ";
    			$input->whitelist('type_of_oper', $type_of_oper->name);
    	}
    }

    after adding it, I get:

    parent=/direction/city/, district_location=, type_of_operation=1021,

    how to avoid it?

  4. Thanks for the reply Ryan and code, it clarifies some things )

    Question that I asked - I solved (so delete it) and walked right up to the search, the results of which I can not get it.

    Form code I've described above, in a search template I use the following code (searching only two fields participate now):

    include("./header.inc");
    $selector = 'parent=/direction/city/, ';
    if($input->get->id) {
    	$value = $sanitizer->selectorValue($input->get->id);
    	$selector .= "object_id~=$value, ";
    	$input->whitelist('id', $value);
    }
    if($input->get->distr) {
    	$distr = $pages->get("/district/" . $sanitizer->pageName($input->get->distr));
    	if($distr) {
    	$selector .= "parent=$distr, ";
    	$input->whitelist('distr', $distr->name);
    	}
    }
    $objects = $pages->find($selector);
    $count = count($objects);
    echo "<h2>" . htmlentities($selector, ENT_QUOTES, "UTF-8") . "</h2>";
    if($count) {
    echo "<h2>Found pages: $count</h2>";
    foreach($objects as $obj) {
    echo "<div><a href='{$obj->url}'>{$obj->title}</a></div>" ;
    }
    } else echo "<h2>There are no results matching the query</h2>";
    include("./footer.inc");

    I made them for example, but they do not work, and the reason that I can not yet understand.

    upd:

    Slowly I begin to understand the structure.

    It appears in the search involved a hierarchy of pages. On an example of skyscrapers it: cities -> city -> object -> its properties (height, floors, year).

    What if such structure isn't present and my objects aren't enclosed, and are parallel?

    What role does this value $selector = 'parent=/direction/city/, '; ?

    Differently: how add in search of architects of skyscrapers? )

  5. Thank you Diogo!

    After your edition the code works!

    «Green» and «orange» — two pages that had to be chosen in the Pagefield.

    For an example: page title «green», and its address "/subway_station/sub_st_0111/", but how to specify the «orange» (with address "/subway_station/sub_st_0222/"), I didn't know, therefore in a code only one, «green».

    Tell please, what syntax of record $value. It can be "title" or "id" or "address" of several pages?

  6. Hi guys!

    I want to import into multiple pages at once the same value of the field, which is Pagefield. I make a selection of pages, and how to specify the page in Pagefield do not know.

    Likely this question already rose, but at a forum I didn't find the answer.

    Example: Pagefield is called «subway_station» in it I have to choose two out of a hundred pages, called «green» and «orange», as it be?

    foreach($pages->get("/district/")->find("district_region=UZAO") as $p) {
    echo "<a href='{$p->url}'>{$p->title}</a> " ;
    $p->subway_station->add("/subway_station/sub_st_0111/"); // 
    $p->save();
    }
  7. Hi! Search realization is impossible to me, prompt as it is possible to solve it if the form with selectors at me looks so:

    <form id="city_obj_search" method="get" action="<?php echo $config->urls->root?>city_obj_search/">
    <ul>
    <li>
    <?php
    foreach($pages->get("/business_type/")->children() as $type_of_oper) {
    $checked = $type_of_oper->name == $input->whitelist->type_of_oper ? " checked='checked' " : '';
    echo "<div>
    <label>
    <input$checked type='checkbox' name='type_of_oper' value='{$type_of_oper->name}'>{$type_of_oper->title}
    </label>
    </div>" ;
    }
    ?>
    </li>
    <li>
    <label for="district_location">District</label>
    <select id="district_location" name="distr">
    <option value="any">Any</option>
    <?php
    foreach($pages->get("/district/")->children() as $distr) {
    $selected = $distr->name == $input->whitelist->distr ? " selected='selected' " : '';
    echo "<option$selected value='{$distr->name}'>{$distr->title}</option>";
    }
    ?>
    </select>
    </li>
    <li>
    <label for="subway_station">Subway station</label>
    <select id="subway_station" name="subway">
    <option value="any">Any</option>
    <?php
    foreach($pages->get("/subway_station/")->children() as $subway) {
    $selected = $subway->name == $input->whitelist->subway ? " selected='selected' " : '';
    echo "<option$selected value='{$subway->name}'>{$subway->title}</option>";
    }
    ?>
    </select>
    </li>
    <li>
    <label for="object_cost_ru">Cost in ru</label>
    <select id="object_cost_ru" name="costru">
    <option value="any">Any</option>
    <?php
    foreach(array('30000-50000', '50000-100000', '100000-250000', '250000-500000', '500000-1000000', '1000000+') as $costru) {
    $selected = $costru == $input->whitelist->costru ? " selected='selected'" : '';
    echo "<option$selected value='$costru'>$costru руб.</option>";
    }
    ?>
    </select>
    </li>
    <li>
    <label for="object_cost_dol">Cost in dollars</label>
    <select id="object_cost_dol" name="costdol">
    <option value="any">Any</option>
    <?php
    foreach(array('1000-3000', '3000-10000', '10000-20000', '20000-30000', '30000+') as $costdol) {
    $selected = $costdol == $input->whitelist->costdol ? " selected='selected'" : '';
    echo "<option$selected value='$costdol'>$costdol $</option>";
    }
    ?>
    </select>
    </li>
    <li>
    <label for='search_id'>ID</label>
    <input type="text" placeholder="00000" name="id" id="search_id" value="<?php
    if($input->whitelist->id) echo htmlentities($input->whitelist->id, ENT_QUOTES); ?>" />
    </li>
    <li>
    <input type="submit" id="search_submit" name="submit" value="Find!">
    </li>
    </ul>
    </form>

    I wish that this request would be processed the search page «city_obj_search/», but the information from the forum (http://processwire.c...op-down-search/) that I use does not help me either an error or an empty result. Help to understand, please.

  8. Idea of ​​such exports is great! And thanks to Ryan for this!

    As for me: I'm trying and trying! What is the problem, doc?

    What I'm doing wrong or is this a known problem?

    If i try to import returns: «Unable to import page because it has no required 'title' field or it is blank.»

    My file structure is as follows:

    "title"

    "Yakimanka"

    "Yaroslavl"

    "Yasenevo"

    What could it be?

×
×
  • Create New...