Hallo Community,
i filter a datagrid. When the db query found datas he works fine but when he dosn't find datas he show me an empty datagrid for all the time. Wherever i change the filter input the datagrid ist empty. I must update the site to bekome the normal datagrid.
I hope you cann help me.
Me View Code:
function get_filter(){
var filter = new Array();
filter['rufnummer'] = searchRufnr;
filter['mobile'] = searchMobil;
filter['festnetz'] = searchFest;
filter['anbieter'] = searchAnbieter;
filter['kartennummer'] = searchKarte;
filter['kktnr'] = searchKonto;
filter['nutzer'] = searchNutzer;
filter['kostenstelle'] = searchKost;
filter['termination'] = searchGekuendigt;
filter['vvl'] = searchVVL;
filter['vertrag_date'] = searchDate;
filter['vertrag_date_direction'] = searchDateDirection;
filter['vertrag_date_type'] = searchDateType;
return filter;
}
function reload_datagrid_with_filter(){
filter = get_filter();
load_datagrid(filter);
}
function load_datagrid(filter) {
$('#dg').datagrid({
singleSelect: true,
fit: true,
showHeader:true,
url: '<?php echo base_url(); ?>index.php/ajax/datagrid_vertrag',
queryParams:filter,
onSelect: function(index, row) {
load_detail_datagrid(row.id);
},
});
}
My AJAX-Code:
public function datagrid_vertrag($sub=false) {
echo $this->vertrag->overview($sub);
}
My Vertrag-Code:
public function overview(){
$kundenid = $this->user->kundenid;
$kostenstellen = $this->user->kostenstellen;
$where = array();
$join = array();
$hilfswhere = null;
$where[] = "v.kundenID = {$kundenid}";
if($kostenstellen != false)
{
for($i = 0; $i < count($kostenstellen); $i++)
{
if($hilfswhere == null)
{
$hilfswhere = "((n.Kostenstelle = '" . $kostenstellen[$i] . "')";
} else {
$hilfswhere = $hilfswhere . " OR (n.Kostenstelle = '" . $kostenstellen[$i] . "')";
}
}
$hilfswhere = $hilfswhere . ")";
$where[] = $hilfswhere;
}
if($_POST["mobile"] == "true"){
$where[] = "ta.Mobilfunk = 1";
}
if($_POST["festnetz"] == "true"){
$where[] = "ta.Festnetz = 1";
}
if($_POST["anbieter"] != null){
$where[] = "t.AnbieterID = '{$_POST["anbieter"]}'";
}
if($_POST["kartennummer"] != null){
$where[] = "ka.Kartennummer LIKE '%{$_POST["kartennummer"]}%'";
}
if($_POST["kktnr"] != null){
$where[] = "kkn.Kundenkontonummer LIKE '%{$_POST["kktnr"]}%'";
}
if($_POST["nutzer"] != null){
$where[] = "n.NutzerBezeichnung LIKE '%{$_POST["nutzer"]}%'";
}
if($_POST["kostenstelle"] != null){
$where[] = "n.Kostenstelle LIKE '%{$_POST["kostenstelle"]}%'";
}
if($_POST["rufnummer"] != null){
$where[] = "(m.Rufnummer LIKE '%{$_POST["rufnummer"]}%' OR f.Rufnummer LIKE '%{$_POST["rufnummer"]}%')";
}
if($_POST["termination"] == "true"){
$where[] = "v.kuendigungsDatum IS NOT NULL";
}
if($_POST["vvl"] == "true"){
$where[] = "
(NOW()
BETWEEN DATE_SUB(vertragsende, INTERVAL IF(rv.vorzeitigeVVL IS NOT NULL, rv.vorzeitigeVVL,0) MONTH)
AND vertragsende OR v.sleeper IS NOT NULL)
";
}
if($_POST["vertrag_date"] != null){
$vertrag_date = $_POST["vertrag_date"]; // 01.12.2013
$d = date_parse_from_format("d.m.Y", $vertrag_date); // 2013-12-01
$vertrag_date = $d["year"]."-".$d["month"]."-".$d["day"];
$vertrag_date_direction = "<="; // from/to (<= >=)
if($_POST["vertrag_date_direction"] == "from"){
$vertrag_date_direction = ">=";
}
$vertrag_date_type = "vertragsende"; // mysql field
if($_POST["vertrag_date_type"] == "begin"){
$vertrag_date_type = "vertragsbegin";
}
$where[] = "{$vertrag_date_type} {$vertrag_date_direction} '{$vertrag_date}'";
}
$query = $this->build_vertrag_sql($where);
// print_r($query);
$datagrid_json = $this->easyui->select($query,$id=false);
return $datagrid_json;
}
public function build_vertrag_sql($where){
if($where){
$where_sql = implode(" AND ",$where);
}
$query = "
SELECT DISTINCT
v.ID AS id,
IF(f.Rufnummer IS NULL,m.Rufnummer,f.Rufnummer) AS rufnummer,
t.Bezeichnung AS tarif,
ab.Bezeichnung AS anbieter,
n.NutzerBezeichnung AS nutzer,
n.Kostenstelle AS kostenstelle,
DATE_FORMAT(v.Vertragsbegin, '%d.%m.%Y') AS vertragsbegin,
DATE_FORMAT(v.Vertragsende, '%d.%m.%Y') AS vertragsende,
IF(v.kuendigungsDatum is null,
IF(v.Status = 1, '<img height=\"16px\" weight=\"16px\" src=\"" . base_url() . "application/views/img/gelb.png\">',
IF((NOW() BETWEEN DATE_SUB(vertragsende, INTERVAL IF(rv.vorzeitigeVVL IS NOT NULL, rv.vorzeitigeVVL,0) MONTH) AND vertragsende OR v.sleeper IS NOT NULL) = 1,
'<img height=\"16px\" weight=\"16px\" src=\"" . base_url() . "application/views/img/gruen.png\">', null))
, '<img height=\"16px\" weight=\"16px\" src=\"" . base_url() . "application/views/img/grau.png\">') AS anzeige
FROM
vertrag v
LEFT JOIN festnetzvertrag f ON f.VertragsID = v.ID
LEFT JOIN mobilfunkvertrag m ON m.VertragsID = v.ID
LEFT JOIN kundennummern knr ON (m.KundennummerID = knr.ID OR f.KundenNRID = knr.ID)
LEFT JOIN kundenkontonummern kkn ON (m.KundenkontonrID = kkn.ID OR f.KundenkontoID = kkn.ID)
LEFT JOIN tarif t ON t.ID = v.TarifID
LEFT JOIN anbieterneu ab ON ab.ID = t.AnbieterID
LEFT JOIN nutzer n ON n.VertragsID = v.ID
LEFT JOIN rv ON rv.ID = v.RVID
LEFT JOIN tarifart ta ON ta.TarifID = t.ID
LEFT JOIN karten ka ON ka.VertragsID = v.ID
WHERE ".$where_sql."
ORDER BY n.Kostenstelle, v.id
";
return $query;
}