2013-05-20 2 views
-2

У меня есть функции, где мне нужно работать с enterie id. Выбор enterie по id, отображение его и обновление строк в БД. Привычка скопировать весь код, только основную идеюКак использовать функциональную переменную в других функциях

контроллеры

function edit_advert() 
{ 
    $id = $this->uri->segment(3); //Here i get my enterie id 
    $this->load->model('model_adverts'); 
    $myadvert = $this->model_adverts->get_enterie($id); //passing id to model function 
//where i find enterie, select it from DB and pass it back to controller 
    //and then do if() stuff, where i give error message or pass returned enterie to 
//view and display it . 
} 

function update_enterie() //in view i got form with values from DB, after editing 
//fields, form submits to this function 
{ 
    do form validation stuff etc 
    And here i need to get $id again and pass it to model, so i can do query update 
    where $id = id 
} 

Итак, как я могу получить доступ к этой переменной $ ID снова?

+0

у вас есть вид с HTML-форму, когда вы передаете его он будет идти в update_enterie()? – galchen

+0

из опыта, тот факт, что вы оба функционируете на одной странице, переменная $ id должна автоматически быть доступна для использования во всем мире ... Кто-то не читал руководство PHP или не искал сайт должным образом. –

+0

Если вы хотите передать идентификатор между функциями, передайте его в вызове функции или установите в качестве атрибута объекта контроллера. Kinda basic PHP stuff – Rooneyl

ответ

-1

Попробуйте это:

class abc{ 
    var $id;  
    function edit_advert() 
    { 
     $this->id = $this->uri->segment(3); //Here i get my enterie id 
     ..... 
    } 
    function update_enterie() 
    { 
     //use here $this->id; 
    } 
} 

Если ваш update_enterie() не вызывается в то же время, то вы должны использовать «переменную сеанса» как,

$this->session->set_userdata('my_id', 'value'); 

и использовать, где вы хотите.

Подробнее http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

+0

Обновление будет отдельным запросом (отправкой формы), так что это не сработает. – Mischa

+1

Зачем вам использовать сеанс для этого? Просто передайте идентификатор через форму или URL-адрес ... – Mischa

Смежные вопросы