Deutsch| English
  #1  
Alt 23.03.2011, 16:05
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 164
Standard Maildomains eine CLients

Hallo,

ich baue gerade ien plugin und habe eine Seite erstellt die mir alle Clients listet. wenn ich auf einen Client klicke komme ich in eine Übersicht in der ich mir schon einige Daten des Client anzeigen lassen kann, alle aus der Tabelle client.

Jetzt möchte ich mir noch alle Emaildomain dieses Clients an zeigen lassen, wie kann ich das realisieren?
Muss ich diese Anpassungen in der tform datei macchen?

So siht meine datenblatt.tform.php aus, das item "maildomain" war meine Idee wie es gehen könnte, leider ohne erfolg.

PHP-Code:
<?php

// Title of the form.
$form['title']             = 'Datenblatt';
$form['description']     = '';
$form['name']             = 'Datenblatt';
$form['action']            = 'datenblatt_edit.php';
$form['db_table']        = 'client';
$form['db_table_idx']    = 'client_id';
$form['db_history']        = 'no'
$form['tab_default']    = 'Kunde';
$form['list_default']    = 'datenblatt_list.php';
$form['auth']            = 'no'


$form['auth_preset']['userid']  = 0;
$form['auth_preset']['groupid'] = 0;   
$form['auth_preset']['perm_user'] = 'riud';
$form['auth_preset']['perm_group'] = 'riud';
$form['auth_preset']['perm_other'] = ''

// The form definition of the first tab. The name of the tab is called 'message'. We refer
// to this name in the $form['tab_default'] setting above.
$form['tabs']['Kunde'] = array(
    
'title'     => 'Kunde'// Title of the Tab
    
'width'     => 100,       // Tab width
    
'template'     => 'templates/datenblatt_edit.htm'// Template file name
    
'fields'     => array(

        
//*** BEGIN Datatable columns **********************************
         
'client_id' => array (
            
'datatype'    => 'VARCHAR',
            
'formtype'    => 'TEXT',
            
'default'    => '',
            
'value'        => '',
            
'separator'    => '',
            
'width'        => '30',
            
'maxlength'    => '255',
            
'rows'        => '',
                        
'datasource' => array(
                    
'type' => 'SQL',
                    
'querystring' => 'SELECT client_id, company_name FROM client ORDER BY client_id;',
                    
'keyfield'    => 'client_id',
                    
'valuefield'  => 'company_name'
                                  
),
            
'cols'        => ''
        
),
       
'company_name' => array (
            
'datatype'    => 'VARCHAR',
            
'formtype'    => 'TEXT',
            
'default'    => '',
            
'value'        => '',
            
'separator'    => '',
            
'width'        => '30',
            
'maxlength'    => '255',
            
'rows'        => '',
            
'cols'        => ''
        
),
        
'contact_name' => array (
            
'datatype'    => 'VARCHAR',
            
'formtype'    => 'TEXT',
            
'default'    => '',
            
'value'        => '',
            
'separator'    => '',
            
'width'        => '30',
            
'maxlength'    => '255',
            
'rows'        => '',
            
'cols'        => ''
        
),
        
'customer_no' => array (
            
'datatype'    => 'VARCHAR',
            
'formtype'    => 'TEXT',
            
'default'    => '',
            
'value'        => '',
            
'separator'    => '',
            
'width'        => '30',
            
'maxlength'    => '255',
            
'rows'        => '',
            
'cols'        => ''
        
),
        
'maildomain' => array (
            
'datatype'    => 'VARCHAR',
            
'formtype'    => 'TEXT',
            
'default'    => '',
            
'value'        => '',
            
'separator'    => '',
            
'width'        => '30',
            
'maxlength'    => '255',
            
'rows'        => '',
           
'datasource' => array(
                     
'type' => 'SQL',
                       
'querystring' => '      SELECT m.domain, u.client_id
                                    FROM mail_domain m, sys_user u, client c
                                    WHERE m.sys_groupid = u.default_group
                                    AND u.client_id = c.client_id
                                    AND c.client_id = f,
                        '
keyfield'    => '',
                        '
valuefield'  => ''
                                      ),
            '
cols'        => '
        
)
    
##################################
    # END Datatable fields
    ##################################

        //*** END Datatable columns **********************************
    
)
);
?>

danke
Mit Zitat antworten
  #2  
Alt 23.03.2011, 16:33
Administrator
 
Registriert seit: 08.08.2007
Beiträge: 8.817
Standard

Du hast vergesen das keyfield uns das valuefield zu setzen, ohne diese Angaben können keine Werte angezeigt werden.
Mit Zitat antworten
  #3  
Alt 23.03.2011, 16:36
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 164
Standard

Hallo,


ich hatte bereits versucht dort m.domain oder nur domain einzutragen, leider ist das formular immer noch leer.
Ich würde die einzelnen maildomains dann in eine simple Tabelle packen wollen.

Geändert von Rupertt (23.03.2011 um 16:44 Uhr).
Mit Zitat antworten
  #4  
Alt 23.03.2011, 17:25
Administrator
 
Registriert seit: 08.08.2007
Beiträge: 8.817
Standard

Funktioniert denn die Query:

SELECT m.domain, u.client_id
FROM mail_domain m, sys_user u, client c
WHERE m.sys_groupid = u.default_group
AND u.client_id = c.client_id
AND c.client_id = f

wenn Du sie in phpmyadmin ausführst? Was idet denn z.B. die Variable f, die scheint ja nirgends gesetzt zu werden.
Mit Zitat antworten
  #5  
Alt 24.03.2011, 08:10
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 164
Standard

ups sorry.

Das f war ein test um die client ID zu übergeben.
Ich frag mal so rum:

Wie würdest du es gestalten wenn du alle emaildomains von Client XY gelistet haben möchtest, ich habe ja schon die client_id.(im Sinne des ispconfig frameworks natürlich.)


danke
Mit Zitat antworten
  #6  
Alt 24.03.2011, 11:26
Administrator
 
Registriert seit: 08.08.2007
Beiträge: 8.817
Standard

Jeder Client hat seine eigene Gruppe, Du kannst also einfach nach der sys_groupid eingrenzen.

SELECT domain_id, domain FROM mail_domain WHERE sys_groupid = $sys_groupid

Du musst antürlich daran denken, dass Du nicht ohne weiteres auf die ID des anderen select Feldes zugreiufen kannst, denn Du weißt ja nicht ob es im Browser geändert wurde. Du müsstest also bei Änderungen der clientID ggf. das Formular neu laden oder aber die Feldinhalte per Ajax anpassen.
Mit Zitat antworten
  #7  
Alt 24.03.2011, 11:34
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 164
Standard

und wie genau würde ich das in ein ispconfig Modul einbauen,
ich versuche schon in dem template eine php tag zu machen und dort manuelle queries, aber dann lädt die seite nicht.
Die funktion "$MAILDOMAINS = $app->db->queryAllRecords($sql);" verstehe ich noch nicht ganz, ich könnte ka die DB connection nutzen die ispconfig eh schon offen hat.
Mit Zitat antworten
  #8  
Alt 24.03.2011, 11:40
Administrator
 
Registriert seit: 08.08.2007
Beiträge: 8.817
Standard

Zitat:
ich versuche schon in dem template eine php tag zu machen und dort manuelle queries, aber dann lädt die seite nicht.
Nee, so geht das nicht. Niemals PHP code in ein Template einbauen! Schau Dir z.B. mal den Server selector des web_domain Formulares an, dort ist es per Ajax gelöst. Alternativ kannst Du natürlich auch das Formular beim onChange Event des Optionsfeldes neu laden.

Zitat:
Die funktion "$MAILDOMAINS = $app->db->queryAllRecords($sql);" verstehe ich noch nicht ganz, ich könnte ka die DB connection nutzen die ispconfig eh schon offen hat.
Du nutzt doch damit die offene DB connection von ISPConfig. $app->db ist ein Objekt der Datenbankverbindung und queryAllRecords ist die Funktion dieser bestehenden mysql Verbindung die Dir alle Einträge zu der übergebenen SQL Abfrage als Array zurück gibt.
Mit Zitat antworten
  #9  
Alt 24.03.2011, 12:15
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 164
Standard

danke für die Hinweise, ich komme schon etwas weiter.
Ich habe jetzt ein onshow function genbaut:

PHP-Code:
function onShow()
    {
        global 
$app$conf;

          
$sql "SELECT m.domain, u.client_id
                FROM mail_domain m, sys_user u, client c
                WHERE m.sys_groupid = u.default_group
                AND u.client_id = c.client_id
                AND u.client_id = $client_id"
;
        
$maildomains $app->db->queryAllRecords($sql);
        
var_dump($maildomains);

        
parent::onShow();
    } 
Wie komme ich denn an die client_id die ich in der datei datenblatt.tform.php definiert habe?
In dem template kann ich die ja per {tmpl_var name='client_id'} ansprechen.

PHP-Code:
$form['tabs']['Kunde'] = array(
    
'title'     => 'Kunde'// Title of the Tab
    
'width'     => 100,       // Tab width
    
'template'     => 'templates/datenblatt_edit.htm'// Template file name
    
'fields'     => array(

        
//*** BEGIN Datatable columns **********************************
         
'client_id' => array (
            
'datatype'    => 'VARCHAR',
            
'formtype'    => 'TEXT',
            
'default'    => '',
            
'value'        => '',
            
'separator'    => '',
            
'width'        => '30',
            
'maxlength'    => '255',
            
'rows'        => '',
                        
'datasource' => array(
                    
'type' => 'SQL',
                    
'querystring' => 'SELECT client_id, company_name FROM client ORDER BY client_id;',
                    
'keyfield'    => 'client_id',
                    
'valuefield'  => 'company_name'
                                  
),
            
'cols'        => ''
        
),
.... 

danke
Mit Zitat antworten
  #10  
Alt 24.03.2011, 12:23
Administrator
 
Registriert seit: 08.08.2007
Beiträge: 8.817
Standard

Alle per post Request übergebenen Variablen stehen im Array $this->dataRecord zur Verfügung.
Mit Zitat antworten
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an



Alle Zeitangaben in WEZ +2. Es ist jetzt 14:06 Uhr.


Powered by vBulletin® Version 3.8.1 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.6.0