CodeIgniter Google Maps API SQL alınan sonuçları Passing

3 Cevap php

Ben sitemde Google Maps kullanmak umuyorum.

Benim adresleri bir veritabanında saklanır. Ben bilgileri tüm dinamik bir sayfa yukarı çekiyorum. Örneğin: mysite.com/site/business/5 (5 iş kimliği olduğu).

Diyelim ki böyle bir sorgu yapmak diyelim:

function addressForMap($id) {
$this->db->select('b.id, b.busaddress, b.buscity, b.buszip');
$this->db->from('business as b');
$this->db->where('b.id', $id);
$this->db->limit(1);

// add a limit $this->db->limit(1);

// get the results.. cha-ching
$q = $this->db->get();

// any results?
if($q->num_rows() !== 1)
{
    return FALSE;
}

return $q->row();

}

Nasıl doğru I çıkış Google Maps API bilgi uygun şekilde haritayı görüntüler böylece olabilir?

API arayüzü böyle sonuçlar alır: $marker['address'] = 'Crescent Park, Palo Alto';.

İşte denetleyicisi ne var:

$marker = array();
    $address = $this->Business_model->addressForMap($id); //Get result row
    $marker['address'] = $address->busaddress .' '.$address->buscity .', '. $address->buszip;

3 Cevap

MODEL

function addressForMap($id)
{
    $this->db->select('b.id, b.busaddress, b.buscity, b.buszip');
    $this->db->from('business as b');
    $this->db->where('b.id', $id);

    // add a limit
    $this->db->limit(1);

    // get the results.. cha-ching
    $q = $this->db->get();

    // any results?
    if($q->num_rows() !== 1)
    {
        return FALSE;
    }

    return $q->row();
}

CONTROLLER

function your_controller_method($id)
{
    $data = $this->Business_model->addressForMap($id);

    // did we get any results?
    if($data === FALSE)
    {
        show_error();
        return;
    }  

    $marker['address'] = $data->busaddress.' '.$data->buscity.', '.$data->buszip;
}

Eğer $id gerçek sayısal bir kimliği olduğunu doğrulamak emin olun. Bu IMO .. aslında sorguyu gerçekleştirmeden önce yapmak için iyi bir şey.

EDIT #2: See changed code above


EDIT #1: From your comment and changes

Siz bu var:

return $this->db->get();

kodunuzu kalanı dayalı olduğunda, bu olmalıdır:

$query = $this->db->get();

Eğer sorgu nesnesini döndüğünüzde, değişken $address CI sonuç nesne atanır. böylece, sizin denetleyicisi, aslında böyle bir şey yapmak zorunda olurdu:

$address = $this->Business_model->addressForMap($id);

$row = $address->row();

$marker['address'] = $row->busaddress .' '.$row->buscity .', '. $row->buszip;

Yine de ... return $query = değişen ve olduğu gibi sizin denetleyicisi tutmak olabilir öneririm.

İşte Final doğru kod bulunuyor:

Controller:

$address = $this->Business_model->addressForMap($id); //Get result row
        $config['apikey'] = 'google-api-key';
        $config['center_address'] =  $address->busaddress .', '. $address->buscity;
        $this->googlemaps->initialize($config);
        $marker = array();

        // $marker['address'] = $address->busaddress .' '.$address->buscity .', '. $address->buszip;
        $marker['address'] = $address->busaddress .', '. $address->buscity;
        $this->googlemaps->add_marker($marker);

        $data['map'] = $this->googlemaps->create_map();

        $data['address'] = $address->busaddress .', '.$address->buscity;

Model için:

function addressForMap($id) {
    $this->db->select('b.id, b.busaddress, b.buscity, b.buszip');
    $this->db->from('business as b');
    $this->db->where('b.id', $id);
    $this->db->limit(1);
// add a limit
    $this->db->limit(1);

    // get the results.. cha-ching
    $q = $this->db->get();

    // any results?
    if($q->num_rows() !== 1)
    {
        return FALSE;
    }

    return $q->row();
}

Kullandığınız için teşekkür ederiz my library. -P: Ben burada yaptım tam olarak aynı zaman yeterince yakın benim blog çözüm yayınlanmıştır görünüyor

Eğer olsa kriteri var duyduğuma sevindim!