PHP Ajax Etiket Sistemi (TEK TEK EKLEME)

Hepinize merhabalar phpdestek.com sitemizin sizinle paylaşmış olduğu ilk makalemize hepiniz hoş geldiniz =)

Bugün sizlerle Veri tabanı Bağlantısı ile Etiket sistemi yapımı nasıl olur ondan bahsedeceğim. Bizim Etiketlerimiz Tek Tek Parçalanıp veri tabanına ekleyeceğiz. Ekstra olarak kaç etiket girilmiş, etiketler kaç karakterden oluşmalı hepsinin kontrolünü yapacağız. Hadi başlayalım

Hadi Başlayalım

Öncelikle PHPMYADMİN’i açıp tags tablosunu oluşturalım. Sonra da tag_id (int 11 – AI) ve tag(text) stunlarını oluşturalım. Yapamayan Arkadaşlar için aşağıya ornek kodu bırakıyorum.

CREATE TABLE `tag_system`.`tags` (`tag_id` INT(11) NOT NULL AUTO_INCREMENT , `tag` TEXT NOT NULL , PRIMARY KEY (`tag_id`)) ENGINE = InnoDB;

Veri tabanı bağlantısını oluşturalım. Ardından İndex.php Dosyamızı oluşturup form ile input’tan gelen veriyi ajax.php dosyamıza gönderelim.

Config.php

<?php
	$vt_host = "localhost";
	$vt_user = "root";
	$vt_password = "";
	$vt_name = "tags";
?>

Ardından db.php dosyamızı oluşturuyoruz

<?php
	try {
		$db = new PDO("mysql:host=$vt_host;dbname=$vt_name;charset=utf8", $vt_user, $vt_password);
		$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		}
	catch(PDOException $e)
		{
		echo "Bağlantı hatası: " . $e->getMessage();
		}
?>

Şimdi ise index.php dosyamızı oluşturup kullanıcı ara yüzünü ekliyoruz.

<?php 
    include "config.php";
    include "db.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="" method="post" id="tagsform" onsubmit="return false;">              
        <input type="text" name="tags">
        <button  type="submit" onclick="tagsadd();">ETİKETLERİ GÖNDER</button>
    </form>
    <script>
        function tagsadd(){
        var deger = $("#tagsform").serialize();
        $.ajax({
            type : "POST",
            data : deger,
            url : "ajax_tags.php",
            success : function(sonuc){
                    if($.trim(sonuc) == "system_error"){
                        alert("Sistemsel Hata Oluştu.");			
                    }else if($.trim(sonuc) == "error"){
                        alert("Etiketler en az 3 karakter en fazla 24 karakterden oluşmalı ve en az 3 en fazla 5 etiket girmelisiniz.");			
                    }else if($.trim(sonuc) == "go"){
                        alert("Başarılı Bir ŞEKİLDE EKLENDİ.");			
                    }
                }
            });
        }
    </script>
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
</body>
</html>

Sıra geldi ajax dosyamızı yani işin kalbini oluşturmaya : ajax_tags.php

<?php 
    include "config.php";
    include "db.php";

    if($_POST){
        $tags = trim($_POST["question_tags"]); //xss_clean fonksiyonu ile taramayı unutmayın
        $etiketler = explode(',', $tags); 
        $count_tags = 0; 
        foreach( $etiketler as $anahtar => $deger ){
            if(strlen($deger) >= 3  && strlen($deger) <= 24 ){
                $count_tags++;
            }                             
        }
        if($count_tags >= 3 && $count_tags <=5){
            foreach( $etiketler as $anahtar => $deger ){          
                $ekle = $db->prepare("INSERT INTO tags SET tag=?");
                $ekle->execute(array($deger));    
            }

             echo 'go';
        }else{
            echo 'error';
        }
    }else{
        echo 'system-error';
    }
?>

Neler yaptık şimdi ona göz atalım. İndex.php’den aldığımız verileri ajax_tags.php ye gönderiyoruz ardından etiketler 3 ve 24 karakter arasında ise sayaca sokup $count_tags++ ile arttırıyoruz. ardından if ile count_tags 3 ile 5 arasında mı diye kontrol ettiriyoruz amacımız en az 3 en fazla 5 karakterden oluşmalı. Ardından gerekli koşulları sağladıktan sonra. For döngüsüne sokup veritabanına ekliyoruz.

“PHP Ajax Etiket Sistemi (TEK TEK EKLEME)” için 2 yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir