1.361 kez okundu

Php ile formları otomatik kayıt nasıl yapılır

10 10 1.361 kez okundu incelendi

Öncelikle mantık olarak işlem çok basit. Gelen POST verilerini bir fonksiyona alıp bu verileri foreach ile döngüye sokup SQL’ in INSERT INTO komut satırından yararlanmak tüm işimizi görecektir. Yardımcı fonksiyonumuz aşağıdaki gibidir.

<?php

# OTOMATİK KAYIT FONKSİYONU
function otomatik_kaydet($table, $data, $exclude = array()) {

    $fields = $values = array();

    if( !is_array($exclude) ) $exclude = array($exclude);

    foreach( array_keys($data) as $key ) {
        if( !in_array($key, $exclude) ) {
            $fields[] = "`$key`";
            $values[] = "'" . $data[$key] . "'";
        }
    }

    $fields = implode(",", $fields);
    $values = implode(",", $values);

    if( mysql_query("INSERT INTO $table ($fields) VALUES ($values)") ) {
        return array( "mysql_error" => false,
                      "mysql_insert_id" => mysql_insert_id(),
                      "mysql_affected_rows" => mysql_affected_rows(),
                      "mysql_info" => mysql_info()
                    );
    } else {
        return array( "mysql_error" => mysql_error() );
    }


	# kullanım
	# $result = otomatik_kaydet("uyeler", $_POST, $butonlar = array('submit','op','sil'));

}

?>

Fonksiyonu incelediğimizde 3 tane parametre girişi olduğunu görüyoruz. $table yazan değişken hangi tabloya veri girişi yapacağımızı, $data değişkeni hangi verilerin kaydedileceği ($_POST), $exclude ise hangi post verilerinin veritabanına kaydedilmeyeceğini belirteceğimiz parametredir.

Burada dikkat edilmesi gereken çok önemli bir husus var. Form hazırlarken form verilerinizdeki elemanların değeri, veritabanındaki tablo alanlarınızın adıyla aynı olmalı. Örneğin haberler isimli bir tablonuzda haber_baslik adında bir alanınız varsa, form içinde bu veriyi şu şekilde göndermeniz gerekli:

<input name="haber_baslik" type="text" />

Bu form içinde yer alan submit butonu, gizli(hidden) form alanları vs.. gibi (veritabanınızda eşleşmeyen bir eleman) var ise bunları mutlaka EXCLUDE parametresi altında dizi formatında belirtmeniz gerekir ki fonksiyon doğru olarak veritabanına kayıt yapabilsin.

Aynı mantıkla UPDATE fonksiyonu da yazabilirsiniz.

Yorum yap

Barış Ozcan Facebook Sayfasi
Barış Ozcan Twitter