2016-12-13 19 views
3

Hier sind zwei Tabellen nämlich Werkzeuge und tool_use.array_search Funktion gibt keine Werte zurück

Tools Tabelle sieht wie folgt aus

id name    tools_names         quantity type 

    13 cutting player cutting playerA,cutting playerB,cutting playerC  3  engineer 
    12 REFLECTORS  REFLECTORSA,REFLECTORSB        2   team 

tool_use Tisch wie diese

id  user_id type  tools     
8  siraj engineer cutting playerA,cutting playerB  
7  siraj team  REFLECTORSB   
6  siraj team  REFLECTORSA  

ich will sieht außer der tools_names angezeigt werden eingefügt Tabelle tool_use beim Einfügen aber die gesamte tools_names angezeigten eventhough das Ergebnis sieht aus wie in der Tabelle. Hier ist meine Kontrolle

public function ajax_tools() 
{ 
    $data['tools']=$this->Tools_model->view_available_tools($_POST['type']); 
    foreach ($data['tools'] as $key=>$val) { 
    $data['toolss'][] =explode(',',$val['tools_names']); 

     } 
    $data['tools_names'] = $this->Tools_model->get_tool_names($_POST['type'])->result(); 
    foreach ($data['tools_names'] as $row) 
    { 
     if (($key =array_search($row->tools,$data['toolss'])) !== false) 
     { 
      unset($data['toolss'][$key]); 
      $data['toolss'] = array_values($data['toolss']); 

     } 
    } 
    return $data['toolss']; 
    $this->load->view('ajax_tools',$data); 
} 

Hier ist meine Modelle

public function view_available_tools($type) 
{ 
    $this->db->order_by('id','desc'); 
    $this->db->where('status',1); 
    $this->db->where('type',$type); 
    $query=$this->db->get('tools'); 
    return $query->result_array(); 
} 

public function get_tool_names($type) 
{ 
    return $this->db->get_where('tool_use',array('type'=>$type)); 
} 

dies meiner Ansicht

<div class="form-group"> 
     <label for="type" class="control-label">Type:</label> 
     <select name="type" id="type" class="form-control" required> 
     <option value="">please select</option> 
     <option value="team" <?php echo set_select('type','team'); ?>>Team</option> 
     <option value="engineer" <?php echo set_select('type','engineer'); ?>>Engineer</option> 
     </select> 
     </div> 

     <div class="form-group "> 
     <label for="tools" class="control-label">Tools:</label> 
     <select name="tools[]" id="tools" multiple="multiple" required> 
     <option value="">please select</option> 

     </select> 
     </div> 

<script> 
$('#type').change(function(){ 
var type=$('#type').val(); 
var url='<?php echo base_url(); ?>tools/tools_control/ajax_tools'; 
     $.post(url, {type:type}, function(data) 
     { 

     $('#tools').html(data); 
     }); 
}); 
</script> 

ist mir bitte helfen, mein Problem

+0

Sollte es nicht sei "return $ data ['tools']" und nicht "return $ data ['toolss']"? – deChristo

+0

Verwenden Sie keinen zusätzlichen Buchstaben, um eine andere Variable anzugeben (Tools vs. Toolss) -> verwenden Sie immer selbsterklärende Namen (loadedTools vs. toolNames) - CleanCode –

+0

ist ein Problem –

Antwort

1

Wenn Sie array_search zu lösen, Sie versuchen, für $row->tools zu suchen, die cutting playerA,cutting playerB angeblich enthält . Und Sie suchen nach diesem innerhalb eines Arrays, das nicht die gleiche Art von durch Kommas getrennten Wertelisten enthält, sondern stattdessen ihre Explosionsversionen (wie Sie in Zeile 3 eine explode getan haben).

+0

k.then was ist mit anderen beiden Werten 'REFLECTORSB' und' REFLECTORSA' es enthält Einzelwert also sollte es richtig angezeigt werden? –

+0

Eigentlich nein: Betrachtet man nur 'team',' $ data ['toolss'] 'wäre' [0 => ['REFA', 'REFB']] 'wobei' $ row-> tools' '' wäre REFB'' bei der ersten Schleifeniteration (dann "REFA" bei der zweiten Iteration). Ihr Code hat also 'array_search ('REFB', [0 => ['REFA', 'REFB']])', die keinen Index zurückgeben können. –

+0

Jetzt ist es zurück..Sehen Sie meine Antwort, aber nur für einzelne Werte eingefügt Zeilen nicht für als Array gespeichert –

0

wenn tools in Tabelle tool_use Einzelwerte enthalten i sie die Lösung finden, aber wenn es mehr Werte enthält, ich meine als Array gespeichert halten mich vom Ziel entfernt haben Sie einen Blick

public function ajax_tools() 
{ 
    $data['tools']=$this->Tools_model->view_available_tools($_POST['type']); 
    foreach ($data['tools'] as $key=>$val) 
    { 
    $data['toolss'][] = $data['t']=explode(',',$val['tools_names']); 
    } 
    $data['tools_names'] = $this->Tools_model->get_tool_names($_POST['type'])->result(); 
    var_dump($data['tools_names']); 
    foreach ($data['tools_names'] as $val) 
    { 
     if (($key =array_search($val->tools,$data['t'])) !== false) 
     { 
      unset($data['t'][$key]); 
      $data['t'] = array_values($data['t']); 

     } 
    } 

    $this->load->view('ajax_tools',$data); 
} 
+0

bitte helfen Sie mir, dieses Problem zu lösen –

+0

jemand eine Idee haben –

Verwandte Themen