Obecnie otrzymuję taki jak ten ...

$property_buildingorlocation = ($_GET['buildingorlocation']);

Czasami użytkownik wprowadzi ......

  1. BuildingName, Areaname, CityName (rozmiar tablicy do 3)

  2. Areame, CityName (rozmiar tablicy do 2)

  3. nazwa miasta (rozmiar tablicy do 1)

Dlatego pojawi się 2 przecinki, 1 przecinek lub żaden przecinek.

Chcę uzyskać dane do tablicy, dynamicznie ustawić rozmiar tablicy w zależności od liczby wejść lub przecinków (wymienione rozmiary powyżej)

Dalej, jeśli rozmiar tablicy jest 3, a następnie chcę wyszukać w trzech kolumnach MySQL (z wyboru) za pomocą operatora i operatora

Jeśli rozmiar tablicy jest 2, chcę wyszukać w dwóch kolumnach MySQL (z wyboru) za pomocą operatora i operatora

Jeśli rozmiar tablicy znajduje się 1, a następnie wyszukaj w 1 kolumnie MySQL

Wiem, że popycham to takim otwartym pytaniem, ale potrzebuję pomocy ... Byłem w tym od tego ranka nie może tego zrozumieć ....

0
DragonFire 16 luty 2017, 11:33

2 odpowiedzi

Najlepsza odpowiedź

W końcu skończyło się za pomocą poniższego logiki ... działa.

if (!empty($property_buildingorlocation)) {

    $searchparams = array_map('trim', explode(',', $property_buildingorlocation));
    $searchparamscount=count($searchparams);

    // If Property Buildingname, Areaname and City are given
    if ($searchparamscount == 3) {
    $wheres[] = 'property_buildingname LIKE :property_buildingname AND property_areaname LIKE :property_areaname AND property_city LIKE :property_city';
    $params[':property_buildingname'] = $searchparams[0];
    $params[':property_areaname'] = $searchparams[1];

    $select7 = $con->prepare("SELECT city_id, city_name from tbl_city WHERE city_name LIKE (:property_city)");
    $select7->setFetchMode(PDO::FETCH_ASSOC);
    $select7->bindParam(':property_city', $searchparams[2], PDO::PARAM_STR);
    $select7->execute();
        while($data7=$select7->fetch()){ 
        $searchparams[2] = $data7['city_id'];
        }
    $params[':property_city'] = $searchparams[2];

    // If Property Areaname and City are given
    } else if ($searchparamscount == 2) {
    $wheres[] = 'property_areaname LIKE :property_areaname AND property_city LIKE :property_city';
    $params[':property_areaname'] = $searchparams[0];

    $select7 = $con->prepare("SELECT city_id, city_name from tbl_city WHERE city_name LIKE (:property_city)");
    $select7->setFetchMode(PDO::FETCH_ASSOC);
    $select7->bindParam(':property_city', $searchparams[1], PDO::PARAM_STR);
    $select7->execute();
        while($data7=$select7->fetch()){ 
        $searchparams[1] = $data7['city_id'];
        }   
    $params[':property_city'] = $searchparams[1];   
    } 

    // If Property City is given
    else if ($searchparamscount == 1) {
    $wheres[] = 'property_city LIKE :property_city';

    $select7 = $con->prepare("SELECT city_id, city_name from tbl_city WHERE city_name LIKE (:property_city)");
    $select7->setFetchMode(PDO::FETCH_ASSOC);
    $select7->bindParam(':property_city', $searchparams[0], PDO::PARAM_STR);
    $select7->execute();
        while($data7=$select7->fetch()){ 
        $searchparams[0] = $data7['city_id'];
        }   
    $params[':property_city'] = $searchparams[0];
    }           
}
0
DragonFire 17 luty 2017, 22:29

Umieść dane do tablicy

$searchparams=explode(',',$property_buildingorlocation);
$searchparams=('trim',$searchparams);

Liczba liczby elementów

$searchparamscount=count($searchparams);

Wykonaj logikę za pomocą Przełącznik

switch ($searchparamscount) {
case 1:
    ...
    break;
case 2:
    ...
    break;
case 3:
    ...
   break;
}
1
Alexey Shatrov 16 luty 2017, 08:49