zawer0103 / GIS-project

geo information system of telecommunications network
0 stars 0 forks source link

search in POSTGRESQL (htmlform-->JS -->PHP -->JS) #2

Open zawer0103 opened 4 years ago

zawer0103 commented 4 years ago

ЗАДАЧА: поиск чего-то в БД. основная идея следующая: На главной странички-php созадём форму для ввода значений:

Введіть вулицю [пробіл] номер будинку тут:

*вот это onkeypress="if(event.keyCode == 13) return false - не реагировать на нажатие ENTER при нажатии на кнопку клавиатуры выполняется функция showHintAdress (над введёным в этой форме значениями)

основное тут это: var url="gethintstreetnumber-split.php?qstr="+arr[0]+"&qnum="+arr[1] ; xhttp.open("GET", url, true);

эта строчка передаёт два параметра указаный php файл. дальше главное - это принять эти параметры:

$sql = "SELECT cubic_house_id, адреса FROM (SELECT cubic_house_id, cubic_street||', '||cubic_house as адреса, array_to_string(regexp_matches(cubic_house,'^[0-9]+'),',')::integer as sort FROM ".$selectedCity.".".$selectedCity."_cubic_buildings WHERE cubic_nettype NOT LIKE 'Off_net%'
AND lower(replace(cubic_street,'''','')) like $1 AND lower(cubic_house) like $2 “

$stmt = pg_prepare($conn, "my_query", $sql); // вот этот prepare помогает запустить sql-запрос cо знаком ? -для mysql $1 -для postres.
*stmtname имя создаваемой заготовки. Должно быть уникальным в пределах сессии

$q1 = $_REQUEST["qstr"]; // этот q приходит сюда с главной $q2 = $_REQUEST["qnum"]; // этот q приходит сюда с главной $q1 = mb_strtolower($q1,'UTF-8'); $q2 = mb_strtolower($q2,'UTF-8'); $stmt=pg_execute($conn, "my_query", array($q1."%",$q2."%", "%".$q3."%")); // эта сцепка $q1."%" - это решение как использовать like внутри sql-запроса

дальше запускаем pg_fetch_array для всех строк $arr = pg_fetch_array($stmt, NULL, PGSQL_ASSOC); //pg_fetch_array по умолчанию возвращает и числовые индексы и ассоциацию //PGSQL_ASSOC - возвращает только асоциацию if( is_array($arr) ==FALSE ){echo "

Подключеных домов нет

";} else { echo '' ; echo ""; echo ""; foreach ($arr as $key => $value) { echo ""; }echo ""; echo "";//это заголовок для таблицы //ДАЛЬШЕ ЛАЖА: Последующий вызов функции pg_fetch_row() возвратит следующую запись в результирующем наборе //поєтому НУЖНО сбросить счётчик на ноль: $seek=pg_result_seek($stmt,0); //это помогло echo''; while ($arr = pg_fetch_array($stmt, NULL, PGSQL_ASSOC)) { echo ""; foreach ($arr as $key => $value) { echo ""; }echo "";

} echo'</tbody>';echo "</table>"; //  

}

zawer0103 commented 4 years ago
".$key."
".$value."