6 Aralık 2016 Salı

UBUNTU SERVER 16.10 üzerinde Node.js programlama dilinde Mysql veri tabanı kullanarak CRUD işlemleri

Merhaba arkadaşlar Oracle VM Virtualbox sanal makinesinin kurulu olduğu düşünerekten öncelikle yapmamız gereken Ubuntu server'a Node.js ve Mysql li kurmak.Virtualbox için tıklayın

Node.js Kurulumu

sudo apt-get update
sudo apt-get install nodejs
Komutları işinizi görecektir..Aşağıdaki gibi bir çıktı alıyorsanız sorun yok demektir.



Node.js paket yönlendiricisi olan NPM de yükleyelim.

sudo apt-get install npm
Komutları işinizi görecektir..Aşağıdaki gibi bir çıktı alıyorsanız sorun yok demektir.



Mysql Kurulumu

sudo apt-get install mysql-server
Komutları mysql i kurmak için yeterli.Aşağıdaki gibi bir çıktı alıyorsanız sorun yok demektir.


mysql -u root -p
Komutuyla mysql kabuğuna ulaşabilir veritabanlarını ve tabloları burada yazacağımız komutlarla görebilir ve yeni bir veri tabanı oluşturabilirsiniz.Örneğin;

CREATE DATABASE testdb  Komutuyla veri tabanımı oluşturduk

use testdb komutuyla veri tabanına tablo ekleyebiliriz.

Virtualbox Ağ Yapılandırılması

Port yönlendirmemiz için VirtualBox' ın ayarlar kısmından ağ sekmesine tıklıyoruz karşımıza çıkan ekrandan  gelişmiş seçeneğini tıklıyoruz. Açılan ekrandan bağlantı noktası yönlendirme tıklamamız gerekmektedir. Aşağıda gördüğünüz gibi.



Proje Aşamaları


1.ADIM:
Kurulumumuz tamamladıktan sonra proje klasörümüzü oluşturmaya başlayalım.

express testproje komutuyla klasörümüzü oluşturduk.

Aşağıdaki gibi bir ekran karşınıza çıkıyorsa hata yok demektir.



testproje adlı klasörün içine girerek mysql' i kuruyoruz.Ekran aşağıdaki gibi ise sorun yok.



Express'te bağlantı yöneticisine ihtiyacımız var bunun için;npm install express-myconnection komutuyla bağlantı sağlıyoruz.Aşağıdaki gibi bir çıktı alıyorsanız sorun yok demektir.



Şimdi arkadaşlar oluşturuduğumuz veri tabanına bir tablo ekliyoruz.
Kodlar:
create table kullanici2(
id int not null primary key auto_increment
ad varchar(20),
adres varchar(50),
tel varchar(15),
eposta varchar(50)
);

Çıktısı:



2.Adım:
app.js adlı bir dosya açıyoruz testproje klasöründeki views klasörünün içerisine;(testproje/views/app.js)

app.js kodlar:

var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');

var customers = require('./routes/customers'); 
var app = express();
var connection  = require('express-myconnection'); 
var mysql = require('mysql');

app.set('port', process.env.PORT || 4300);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'public')));

if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.use(
    
    connection(mysql,{
        
        host: 'localhost',
        user: 'root',
        password : '',
        port : 8080, //port mysql
        database:'nodejs'
    },'request')
);//yönledirici index testproje
app.get('/', routes.index);//route liste
app.get('/customers', customers.list);//route ekle mesajı al
app.get('/customers/add', customers.add);
app.post('/customers/add', customers.save);//route sil
app.get('/customers/delete/:id', customers.delete_customer);
app.get('/customers/edit/:id', customers.edit); 
app.post('/customers/edit/:id',customers.save_edit);
app.use(app.router);
http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

Yukarıda gösterdiğim gibi yeni bir dosya ve klasör oluşturmayı unutmayın.!

Şimdi arkadaşlar crud işlemlerini yapma için olan kodlar...

exports.list = function(req, res){
  req.getConnection(function(err,connection){
       
     connection.query('SELECT * FROM customer',function(err,rows)     {
            
        if(err)
           console.log("Hata listesi: %s ",err );
     
            res.render('Müşteriler',{page_title:"Müşteriler-Node.js",data:rows});
                           
         });
       
    });
  
};
exports.add = function(req, res){
  res.render('Müşteri Ekle',{page_title:"Ekle Müşteri-Node.js"});
};
exports.edit = function(req, res){
    
  var id = req.params.id;
    
  req.getConnection(function(err,connection){
       
     connection.query('SELECT * FROM Müşteri WHERE id = ?',[id],function(err,rows)
        {
            
            if(err)
                console.log("Hata Listesi : %s ",err );
     
            res.render('Müşterileri Düzenle',{page_title:"Düzenle-Müşteri - Node.js",data:rows});
                           
         });
                 
    }); 
};
/*Save the customer*/
exports.save = function(req,res){
    
    var input = JSON.parse(JSON.stringify(req.body));
    
    req.getConnection(function (err, connection) {
        
        var data = {
            
            name    : input.name,
            address : input.address,
            email   : input.email,
            phone   : input.phone 
        
        };
        
        var query = connection.query("INSERT INTO customer set ? ",data, function(err, rows)
        {
  
          if (err)
              console.log("Hata Listesi : %s ",err );
         
          res.redirect('/customers');
          
        });
        
       
    });
};//kayıt müşteri için
exports.save_edit = function(req,res){
    
    var input = JSON.parse(JSON.stringify(req.body));
    var id = req.params.id;
    
    req.getConnection(function (err, connection) {
        
        var data = {
            
            ad: input.name,
            adres: input.address,
            eposta: input.email,
            tel: input.phone 
        
        };
        
        connection.query("UPDATE customer set ? WHERE id = ? ",[data,id], function(err, rows)
        {
  
          if (err)
              console.log("Error Updating : %s ",err );
         
          res.redirect('/Müşteriler');
          
        });
    
    });
};

exports.delete_customer = function(req,res){
          
     var id = req.params.id;
    
     req.getConnection(function (err, connection) {
        
        connection.query("DELETE FROM customer  WHERE id = ? ",[id], function(err, rows)
        {
            
             if(err)
                 console.log("Error deleting : %s ",err );
            
             res.redirect('/customers');
             
        });
        
     });
};


Web arayüzü için HTML kodları:

<%- include layouts/header.ejs %>
        <div class="page-data">
         <div class="data-btn">
           <button onClick="addUser();">+ Add</button>
         </div>
         <div class="data-table">
            <table border="1" cellpadding="7" cellspacing="7">
                <tr>
                    <th width="50px">No</th>
                    <th>Name</th>
                    <th>Address</th>
                    <th>Phone</th>
                    <th>Email</th>
                    <th width="120px">Action</th>
                </tr>                               
                <% if(data.length){ 
                                
                 for(var i = 0;i < data.length;i++) { %>                 
                <tr>
                    <td><%=(i+1)%></td>
                    <td><%=data[i].ad%></td>
                    <td><%=data[i].adres%></td>
                    <td><%=data[i].tel%></td>
                    <td><%=data[i].eposta%></td>
                    <td>
                        <a class="a-inside edit" href="../customers/edit/<%=data[i].id%>">Edit</a>                       
                        <a class="a-inside delete" href="../customers/delete/<%=data[i].id%>">Delete</a>                       
                    </td>
                </tr>
            <% }
            
             }else{ %>
                 <tr>
                    <td colspan="3">No user</td>
                 </tr>
            <% } %>
                                                             
            </table>
         </div>
        </div>        
<%- include layouts/footer.ejs %>


Projenin çıktısı



KAYNAKLAR


Hiç yorum yok:

Yorum Gönder