ich eine Tabelle aus here nach dem Vorbild machen, und ich habe alles läuft außer bekam eine Sache, denn ich kann nicht herausfinden:Datentabellen Tabellenreihenfolge mit zwei Regeln
Wie kann ich bestellen und stellen Sie die Erstbestellung der Tabelle, mit den Werten der Spalte "numeroregisto", wenn diese Werte als "XXX/YY" kommen - ich würde es brauchen, so dass es zuerst die Zahlen auf der rechten Seite des Schrägstrichs bestellt, und dann die auf der links. Die Zahlen auf der rechten Seite sind immer zwei Ziffern, die auf der linken Seite können zwischen einer und fünf Ziffern variieren.
ORDER BY cast(substring_index(numeroregisto, '/', - 1) AS signed INTEGER), cast(substring_index(numeroregisto, '/', 1) AS signed INTEGER) ASC
Aber ich kann Figur scheinen, wie diese Arbeit mit diesem Ansatz zu machen:
Auf einem anderen ocasion, einen anderen Ansatz verwendet wurde, wurde ich so zu tun, sagte
var $table_registos = 'registos';
var $column_order_registos = array('numeroregisto','dataregisto','amostra','especies.especie','requisitante',null); //set column field database for datatable orderable
var $column_search_registos = array('registos.numeroregisto','registos.dataregisto','registos.amostra','especies.especie','requisitante'); //set column field database for datatable searchable just firstname , lastname , address are searchable
var $order_registos = array('numeroregisto' => 'ASC'); // default order
private function _get_datatables_query_registos()
{
$this->db->select('registos.*, origemmaterial.id AS omid, origemmaterial.origem, meioconservacao.id AS mcid, meioconservacao.meio, especies.id AS esid, especies.especie');
$this->db->from('registos, origemmaterial, meioconservacao, especies');
$this->db->where('registos.origemid=origemmaterial.id AND registos.meioid=meioconservacao.id AND registos.especieid=especies.id');
$i_registos = 0;
foreach ($this->column_search_registos as $item) // loop column
{
if($_POST['search']['value']) // if datatable send POST for search
{
if($i_registos===0) // first loop
{
$this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.
$this->db->like($item, $_POST['search']['value']);
}
else
{
$this->db->or_like($item, $_POST['search']['value']);
}
if(count($this->column_search_registos) - 1 == $i_registos) //last loop
$this->db->group_end(); //close bracket
}
$i_registos++;
}
if(isset($_POST['order'])) // here order processing
{
$this->db->order_by($this->column_order_registos[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
}
else if(isset($this->order_registos))
{
$order_registos = $this->order_registos;
$this->db->order_by(key($order_registos), $order_registos[key($order_registos)]);
}
}
Jede Hilfe wäre willkommen, vielen Dank im Voraus!
Was ist das Problem mit dem aktuellen Code ist? Können Sie den Code zu dem Teil, wo Sie denken, dass das Problem ist, eng einbinden? – Shadow
Ich habe den Post bearbeitet, um ihn wie vorgeschlagen zu verengen, denke, dass es jetzt klar sein sollte. Danke! – Baya