
MYSQLDE TABLO SÜTUN VE SATIRLARINI LİSTELEME
MYSQL’DE TABLONUN SÜTUN ve İÇERİKLERİNİ BİRLİKTE LİSTELEME
Merhaba sevgili kod yazar arkadaşlar,
Bu yazımda sizlere MYSQL veritabanı yapısında kayıtlı olan bir tablonun sütunlarıyla birlikte satırlarını yani o tabloya eklenmiş verileri listeleme işlemini anlatacağım.
Buradaki önemli husus sadece tablo adını yazarak hem sütun hem de satırları elde etmiş oluyoruz.
Bu çalışmadaki amaç sizleri karmaşık bir işlemde deneyim sağlatacak ve benzeri çalışmalarda tecrübe sağlayacaktır.
Çalışma dosyalarını yazı sonunda indirilebilir kaynak olarak sizlere sunuyorum.
Gerekli uygulamalar;
- Xampp,
- Sublime Text
Çalışma sistemi, öncelikle veritabanı bağlantısını yapıyoruz. Daha sonra HTML yapısı ile standart bir tablo oluşturuyoruz.
Veritabanı bağlantısı;
<?php | |
@ob_start(); | |
@session_start(); | |
date_default_timezone_set('Europe/Istanbul'); | |
if (basename($_SERVER['PHP_SELF'])==basename(__FILE__)) { | |
exit(' Erişim Engellendi.'); | |
}; | |
$db_user = "root"; | |
$db_pass = ""; | |
$db_name = "veritabani"; | |
$host_name = "localhost"; | |
try { | |
$db = new PDO("mysql:host=$host_name;dbname=$db_name", $db_user, $db_pass); | |
} catch (PDOException $e) { | |
echo 'Connection failed: '.$e->getMessage(); | |
} | |
$db->query("SET NAMES utf8"); | |
$db->query("SET CHARACTER SET utf8"); | |
$db->query("SET COLLATION_CONNECTION = 'utf8_general_ci'"); | |
?> |
Tabloda ilk olarak sütunlarını <thead> içerisine <th> tagları içerisine çekiyoruz;
Burada tablo sütun verilerini SHOW FULL COLLUMNS FROM ‘TABLO_ADI’ sorgusuyla çeviriyoruz.
Bu sorgu ile tablo ve sütunları üzerinde birçok bilgiye erişim sağlayabiliyoruz. Sorgunun detaylı anlatımı için tıklayın: https://dev.mysql.com/doc/refman/8.0/en/show-columns.html
Sorgu metodumuz PDO ile olacaktır.
Başlayalım;
1. Burada sorgumuz dahilinde tablo sütun var mı? Varsa Tablo alanını HTML ile oluşturuyoruz.
2. HTML tablo yapısının ardından veritabanından aynı tablonun satırlarının sorgusunu yapıyoruz.
Bu sorgu sistemimizde asıl yüklenici sorgu oluyor. Sorgumuz Select ile gerçekleşiyor;
3. Sorgu sonucunda tablo içerisinde veri olduğu takdirde işlemler devam ediyor;
$uye olarak oluşturduğumuz stdClass daha sonra satırlarda kullanılmak üzere sütun numarasına sütun adlarını ekliyoruz.
Böylece elimizde hem sütun sayısı ve her sayıya karşılık bir sütün adını elde etmiş oluyoruz.
Sütun sayısı ile th taglarını döngüye sokarak getColumunMeta($i) yardımıyla içeriklerin sütun adlarını yazdırıyoruz.
4. Sütun isimlerinin bulunduğu table head alanın ardından table body içerisine satırlarımızı çağırıyoruz;
$veri adlı dizimizi while döngüsüne alarak satır tagları içerisinde ikinci bir while döngüsüye sokuyoruz.
Bu döngünün amacı daha önce oluşturduğumuz her sütüna(thead) denk gelen verinin düzenli bir şekilde alt alta(tbody) gelmesidir.
Dikkat edilmesi gereken husus sütun sayısı kadar ikinci bir döngünün olmasıdır. İkinci döngü td (hücre) yani her hücreye sütun değeri gelecek şekilde $row dizisini yazdırıyoruz.
$uye->$y ile döngü esnasındaki sütun sayısının adını $sutunad olarak yine hücre eklemiş oluyoruz.
Hücre içerisine doğru dizi verisini eklemek için current($row) döngü esnasındaki veriyi yazdırıyoruz.
collumCount ile dizdeki sütun sayısını öğrenip bu sayı ile hücreleri döngüye sokuyoruz.
Daha fazla bilgi ve yardım için masaj ya da yorum atarak ulaşabilirsiniz.
Bu yazıya puan vererek ada paylaşıp beğenerek destek olabilirisinz.Bu makalenin kaynak dosyası; MYSQL Panelden Veritabanı Yönetim Sistemi
Git;
<!doctype html> | |
<html lang="en"> | |
<head> | |
<!-- Required meta tags --> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> | |
<!-- Bootstrap CSS --> | |
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> | |
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous"> | |
<title>MYSQL Veritabanı Yönetim Sistemi</title> | |
<style type="text/css"> | |
table { | |
display: block; | |
overflow-x: auto; | |
white-space: nowrap; | |
} | |
.soru-anlam{ | |
display: none; | |
background-color: black; | |
color: white; | |
font-size: 14px; | |
min-height: initial; | |
opacity: .7; | |
outline: 1px solid black; | |
padding: 4px 8px; | |
position: absolute; | |
} | |
.soru-isaret:hover .soru-anlam{ | |
display: block; | |
} | |
tr td input{ | |
max-width: 130px; | |
} | |
tr td select{ | |
max-width: 100px; | |
} | |
a,button, i{ | |
color:white; | |
} | |
.box-primary{ | |
background: #eeefee; | |
padding: 10px; | |
margin: 10px 0 10px 0; | |
} | |
.dropdown-menu a i{ | |
color: black; | |
margin-right: 10px; | |
} | |
</style> | |
</head> | |
<body> <div class="container"> | |
<section class="content-header"> | |
<ol class="breadcrumb"> | |
<li class="active">Veritabanı Yönetim</li> | |
</ol> | |
</section> | |
<!-- Main content --> | |
<section class="content"> | |
<div class="info" id="info_box"> | |
<div class="alert alert-info alert-dismissable"> | |
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> | |
<h4><i class="icon fa fa-info"></i> SQL Komutu! Sonuç: <label style='color:white;'>Olumlu</label></h4> | |
SELECT * FROM icerikler<br> <div id="json_cevap"></div> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="col-md-12"> | |
<div class="card mb-5"> | |
<div class="card-header"> | |
Table Düzenle | |
</div> | |
<div class="card-body"> | |
<?php | |
include "baglan.php"; | |
$listeletablo = "tasarim_icerik"; | |
$vrtb=$db->prepare('SHOW FULL COLUMNS FROM '.$listeletablo); | |
$vrtb->execute(); | |
$sutun_sayi = $vrtb->rowCount(); | |
if ($sutun_sayi>0){ | |
echo ' <table id="listeletablo" tablo-ad="'.$listeletablo.'" class="table table-bordered table-hover "><thead><tr>'; | |
$query = 'select * from '.$listeletablo; | |
$veri = $db->prepare($query); | |
$veri->execute(); | |
if ($veri) | |
{ | |
$i = 0; | |
$uye = new \stdClass(); | |
while ($i < $veri->columnCount()) | |
{ | |
$meta = $veri->getColumnMeta($i); | |
echo '<th sutun="' . $meta['name'] . '">' . $meta['name'] . '</th>'; | |
// $sutunno = array($i=>$meta['name']); | |
$uye->$i =""; | |
$uye->$i =$meta['name']; | |
$i = $i + 1; | |
} | |
echo '</tr></thead> <tbody>'; | |
$count = $veri->columnCount(); | |
$counts = $veri->rowCount(); | |
while ($row = $veri->fetch(PDO::FETCH_ASSOC)) | |
{ | |
echo '<tr>'; | |
$y = 0; | |
while ($y < $count) | |
{ | |
$sutunad = $uye->$y; | |
echo '<td><span sutun="'.$sutunad.'" datatable="'.$listeletablo.'" >' . substr(htmlspecialchars(current($row)),0,100) . '</span></td>'; | |
next($row); | |
$y = $y + 1; | |
} | |
echo '</tr>'; | |
} | |
echo '</tbody></table>';}} | |
echo "Getirilen: ".$counts; | |
?> | |
</div> | |
</div> | |
</div> | |
<!-- /.box --> | |
</div> | |
<!-- /.col --> | |
<!-- /.row --> | |
</section> | |
<!-- jQuery first, then Popper.js, then Bootstrap JS --> | |
<script src="https://code.jquery.com/jquery-3.1.1.min.js" ></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> | |
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> | |
<script type="text/javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script> | |
<script type="text/javascript" src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script> | |
<script type="text/javascript" src="fnc.js"></script> | |
<script type="text/javascript"> | |
$(document).ready(function() { | |
$('#listeletablo').DataTable({ | |
"searching": false, | |
"language": { | |
"url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Turkish.json" | |
}, | |
"length":false | |
}); | |
} ); | |
</script> | |
</body> | |
</html> |
İndirme Linki;Tıkla Drive
Elinize sağlık. Gayet başarılı
teşekkür ederim