2016-10-20 71 views
0

我有一個小項目,我使用codeigniter,jquery和bootstrap。如何將數據加載到已加載的視圖?

我有「Startsite」裏的用戶不得不說:

選項1:編輯項目

選項2:創建項目

我認爲這是非常有用的作爲第一顯示我的控制器:

在構造方法中,我加載所有模型,在索引中我將數據加載到我的「startsite」中的所有下拉列表中,saveProject中保存我創建的項目,並且我遇到的問題是editProject。看這裏:

class projekt extends CI_Controller { 

public function __construct() 
{ 
    parent::__construct(); 
    $this->load->helper('html'); 
    $this->load->helper('url'); 
    $this->load->helper('form'); 
    $this->load->model('projektklassen_model'); 
    $this->load->model('kundengruppen_model'); 
    $this->load->model('produktgruppen_model'); 
    $this->load->model('ablehnungsgrund_model'); 
    $this->load->model('absatzregion_model'); 
    $this->load->model('anfragetyp_model'); 
    $this->load->model('businessunit_model'); 
    $this->load->model('endkundeOEM_model'); 
    $this->load->model('lieferanten_model'); 
    $this->load->model('prozentverteilungEOP_model'); 
    $this->load->model('prozentverteilungSOP_model'); 
    $this->load->model('realisierungsstatus_model'); 
    $this->load->model('gsmbereich_model'); 
    $this->load->model('firma_model'); 
    $this->load->model('projekt_model'); 
} 

public function index() 
{   
    $data['projektklassen'] = $this->projektklassen_model->getProjektklassen(); 
    $data['kundengruppen'] = $this->kundengruppen_model->getKundengruppen(); 
    $data['produktgruppen'] = $this->produktgruppen_model->getProduktgruppen(); 
    $data['ablehnungsgruende'] = $this->ablehnungsgrund_model->getAblehnungsgruende(); 
    $data['absatzregionen'] = $this->absatzregion_model->getAbsatzregionen(); 
    $data['anfragetypen'] = $this->anfragetyp_model->getAnfragetypen(); 
    $data['businessunits'] = $this->businessunit_model->getBusinessunits(); 
    $data['endkundenOEM'] = $this->endkundeOEM_model->getEndkundenOEM(); 
    $data['lieferanten'] = $this->lieferanten_model->getLieferanten(); 
    $data['prozentverteilungenEOP'] = $this->prozentverteilungEOP_model->getProzentverteilungenEOP(); 
    $data['prozentverteilungenSOP'] = $this->prozentverteilungSOP_model->getProzentverteilungenSOP(); 
    $data['realisierungsstati'] = $this->realisierungsstatus_model->getRealisierungsstatus(); 
    $data['gsmbereiche'] = $this->gsmbereich_model->getGSMBereiche(); 
    $data['firmen'] = $this->firma_model->getFirmen(); 
    $data['projekte'] = $this->projekt_model->getProjekte(); 
    $data['preFormVisible'] = true; 
    $this->load->view('project2', $data);  
} 

function saveProjekt(){  
    if($this->input->post('btGenerate')){ 
     $pdm = $this->projekt_model->getPDM(); 
     $this->projekt_model->addprojekt($pdm);     
    } 
    redirect('projekt');   
} 

function editProjekt(){  
    if($this->input->post('btladeProjekt')){ 
     $data['proDetails'] = $this->projekt_model->editprojekt(); 
     $data['preFormVisible'] = false; 
     $this->load->view('project2', $data);   
    } 
    redirect('projekt');   
} } 

應該發生什麼? 用戶選擇「開始現場」編輯項目。他在下拉列表中選擇一個項目並單擊一個按鈕。 這裏從startsite形式:

<?php echo form_open('projekt/editProjekt', array('name' => 'preform')); ?> 
 
\t <div class="col-sm-6 col-md-6 col-lg-6"> 
 
\t \t <label for='projekt'>Projekt</label> 
 
\t \t <?php echo form_dropdown('projekt', $projekte, '', 'class="form-control" id="projekt"'); ?> 
 
\t </div> 
 
\t <div class="col-sm-6 col-md-4 col-lg-3"> 
 
\t \t <button type="submit" id="btladeProjekt" name="btladeProjekt" value="btladeProjekt" class="btn btn-primary headbutton"><i class="glyphicon glyphicon-pencil"></i> Projekt bearbeiten </button> 
 
\t </div> 
 
<?php echo form_close(); ?>

現在editProject調用在模型的方法的控制器的方法。我告訴你:

function editprojekt() { 
    $serverName = "de-sal-v-sql011"; 
    $connectionInfo = array("Database"=>"NB_Roll_Plan", "UID"=>"s-global_it-bit002", "PWD"=>"\$Ev1danzA\$"); 
    $conn = sqlsrv_connect($serverName, $connectionInfo); 

    $projektID = $this->input->post('projekt'); 

    $data = array(); 
    $tsql = "SELECT ProjektID, Projektname, KDGR, Kundenname, ProduktgruppeID, Projektklasse, MABVertrieb, GSMBereich, Ansprechpartner_kunde,ProjektanfrageNR_kunde, 
     Anfragedatum, Abgabedatum_angebot, PDM, übergeordnetePDM, Kommentar, Projektrisiken from Projekt WHERE ProjektID = ? ORDER BY Projektname ASC"; 
    $var = array($projektID); 

    $query = sqlsrv_query($conn, $tsql, $var); 
    if($query != false){ 
     while($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)) { 
      $data['ProjektID'] = $row['ProjektID']; 
      $data['Projektname'] = $row['Projektname']; 
      $data['KDGR'] = $row['KDGR']; 
      $data['Kundenname'] = $row['Kundenname']; 
      $data['ProduktgruppeID'] = $row['ProduktgruppeID']; 
      $data['Projektklasse'] = $row['Projektklasse']; 
      $data['MABVertrieb'] = $row['MABVertrieb']; 
      $data['GSMBereich'] = $row['GSMBereich']; 
      $data['Ansprechpartner_kunde'] = $row['Ansprechpartner_kunde']; 
      $data['ProjektanfrageNR_kunde'] = $row['ProjektanfrageNR_kunde']; 
      $data['Anfragedatum'] = $row['Anfragedatum']; 
      $data['Abgabedatum_angebot'] = $row['Abgabedatum_angebot']; 
      $data['PDM'] = $row['PDM']; 
      $data['übergeordnetePDM'] = $row['übergeordnetePDM']; 
      $data['Kommentar'] = $row['Kommentar']; 
      $data['Projektrisiken'] = $row['Projektrisiken'];    
     } 
     sqlsrv_free_stmt($query);  
    }else{ 
     die(print_r(sqlsrv_errors(), true)); 
    } 
    return $data;  
} 

現在我想在視圖中顯示返回的數據,但是當我嘗試這個沒有任何反應。

<?php 
 
\t \t \t \t \t \t \t if(isset($proDetails)){ 
 
\t \t \t \t \t \t \t \t echo "test"; 
 
\t \t \t \t \t \t \t \t echo "<input type='text' class='form-control' id='proname' name='proname' value='".$proDetails->ProjektID."'/>"; 
 
\t \t \t \t \t \t \t }else{ 
 
\t \t \t \t \t \t \t \t echo "<input type='text' class='form-control' id='proname' name='proname'>"; 
 
\t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t ?>

我錯過了什麼? Thx

+0

爲什麼dnt實現ajax? –

+0

你的意思是?我認爲在codeigniter中最好的實踐方法是去控制器和模型?混合設置好嗎? – JamesnxD

+0

請'print_r($ this-> projekt_model-> editprojekt())'並且告訴我 –

回答

0

好吧我想我明白你要求什麼@JamesnxD。您可以加載的所有降在視圖和另一視圖中的編輯形式下做這樣的

$this->load->view('front/dropdown'); 
$this->load->view('front/editform',$data); 
$this->load->view('front/front_footer'); 
+0

謝謝你的回答,但只是爲了澄清我的目標。我的視圖加載了所有下拉菜單,然後用戶想要基於項目ID加載數據。數據的表示應該在相同的視圖中。也許我不明白答案,但是當我加載2個不同的意見,我不是在相同的觀點或? – JamesnxD

0

一些變化模型的功能,並添加PARAM。

function editprojekt($proID) { 
    $projektID = $proID 
} 

,改變你的index方法

public function index($proID = '') { 
    if($proID) { 
     $data['proDetails'] = $this->projekt_model->editprojekt($proID); 
    } else { 
     $data['proDetails'] = false; 
    } 
} 

最後,當你編輯你打電話的內容在瀏覽器的URL projekt/index/12(12 = projektID)你知道,你可以使用數組來加載helper

+0

沒有變化。因爲$ proDetails沒有設置。 – JamesnxD

+0

請同時調用'$ data ['proDetails'] = $ this-> projekt_model-> editprojekt();'in'index'方法,並讓我知道 –

+0

然後它可以工作。我不得不說,我在模型中將查詢的where子句更改爲固定ID。因爲在索引方法中我沒有提交表單提供的ID。 – JamesnxD

0

model and library

$this->load->helper(array('html', 'url', 'form')); 
$this->load->model(array('projektklassen_model', 'kundengruppen_model', 'produktgruppen_model', 'ablehnungsgrund_model','absatzregion_model','anfragetyp_model','businessunit_model','endkundeOEM_model','lieferanten_model','prozentverteilungEOP_model','prozentverteilungSOP_model','realisierungsstatus_model','gsmbereich_model','firma_model','projekt_model')); 
相關問題