0

PHPSESSIONS を codeigniter ですぐに使用できないことがわかったので、Codeigniter の Native_Sessions ライブラリをダウンロードしました。

オンラインの郵便番号データベース API を使用して、データベース内の郵便番号を検索するための検索クエリがあります。私はAPIからの郵便番号をセッションに保存し、すべての工場の行の郵便番号がある工場テーブルでそれらの郵便番号を検索したいと考えています。

したがって、私のファクトリーテーブルは次のようになります。

Factories
---------
Factoryid
Factoryname
Adress
Postcode
Country
...
...
...

郵便番号の検索クエリは次のようになります。

    if (!isset($_COOKIE['cookie'])) {

        $query = "SELECT * FROM (`bedrijfcategorieen`) 
        JOIN `bedrijven` ON `bedrijfcategorieen`.`idbedrijven` = `bedrijven`.`idbedrijven` 
        JOIN `categorieen` ON `bedrijfcategorieen`.`idcategorieen` = `categorieen`.`idcategorieen` 
        WHERE (`Bedrijfsnaam` LIKE '%".$this->input->post('search')."%' 
        OR `Plaats` LIKE '%".$this->input->post('search')."%' 
        OR `Telefoonnummer` LIKE '%".$this->input->post('search')."%' 
        OR `Email` LIKE '%".$this->input->post('search')."%' 
        OR `Website` LIKE '%".$this->input->post('search')."%' 
        OR `Profiel` LIKE '%".$this->input->post('search')."%' 
        OR `Adres` LIKE '%".$this->input->post('search')."%' 
        OR `Categorie` LIKE '%".$this->input->post('search')."%') 

そして、郵便番号を検索するためのこの行:

        AND (Postcode LIKE '%". $_SESSION['postcodes'] ."%')

これはうまくいかないので、間違っていると思います。上記のように、私のセッションは郵便番号と呼ばれます。

        GROUP BY `Categorie`, `bedrijfcategorieen`.`idbedrijven`";
        $query = $this->db->query($query);

        $result = $query->result_array();

        return $result;

セッションを設定するためのコード。形:

フォームの JavaScript: (使用: http://www.d-centralize.nl/pro6pp/

    function send_data_to_server(output)
    {
        var post_code=$('.postcode').val();
        var url = 'http://kees.een-site-bouwen.nl/script.php?output='+output+'&post_code='+post_code;

        $.ajax({
            url : url,
            success : function (data)
            {
            }
        });
    };

データが送信される script.php:

<?php 

echo '<pre>';
     session_start();

     $new_post_code=$_GET['post_code'];
        if($new_post_code!='' && $new_post_code!=0){
        if(!isset($_SESSION['searched_post_code']) || 
        empty($_SESSION['searched_post_code'])){ 
        $_SESSION['searched_post_code']=$new_post_code; 

        }elseif($_SESSION['searched_post_code']!=$new_post_code){ 

        $_SESSION['searched_post_code']=$new_post_code; 

        unset($_SESSION['postcodes']); 
        }
        }
     $output=$_GET['output'];
     $_SESSION['postcodes'][]=$output;
     echo $output;
     print_r($_SESSION);
echo '</pre>';

?>
4

1 に答える 1

0

コードにエラーが多すぎます。しかし、私はあなたが直面している問題のみに対処します....

問題が何であるかを見つけましたが、それを修正する方法がわかりません。問題は、'Postcode' LIKE '%' .Array => [0] => 9101 [1] 9102... などを検索することです。そのように機能していません。通常の php で in_array() を使用できることがわかりました。しかし、SQLで何かを使用するにはどうすればよいですか。

あなたが上のコメントで言ったように。

$_SESSION['postcode']は 9101 と 9102 の 2 つの要素を持つ配列であると想定しています。

script.php

$string = implode($_SESSION['postcode'], '|');

あなたのSQLクエリファイルで

AND (Postcode LIKE '%". $_SESSION['postcodes'] ."%')

に変更します。

AND (Postcode REGEXP '$string')

それはあなたに望ましい結果を与えるでしょう。

于 2013-05-14T13:03:59.467 に答える