簡體   English   中英

如何從數據庫中獲取值,並在輸入字段中使用和顯示它?

[英]How can I get a Value from my Database and use and show it inside an Input Field?

我想創建兩個輸入字段。 一個將保存一個Int,另一個將保存一個K-0001之類的值。 保存這些輸入字段並重新加載表單后,我想在這些字段中查看它們保存到數據庫中的最后一個值。

我想要這樣做的原因是因為這樣,我只需要更改最后一位數字就可以再次保存表格。 問題是我不知道該怎么做。

更好的解釋示例:
形成:

字段1:第一個值20000。我輸入數字20001。
欄位2:第一個值K-0000。 我輸入文字K-0001。

保存表單並重新加載后,我希望它看起來像這樣。

字段1:顯示值20001。我將其更改為20005。
欄位2:顯示值K-0001。 我將其更改為K-0005。

然后再次:

字段1:顯示值20005。我將其更改為20007。
欄位2:顯示值K-0005。 我將其更改為K-0007。
等等

我想我需要創建一個從數據庫中獲取值的函數。 之后,我需要將它們放入“輸入字段”中,至少這是我的想法。

碼:

add.ctp

div class="customers form large-9 medium-8 columns content">
    <?= $this->Form->create($customer) ?>
    <fieldset>
        <legend><?= __('Neuen Kunden erstellen') ?></legend>
        <?php
            echo $this->Form->control('tour_id', ['options' => $tours, 'empty' => true]);
/*          echo $this->Form->control('order', array('label' => __('Bestellung', true))); */
            echo $this->Form->control('kdnr', array('label' => __('Kundennummer', true)));
            echo $this->Form->control('debinr', array('label' => __('Debitorennummer', true)));
            echo $this->Form->control('anrede', array('label' => __('Anrede', true)));
            echo $this->Form->control('name', array('label' => __('Name', true)));
            echo $this->Form->control('strasse', array('label' => __('Straße', true)));
            echo $this->Form->control('plz', array('label' => __('PLZ', true)));
            echo $this->Form->control('ort', array('label' => __('Ort', true)));
            echo $this->Form->control('tel', array('label' => __('Telefon', true)));
            echo $this->Form->control('kontonummer', array('label' => __('Kontonummer', true)));
            echo $this->Form->control('bankleitzahl', array('label' => __('Bankleitzahl', true)));
            echo $this->Form->control('lastschrift', array('label' => __('Lastschrift', true)));            
            echo $this->Form->control('detail', array('label' => __('Weitere Details', true)));
            echo $this->Form->control('betreuer_anrede', array('label' => __('Betreuer Anrede', true)));
            echo $this->Form->control('betreuer_name', array('label' => __('Betreuer Name', true)));
            echo $this->Form->control('betreuer_strasse', array('label' => __('Betreuer Straße', true)));
            echo $this->Form->control('betreuer_plz', array('label' => __('Betreuer PLZ', true)));
            echo $this->Form->control('betreuer_ort', array('label' => __('Betreuer Ort', true)));
            echo $this->Form->control('betreuer_on_bill', array('label' => __('Betreuer soll auf der Rechnung stehen', true)));
        ?>
    </fieldset>
    <?= $this->Form->button(__('Bestätigen')) ?>
    <?= $this->Form->end() ?>
</div>


CustomerTable.php

class CustomersTable extends Table
{
    /**
     * Initialize method
     *
     * @param array $config The configuration for the Table.
     * @return void
     */
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->setTable('customers');
        $this->setDisplayField('name');
        $this->setPrimaryKey('id');

        $this->belongsTo('Tours', [
            'foreignKey' => 'tour_id'
        ]);
        $this->hasMany('Bills', [
            'foreignKey' => 'customer_id'
        ]);
        $this->hasMany('Orders', [
            'foreignKey' => 'customer_id'
        ]);
    }

    /**
     * Default validation rules.
     *
     * @param \Cake\Validation\Validator $validator Validator instance.
     * @return \Cake\Validation\Validator
     */
    public function validationDefault(Validator $validator)
    {
        $validator
            ->integer('id')
            ->allowEmptyString('id', 'create');

        $validator
            ->integer('order')
            ->allowEmptyString('order');

        $validator
            ->scalar('kdnr')
            ->maxLength('kdnr', 45)
            ->allowEmptyString('kdnr');

        $validator
            ->scalar('debinr')
            ->maxLength('debinr', 31)
            ->allowEmptyString('debinr');

        $validator
            ->scalar('anrede')
            ->maxLength('anrede', 45)
            ->allowEmptyString('anrede');

        $validator
            ->scalar('name')
            ->maxLength('name', 45)
            ->allowEmptyString('name');

        $validator
            ->scalar('strasse')
            ->maxLength('strasse', 45)
            ->allowEmptyString('strasse');

        $validator
            ->integer('plz')
            ->allowEmptyString('plz');

        $validator
            ->scalar('ort')
            ->maxLength('ort', 45)
            ->allowEmptyString('ort');

        $validator
            ->scalar('tel')
            ->maxLength('tel', 45)
            ->allowEmptyString('tel');

        $validator
            ->boolean('lastschrift')
            ->allowEmptyString('lastschrift');

        $validator
            ->scalar('kontonummer')
            ->maxLength('kontonummer', 32)
            ->allowEmptyString('kontonummer');

        $validator
            ->integer('bankleitzahl')
            ->maxLength('bankleitzahl', 32)
            ->allowEmptyString('bankleitzahl');

        $validator
            ->scalar('detail')
            ->allowEmptyString('detail');

        $validator
            ->scalar('betreuer_anrede')
            ->maxLength('betreuer_anrede', 45)
            ->allowEmptyString('betreuer_anrede');

        $validator
            ->scalar('betreuer_name')
            ->maxLength('betreuer_name', 45)
            ->allowEmptyString('betreuer_name');

        $validator
            ->scalar('betreuer_strasse')
            ->maxLength('betreuer_strasse', 45)
            ->allowEmptyString('betreuer_strasse');

        $validator
            ->integer('betreuer_plz')
            ->allowEmptyString('betreuer_plz');

        $validator
            ->scalar('betreuer_ort')
            ->maxLength('betreuer_ort', 45)
            ->allowEmptyString('betreuer_ort');

        $validator
            ->boolean('betreuer_on_bill')
            ->allowEmptyString('betreuer_on_bill');

        return $validator;
    }

    /**
     * Returns a rules checker object that will be used for validating
     * application integrity.
     *
     * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
     * @return \Cake\ORM\RulesChecker
     */
    public function buildRules(RulesChecker $rules)
    {
        $rules->add($rules->existsIn(['tour_id'], 'Tours'));

        return $rules;
    }
}


我希望我能很好地解釋我的目標,並且不要忘記一些事情。 我仍在學習,因此,如果我放棄某些內容,請告訴我,然后我將編輯我的問題。

找到我的解決方案!

我在Controller內創建了一個函數,以獲取所需的值:

CustomersController.php

$query = $this->Customers->find('list', [
            'order' => ['Customers.kdnr' => 'DESC'],
            'valueField' => 'kdnr',
            'limit' => 1]);

        $kdnr = $query->first();
        $kdnr++;

        $query = $this->Customers->find('list', [
            'order' => ['Customers.debinr' => 'DESC'],
            'valueField' => 'debinr',
            'limit' => 1]);

        $debinr = $query->first();
        $debinr++;

        $this->set(compact('customer', 'tours', 'kdnr', 'debinr'));

之后,我只需要將$ kdnr和$ debinr添加到ctp中即可。

add.ctp

echo $this->Form->control('kdnr',['value' => $kdnr]);
echo $this->Form->control('debinr',['value' => $debinr]);

那就是我要做的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM