Yii Framework Forum: Formu Post Etmeden Girilen Değerin Daha Önce Kaydolup Olmadığını Ajax Ile Nasıl Kontrol Edebiliriz - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Formu Post Etmeden Girilen Değerin Daha Önce Kaydolup Olmadığını Ajax Ile Nasıl Kontrol Edebiliriz

#1 User is offline   Nahit@ 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 21-June 14
  • Location:Adana

Posted 02 July 2014 - 07:46 PM

Arkadaşlar merhabalar. Uygulamamda yer alan üye formunda üye no kısmı mevcut ve değer manuel olarak giriliyor. Bu alan veri tabanında benzersiz kimliğe sahip. Aynı üye numarası ile kaydolmaya çalışıldığında hata veriyor sistem. Ben şu şekilde bir şey yapmak istiyorum. Formu post etmeden önce girilen üye numarasının veritabında mevcut olup olmadığını kontrol ettirmek istiyorum ajax yöntemiyle veya sizin önerdiğiniz başka bir yol varsa o şekilde. Eğer aynı üye no daha önce eklenmişse bunu kullanıcıya uyarı mesajı olarak göstermek istiyorum. Nasıl yaparım acaba? Yol gösterirseniz sevinirim. İyi çalışmalar.
0

#2 User is offline   Umut Gundogdu 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 104
  • Joined: 27-November 08
  • Location:Ankara

Posted 03 July 2014 - 02:10 AM

üye no girildikten sonra onblur ile ajax i çalıştırıp kontrol yaparsın. submit butonunuda buna göre enable disable edersin ve uyarı mesajını verirsin
0

#3 User is offline   Nahit@ 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 21-June 14
  • Location:Adana

Posted 03 July 2014 - 04:33 AM

Merhabalar @Umut Gundogdu ilgin için teşekürler. Yii'de yeni olduğum için ve özellikle söz diziminini yeni öğrendiğim için kodla örneklendirmen mümkün mü acaca.
0

#4 User is offline   McQueen 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 185
  • Joined: 13-August 11
  • Location:Istanbul/Turkey

Posted 03 July 2014 - 11:29 AM

Her ne kadar ajaxla üye no kontrolü yapılsa bile, insert işlemi yapılmadan önce mutlaka tekrar kontorolünün yapılması gerekir.

Konsolu tekil kullanıcı kullanacaksa sorun yok tabi ama birden fazla kişinin aynı anda üye create etme ihtimali varsa üye numaralarında çakışma olabilir.
0

#5 User is offline   Nahit@ 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 21-June 14
  • Location:Adana

Posted 03 July 2014 - 04:40 PM

View PostMcQueen, on 03 July 2014 - 11:29 AM, said:

Her ne kadar ajaxla üye no kontrolü yapılsa bile, insert işlemi yapılmadan önce mutlaka tekrar kontorolünün yapılması gerekir.

Konsolu tekil kullanıcı kullanacaksa sorun yok tabi ama birden fazla kişinin aynı anda üye create etme ihtimali varsa üye numaralarında çakışma olabilir.


Konsolu tekil kullanıcı kullanacak ama her ihtimale karşı aynı üye no ile üye yapılmaya çalışılmasının önüne geçmek istiyorum.
0

#6 User is offline   McQueen 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 185
  • Joined: 13-August 11
  • Location:Istanbul/Turkey

Posted 07 July 2014 - 09:21 AM

View PostNahit@, on 03 July 2014 - 04:40 PM, said:

Konsolu tekil kullanıcı kullanacak ama her ihtimale karşı aynı üye no ile üye yapılmaya çalışılmasının önüne geçmek istiyorum.


O zaman sana tavsiyem ajax işine hiç girme.

postunu yap... aynı üye no varsa save işlemini yapma... statik bir error ekle. form dolu olarak (son girilen değerlerle) yeniden ekrana gelecektir.

örneğin

if(isset($_POST['members'])){
  $model = new Members();
  $model->attributes = $_POST['members'];

  $check = Members::model()->findbyAttributes(array('memberId'=>$model->memberId));
  if($check){
      $this->addError('memberId', 'Bu üye numarası daha önceden başka bir üyeye verilmiş...')
  }
  else{
      $model->save();
  }

}

0

#7 User is offline   Nahit@ 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 21-June 14
  • Location:Adana

Posted 08 July 2014 - 07:21 AM

View PostMcQueen, on 07 July 2014 - 09:21 AM, said:

O zaman sana tavsiyem ajax işine hiç girme.

postunu yap... aynı üye no varsa save işlemini yapma... statik bir error ekle. form dolu olarak (son girilen değerlerle) yeniden ekrana gelecektir.

örneğin

if(isset($_POST['members'])){
  $model = new Members();
  $model->attributes = $_POST['members'];

  $check = Members::model()->findbyAttributes(array('memberId'=>$model->memberId));
  if($check){
      $this->addError('memberId', 'Bu üye numarası daha önceden başka bir üyeye verilmiş...')
  }
  else{
      $model->save();
  }

}



Yukarıdaki yapıyı kodlarıma uyguladım. Ancak hata veriyor sanırım bir fonksiyon oluşturmak gerekiyor. Aldığım hata şu şekilde
UyeController and its behaviors do not have a method or closure named "addError".

0

#8 User is offline   McQueen 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 185
  • Joined: 13-August 11
  • Location:Istanbul/Turkey

Posted 08 July 2014 - 07:32 AM

View PostNahit@, on 08 July 2014 - 07:21 AM, said:

Yukarıdaki yapıyı kodlarıma uyguladım. Ancak hata veriyor sanırım bir fonksiyon oluşturmak gerekiyor. Aldığım hata şu şekilde
UyeController and its behaviors do not have a method or closure named "addError".



$this->addError('memberId', 'Bu üye numarası daha önceden başka bir üyeye verilmiş...')


yerine


$model->addError('memberId', 'Bu üye numarası daha önceden başka bir üyeye verilmiş...')


deneyebilirsin...
0

#9 User is offline   Nahit@ 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 21-June 14
  • Location:Adana

Posted 08 July 2014 - 08:30 AM

View PostMcQueen, on 08 July 2014 - 07:32 AM, said:

$this->addError('memberId', 'Bu üye numarası daha önceden başka bir üyeye verilmiş...')


yerine


$model->addError('memberId', 'Bu üye numarası daha önceden başka bir üyeye verilmiş...')


deneyebilirsin...

İlgin için teşekkürler. Yukarıdaki ifadeyi değiştirdim. Hata vermiyor artık ancak bu defada aynı üye numarasıyla üye kaydı yapmaya çalışıyorum formu post ediyorum ama bembeyaz bir sayfa çıkıyor herhangi bir şey yok ekranda.
0

#10 User is offline   McQueen 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 185
  • Joined: 13-August 11
  • Location:Istanbul/Turkey

Posted 08 July 2014 - 08:39 AM

View PostNahit@, on 08 July 2014 - 08:30 AM, said:

İlgin için teşekkürler. Yukarıdaki ifadeyi değiştirdim. Hata vermiyor artık ancak bu defada aynı üye numarasıyla üye kaydı yapmaya çalışıyorum formu post ediyorum ama bembeyaz bir sayfa çıkıyor herhangi bir şey yok ekranda.


action codelarını yapıştırır mısın?
0

#11 User is offline   Nahit@ 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 21-June 14
  • Location:Adana

Posted 08 July 2014 - 09:13 AM

View PostMcQueen, on 08 July 2014 - 08:39 AM, said:

action codelarını yapıştırır mısın?

	public function actionEkle()
	{

        $uyeler = new Uyeler ; // uyeler modelimizi dahil ettik
        if(isset($_POST['ekle']))
        {
           /*echo '<pre>';
            var_dump($_POST);
            exit;*/
            // isset ile formdan gelen verileri kontrol ediyoruz
            $uyeler->uye_id = $_POST['uye_id'];
            $uyeler->adi = $_POST['adi'];
            $uyeler->soyadi = $_POST['soyadi'];
            $uyeler->dogum_yeri = $_POST['dogum_yeri'];
            $uyeler->dogum_tarihi = $_POST['dogum_tarihi'];
            $uyeler->nufus_ili = $_POST['Iller']['ad'];
            $uyeler->nufus_ilcesi = $_POST['Ilceler'];
            $uyeler->anne_adi = $_POST['anne_adi'];
            $uyeler->baba_adi = $_POST['baba_adi'];
            $uyeler->tel = $_POST['tel'];
            $uyeler->e_posta = $_POST['e_posta'];
            $uyeler->kan_grubu = $_POST['kan_grubu'];
            $uyeler->cinsiyet = $_POST['cinsiyet'];
            $uyeler->adres = $_POST['adres'];
            $uyeler->adres_ili = $_POST['Iller']['ilID'];
            $uyeler->adres_ilcesi = $_POST['adresIlceler'];
            $uyeler->uye_gorevi = $_POST['uye_gorevi'];
            $uyeler->uye_kayit_tarihi = $_POST['uye_kayit_tarihi'];
            $uyeler->uye_durumu = $_POST['uye_durumu'];

            if (isset($_POST['uye_id']))
            {
                $uyeler->attributes = $_POST['uye_id'];
                $kontrol=Uyeler::model()->findAllByAttributes(array('uye_id'=> $uyeler->uye_id));

                if ($kontrol)
                {
                    $uyeler->addError('uye_id', 'Bu üye numarası daha önceden başka bir üyeye verilmiş...');
                }

                else {



                    if($uyeler->save(true))
                    {
                        // üye kaydı başarılıysa
                        $this->render('mesaj',Yii::app()->user->setFlash('success', "Üye Başarı ile eklendi."));


                    }

                    else
                    {
                        $this->render('mesaj',Yii::app()->user->setFlash('error', "Hata! Üye Kaydı yapılamadı."));


                    }
                }
            }



        }

        else

        {

            $iller = new Iller();
            $this->render('ekle', array('iller'=>$iller));

        }

	}

0

#12 User is offline   McQueen 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 185
  • Joined: 13-August 11
  • Location:Istanbul/Turkey

Posted 08 July 2014 - 09:21 AM

Action 'a baktığımda işi epey uzattığını görüyorum. Fazla vaktim olmadığı için hızlıca bir göz atma fırsatım oldu. bu akış ile eğer save işlemi yapılmazsa yeni render işleminde form boş gelecek ve değerler yeniden doldurulmak zorunda kalınacak...

view'inide rica etsem :)
0

#13 User is offline   Nahit@ 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 21-June 14
  • Location:Adana

Posted 08 July 2014 - 09:24 AM

View PostMcQueen, on 08 July 2014 - 09:21 AM, said:

Action 'a baktığımda işi epey uzattığını görüyorum. Fazla vaktim olmadığı için hızlıca bir göz atma fırsatım oldu. bu akış ile eğer save işlemi yapılmazsa yeni render işleminde form boş gelecek ve değerler yeniden doldurulmak zorunda kalınacak...

view'inide rica etsem :)

ekle.php

<?php
/* @var $this UyelerController */
/* @var $model Uyeler */

?>

<?php
echo "<div style='width:120px; float: left'>";
$chtml=new CHtml;
echo $chtml::beginForm(array('uye/ekle'),'post');
echo "Üye No:";
echo "<br/>";
echo $chtml::textField('uye_id','',array(
    'ajax' => array(
        'type'=>'POST',
        'url'=>CController::createUrl('Uyenokontrol'),
        'data'=> array('uye_no'=>'js:this.value'),
        'update'=>'#uye_no_kontrol',


    )
));

echo "<br/>";
echo "Adı:";echo "<br/>";
echo $chtml::textField ('adi');
echo "<br/>";
echo "Soyadı:";
echo "<br/>";
echo $chtml::textField ('soyadi');
echo "<br/>";
echo "Doğum Yeri";
echo "<br/>";
echo $chtml::textField ('dogum_yeri');
echo "<br/>";
echo "Doğum Tarihi:";
echo "<br/>";
// tarih seçmek için
$this->widget('zii.widgets.jui.CJuiDatePicker',array(
    'name'=>'dogum_tarihi',
    'language' => 'tr',
    'value'=>date('Y-m-d'),
    // additional javascript options for the date picker plugin
    'options'=>array(
        'showAnim'=>'fold',
        'dateFormat' => 'yy-mm-dd', //save to db format
       // 'altFormat' => 'dd-mm-yy', // show to user format
        'changeMonth' => 'true', // ay değiştirme
        'changeYear' => 'true', // yıl değiştirme
        'showOtherMonths'=>true,// Show Other month in jquery
        'selectOtherMonths'=>true,// ay seçebilme
        //'showButtonPanel'=>true, // altta kapat ve bugün butonlarını oluşturuyor.
        'yearRange'=>'1900:2099', // yıl aralığı
        'showOn'=>'button', // 'focus', 'button', 'both' // butona (ikon) tıklandığında ajandanın açılması için
        'buttonImage'=>Yii::app()->request->baseUrl.'/images/calendar.png', // ikonun yolu
        'buttonImageOnly'=>true, // buton kısmında sadece resmin görünmesini sağlıyor. False olsa butun görünür ve butonun üstünde ikon görünür
    ),
    'htmlOptions'=>array(
        'style'=>'width:100px;vertical-align:top'
    ),
));
echo "<br/>";
echo "Nüfusa Bağlı Olduğu İl:";
echo "<br/>";

echo $chtml::activeDropDownList($iller,'ad',CHtml::listData(Iller::model()->findAll(
        array('order' => 'ilID')),'ilID','ad'),
    array(
        'prompt'=>'İl Seçiniz',
        'ajax'=>array(
            'type'=>'POST',
            'url' => CController::createUrl('Ilcesec'),
            'data'=> array('ilID'=>'js:this.value'),
            'update'=>'#Ilceler',))
);

// İlçelerin listesini dropdownlistte gösteriyor.
echo "<br/>";
echo "Nüfusa Bağlı Olduğu İlçe:";
echo "<br/>";
echo $chtml::dropDownList('Ilceler','', array(),
    array('prompt'=>'İlçe Seçiniz')); // İlçelerin listesini dropdownlistte gösteriyor.
echo "<br/>";
echo "Anne Adı:";
echo "<br/>";
echo $chtml::textField ('anne_adi');
echo "<br/>";
echo "Baba Adı:";
echo "<br/>";
echo $chtml::textField ('baba_adi');
echo "<br/>";
echo "</div>";
echo "<div style='width:150px; margin-left: 100px; float: left'>";
echo "Telefon";
echo "<br/>";
echo $chtml::textField ('tel');
echo "<br/>";
echo "E-posta";
echo "<br/>";
echo $chtml::textField ('e_posta');
echo "Kan Grubu";
echo "<br/>";
echo $chtml::DropDownList('kan_grubu','',array('1'=>'A Rh (+)','2'=>'A Rh (-)','3'=>'B Rh (+)','4'=>'B Rh (-)','5'=>'AB Rh (+)','6'=>'AB Rh (-)','7'=>'0 Rh (+)','8'=>'0 Rh (-)'),array('empty' =>('Kan Grubu Seçiniz') )); // Kan Grubu listesini dropdownlistte gösteriyor.
echo "<br/>";
echo "Cinsiyet:";
echo "<br/>";
echo $chtml::DropDownList('cinsiyet','',array('1'=>'Erkek','2'=>'Kadın'),array('empty' =>('Cinsiyet Seçiniz') )); // Cinsiyet listesini dropdownlistte gösteriyor.
echo "<br/>";
echo "Adres:";
echo "<br/>";
echo $chtml::textArea('adres');
echo "<br/>";
echo "Adres İli";
echo "<br/>";
// adres iline ait dropdownlist
echo $chtml::activeDropDownList($iller,'ilID',CHtml::listData(Iller::model()->findAll(
        array('order' => 'ilID')),'ilID','ad'),
    array(
        'prompt'=>'İl Seçiniz',
        'ajax'=>array(
            'type'=>'POST',
            'url' => CController::createUrl('Ilcesec'),
            'data'=> array('ilID'=>'js:this.value'),
            'update'=>'#adresIlceler',))
);
echo "<br/>";
echo "Adres İlçesi:";
echo "<br/>";
echo $chtml::dropDownList('adresIlceler','', array(),
array('prompt'=>'İlçe Seçiniz')); // Adres İlçelerin listesini dropdownlistte gösteriyor.
echo "<br/>";
echo "Üye Görevi:";
echo "<br/>";
echo $chtml::DropDownList('uye_gorevi','',array('1'=>'Üye','2'=>'Başkan','3'=>'Başkan Yardımcısı','4'=>'Muhasip','5'=>'Sekreter','6'=>'Yedek Üye'),array('empty' =>('Üyelik Türü Seçiniz') ,'options' => array(1 => array('selected' => 'selected')) )); // Üye görevi gösteriyor.
echo "<br/>";
echo "Üyelik Tarihi:";
echo "<br/>";
// tarih seçmek için
$this->widget('zii.widgets.jui.CJuiDatePicker',array(
    'name'=>'uye_kayit_tarihi',
    'language' => 'tr',
    'value'=>date('Y-m-d'),
    // additional javascript options for the date picker plugin
    'options'=>array(
        'showAnim'=>'fold',
        'dateFormat' => 'yy-mm-dd', //save to db format
        // 'altFormat' => 'dd-mm-yy', // show to user format
        'changeMonth' => 'true', // ay değiştirme
        'changeYear' => 'true', // yıl değiştirme
        'showOtherMonths'=>true,// Show Other month in jquery
        'selectOtherMonths'=>true,// ay seçebilme
        //'showButtonPanel'=>true, // altta kapat ve bugün butonlarını oluşturuyor.
        'yearRange'=>'1900:2099', // yıl aralığı
        'showOn'=>'button', // 'focus', 'button', 'both'
        'buttonImage'=>Yii::app()->request->baseUrl.'/images/calendar.png',
        'buttonImageOnly'=>true,
    ),
    'htmlOptions'=>array(
        'style'=>'width:100px;vertical-align:top'
    ),
));
echo "<br/>";
echo "Üyelik Durumu:";
echo "<br/>";
echo $chtml::DropDownList('uye_durumu','',array('1'=>'Aktif','2'=>'Pasif'),array('empty' =>('Üyelik Durumu Seçiniz') ,'options' => array(1 => array('selected' => 'selected')) )); // Üyelik durumu dropdownlistte gösteriyor. ",'options' => array(0 => array('selected' => 'selected'))" istediğin value'nin seçili gelmesini sağlıyor.
echo "<br/>";
echo $chtml::submitButton('Üye Ekle',array('name'=>'ekle'));
echo $chtml::resetButton('İptal',array('name'=>'iptal'));
echo "</div>";
echo "<div style='width: 500px; height: 400px; float: right; background-color: #C9E0ED;'>";
echo "denme";
echo "</div>";
?>



0

#14 User is offline   McQueen 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 185
  • Joined: 13-August 11
  • Location:Istanbul/Turkey

Posted 08 July 2014 - 09:30 AM

işi chtml ile yapmakla uzatmışsın.

gii üzerinden create edilen formları kullanman hem view tarafında hemde action tarafında işini kolaylaştırır.

Vaktim olduğunda örnek bir toparlama kaynağı gönderirim.
0

#15 User is offline   Nahit@ 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 21-June 14
  • Location:Adana

Posted 08 July 2014 - 09:34 AM

View PostMcQueen, on 08 July 2014 - 09:30 AM, said:

işi chtml ile yapmakla uzatmışsın.

gii üzerinden create edilen formları kullanman hem view tarafında hemde action tarafında işini kolaylaştırır.

Vaktim olduğunda örnek bir toparlama kaynağı gönderirim.


Yii'de yeni olduğum için bir çok şeye hakim değilim yii adına. Form'u CActiveForm'a döndereceğim. Becerebilirsem form post edildiğinde mecburi giriş alanlarının dolumu boş mu dolumu onu kontrol ettirmek istiyorum. Örnekleri bu yönde verirsen sevinirim.
0

#16 User is offline   Berfin 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 14-January 17

Posted 14 January 2017 - 03:20 PM

Merhaba, php ye dair cok birsey bilmiyorum. Yapacagim bir odevde bir formu post etmeden datasini sifreleyip gondermem lazim. post etmeden once sifrelemeyi nasil yapabilirim?Bu form ayni zamanda onsubmit uzerinde sifreleme fonksiyonunu da cagiriyor.php tarafinda da if(isset($_POST["form"])) denedigim zaman bunun tanimlanmamis oldugu hatasini aliyorum. Fikri olan birisi varsa yardimci olursa cok ssevinirim.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users