Formları otomatik kaydetme

Bu bölümde PHP'ye kadar ulaşan verilerin tek bir yardımcı fonksiyonla nasıl veritabanına kaydedeceğimizi göreceksiniz.

Ö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.

Herhangi bir sorusu olan arkadaşlar yorum yazabilir.
Kolay gelsin başarılar.
  • Etiketler;
Abdullah Tekin
PHP, Ajax ve JQuery'e son derece hakim bir programcı olarak bazı firma ve kuruluşlara aşağıdaki konular dahilinde freelance olarak hizmet veriyor: - Daima web standartlarını, SEO (Arama Motoru Optimizasyonu) ve güvenlik önlemlerini içeren projeler gerçekleştirmek, - Tasarımı yapılmış web sitelerini kusursuz bir şekilde web'e uyarlamak, - Özgün ve kodları kendisi tarafından yazılabilen PHP+Jquery+Ajax destekli modüller hazırlamak - Web stratejileri oluşturulması, - Web dahilinde sistemler kurmak, - Kontrol panelleri hazırlamak, - Hızlı, kullanılabilir, erişilir ve güvenliği üst düzeyde olabilecek web siteleri alt yapısını oluşturmak. İçerik Yönetim Sistemi (CMS), Haber Sistemi, E-Ticaret ve Okul Yönetim projelerini içine alan PHP konusundaki birikimlerini burada Sanalkurs.net üyelerine aktarıyor ve aynı zamanda Sanalkurs'un yazılım altyapısını şu an en üst düzeye taşımak için gece gündüz kodlarla boğuşuyor.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Php de biraz yeni oldugum icin tam vakif olamadim konuya simdi burada otomatik kayittan kasit acaba forumu girerken mi otomatik kayit ediyor yani soyle siz basligi yazdiniz tab la metin kismina gectiniz kayit edilmesi mi yoksa farkli bir sey mi? kusura bakmayin belki salakca gelmis olabilir sorum da anlamadigim icin sordum. tesekkur ederim. Not: Klavyede TR karakter olmadigi icin aliskanliktan klavyeyi cevirmden yazmisim
Hayır sanırım yanlış anlaşılmış. Şöyle: siz HTML olarak formunuzu hazırlıyosunuz. Buradaki form elemanları yalnız yukarda da önemle vurguladığım gibi veritabanındaki alanlarınızla eşleşmiş olmalı, buna çok dikkat edin. Daha sonra "formu gönder" gibi tuşa bastığınızda formun PHP kısmındaki işlenme yerinde örnek olarak veriyorum; [code]if(isset($GET['form_isle'])) { $kaydet = otomatik_kaydet("haberler", $_POST, array('submit','op','sil')); print_r($kaydet); }[/code] gibi bir kodlama ile formu veritabanına gönderme işlemini halletmiş olursunuz. "submit","op" ve "sil" gibi form elemanlarının veritabanı alanı (db field) karşılığı olmadığından bunları göz ardı ederek olası bir hatayı gidermiş olduk.

Yukarı Git