MYSQLİ VERİ GÜNCELLEME GENEL YAPI
Mysql veri tabanındaki verileri PHP ile günceelemek için mysqli_query sorgusu (sql cümlesi) ile içerisinde UPDATE komutu kullanılır. Güncellenecek veri alanları SET komutu ile aralarına virgül eklenerek yazılır.
Eğer herhangi özel bir kayıt belirtilmez ise aşağıdaki genel kullanım tablodaki tüm verileri günceller. Tabi yine öncelikle veri tabanı bağlantısının yapılmış olması gerekir ($baglanti).
//veri tabanına bağlantı
$baglanti=mysqli_conect("localhost","root","","veritabanı adı");
mysqli_set_charset($baglanti, "utf8mb4");
//verilerin güncellenmesi
$sql="update tablo_adi set alan1='deger1', alan2='deger2', alan3='deger3'"; // sql cümlesi
mysqli_query($baglanti, $sql);
Yukarıda veri tabanı bağlantısı yapıldıktan sonra;
- önce "UPDATE TABLO_ADI SET..."sql cümlesi (sorgusu) oluşturulur. Burada veri tabanı tablosuna ait verilerin güncelleneceği belirtilir.
- mysql_query($baglanti,$sql) ile hazırlanan sql sorgusu , veri tabanı bağlantısı ile birleştirilerek veriler güncellenir.
BELİRLİ BİR KAYDIN GÜNCELLENMESİ
Yukarıdaki kullanım tablodaki tüm kayıtları günceller. Eğer belirli bir kaydı güncellemek istiyorsak bunu WHERE kelimesiyle sql sorgusu içindebelirtmemiz gerekir. Örneğin "id=25" olan bir veriyi güncellemek için aşağıdaki yapı kullanılır.
//veri tabanına bağlantı
$baglanti=mysqli_conect("localhost","root","","veritabanı adı");
mysqli_set_charset($baglanti, "utf8mb4");
//verinin güncellenmesi
$sql="update tablo_adi set alan1='deger1', alan2='deger2', alan3='deger3' where id= 25"; // sql cümlesi
mysqli_query($baglanti, $sql);
Burada;
- önce "UPDATE TABLO_ADI SET ...... WHERE ID=25 " sql cümlesi (sorgusu) oluşturulur. Burada veri tabanı tablosundaki id bilgisi 25 olan kaydın güncelleneceği belirtilir.
- mysql_query($baglanti,$sql) ile hazırlanan sql sorgusu , veri tabanı bağlantısı ile birleştirilerek veri silinir.
Yukarıda veriyi belirtmek için seçtiğimiz id bilgisi (alan) değiştirilebilir. Örneğin veri tablosunda ad bilgisi erkan olan kayıtları güncellemek istesersek where koşulunu aşağıdaki gibi değiştirmemiz gerekir.
//veri tabanına bağlantı
$baglanti=mysqli_conect("localhost","root","","veritabanı adı");
mysqli_set_charset($baglanti, "utf8mb4");
//verilerin güncellenmesi
$sql="update tablo_adi set alan1='deger1', alan2='deger2', alan3='deger3' where ad='erkan' "; // sql cümlesi
mysqli_query($baglanti, $sql);
GÜNCELLE LİNKLERİNİN OLUŞTURULMASI
Güncelleme işlemi genellikle verilerin listelendiği sayfada eklenen GÜNCELLE gibi butonlar aracılığı ile yapılır. Güncelleme işlemleri genelde farklı bir sayfada yapılır.
<!-- guncelle.php sayfasına yünlendirme linki -->
<a href="guncelle.php?id=25"> GÜNCELLE</a>
Hangi verinin güncelleneceği bilgisinin linke eklenmesi gerekir. Yukarıdaki linkte gönderilen id=25 bilgisi, 25 id'li kaydın güncelleneceğini belirtir. Linki karşılayan sayfa yada php kodları öncelikle bu ID mesajını $_GET ile almalıdır.
GUNCELLE.PHP SAYFASI
Verilerin güncelleneceği guncelle.php sayfası , mevcut kaydın bilgilerine ulaşmalı ve aynı zamanda bir form aracılığı ile bilgilerin değiştirilmesini sağlamalıdır. Öncelikle veri tabanı bağlantısını yapalım..
VERİ TABANI BAĞLANTISI
sitevt isimil bir veri tabanımız ve bu veri tabanı içinde aşağıdaki gibi bir mesajlar isimli veri tablomuz olsun..


Tabloda id, ad_soyad,mesaj ve tarih olmak üzere 4 alan var. Bağlantı kodları aşağıdaki gibi olur.
baglan.php
$baglanti=mysqli_connect("localhost","root","","sitevt");
mysqli_set_charset($baglanti, "utf8mb4");
Yukarıdaki bağlantıyı verileri güncelleyeceğimiz sayfanın başına include ediyoruz..
guncelle.php
<?php include ("baglan.php"); ?>
ID BİLGİSİ KONTROLÜ
Güncelleme sayfaları "id" bilgisi olmadan (istenilen kaydı belirten başka bir alanda olabilir) düzgün görüntülenemeyeceği için , öncelikle tarayıcı mesajı ile id bilgisi gelmez ise, sayfayı header ile yönlendirelim.
guncelle.php
<?php
include ("baglan.php"); //veri tabanına bağlantı
//id kontolü
if ( isset($_GET["id"]) ) {
$id=$_GET["id"];
}
else {
header("location:mesajlar.php");
}
?>
Yukarıdaki kod bloğu isset foknsiyonu ile tarayıcı mesajını (id) kontrol eder. Eğer "id" isimli bir tarayıcı mesajı gelmemişse sayfa mesajlar.php sayfasına yönlendirilir.
MEVCUT VERİLERE BAĞLANTI
Güncelelem sayfasında güncellenmesi istenilen kaydın bilgilerinin gürünmesi gerekir. Bu nedenle gelen id bilgisine göre , istenen kayda bağlantı sağlayarak bu kaydın verilerini değişkene alalım.
//istenilen kayda bağlantı
$sql="select * from mesajlar where id=".$id;
$kayit=mysqli_query($baglanti, $sql); // ilgili kayda bağlantı
$mesaj=mysqli_fetch_assoc($kayit); // ilgili kaydın verilerinin alınması
Yukarıda ilgili kaydın verilerini , $mesaj değişkeni içerisine almış olduk. Artık form elemanlarının ilk değerlerini , bu bilgileri kullanarak ekleyebiliriz.
FORMUN OLUŞTURULMASI
Güncelleme alanlarının görünebilmesi için , ekle sayfalarında olduğu gibi bir formun sayfaya eklenemsi gerekir. Tabi burada ekle sayfasından farklı olarak , form alanlarının ilk değerlerini yukarıda kurduğumuz veri bağlantısından almamız gerekir.
guncell.php
<form action="" method="post">
<label> Adınız Soyadınız</label>
<input type="text" name="ad_soyad" class="form-control" value="<?php echo $mesaj['ad_soyad'] ?>">
<textarea class="form-control mt-4" name="mesaj" >
<?php echo $mesaj['mesaj'] ?>
</textarea>
<button type="submit" class="btn btn-primary w-100 mt-2"> KAYDET</button>
</form>
ekran

Yukarıdaki form'un action kısmını boş bıraktık. Dolayısı ile form bulunduğu sayfaya gönderilecek.
GÜNCELLEME İŞLEMİ
Form submit edildiğinde formdan gelen bilgileri , ekle işleminde olduğu gibi değikenler aracılığı ile alarak , kaydın güncellenmesini sağlayalım.
guncelle.php
// GÜNCELLEME
if ($_POST) {
//formdaki veriler
$ad_soyad=$_POST["ad_soyad"];
$mesaj=mysql_escape_string($_POST["mesaj"]);
//sql cümlesi
$sql="update mesajlar set ad_soyad='$ad_soyad', mesaj='$mesaj' where id=".$id;
//güncelle
mysqli_query($baglanti,$sql);
//yönlendirme
header("location:mesajlar.php");
}
Formdan 2 veri geliyor. ad_soyad ve mesaj. Tarih bilgisi ekleme esnasında alındığı için güncellmemize gerek yok ancak veri tablosuna ayrı bir guncelleme_tarih gibi alan açılarak , buraya guncelleme tarihi olarak veri eklenebilir.
Tasarımın daha düzgün görünmesi için bootstrap 5 kütüphanesini kullandım. Sizler kullanmak zorunda değilsiniz. Sayfanın tüm kodlarını aşağıda görebilirsiniz..
<?php
//veri tabanı bağlantısı
include ("baglan.php");
//id kontolü
if ( isset($_GET["id"]) ) {
$id=$_GET["id"]; // gelen id
}
else {
header("location:mesajlar.php");
}
//istenilen kayda bağlantı
$sql="select * from mesajlar where id=".$id;
$kayit=mysqli_query($baglanti, $sql); // ilgili kayda bağlantı
$aktif_kayit=mysqli_fetch_assoc($kayit); // ilgili kaydın verilerinin alınması
// GÜNCELLEME
if ($_POST) {
//formdaki veriler
$ad_soyad=$_POST["ad_soyad"];
$mesaj=mysql_escape_string($_POST["mesaj"]);
$tarih=date("Y-m-d");
//sql cümlesi
$sql="update mesajlar set ad_soyad='$ad_soyad', mesaj='$mesaj' where id=".$id;
//güncelle
mysqli_query($baglanti,$sql);
//yönlendirme
header("location:mesajlar.php");
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>PHP MYSQLİ VERİ GÜNCELLEME</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.5/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-SgOJa3DmI69IUzQ2PVdRZhwQ+dy64/BUtbMJw1MZ8t5HZApcHrRKUc4W0kG879m7" crossorigin="anonymous">
</head>
<body>
<div class="container mt-5 p-5 border">
<h5 class="mb-4"> MESAJ GÜNCELLE</h5>
<form action="" method="post" >
<label><b>Ad Soyad</b></label>
<input type="text" name="ad_soyad" class="form-control" value="<?php echo $aktif_kayit["ad_soyad"];?>" required>
<label class="mt-2"><b> Mesajınız</b> </label>
<textarea name="mesaj" class="form-control" required><?php echo $aktif_kayit["mesaj"];?></textarea>
<button type="submit" class="btn btn-success mt-3"> KAYDET </button>
</form>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.5/dist/js/bootstrap.bundle.min.js" integrity="sha384-k6d4wzSIapyDyv1kpU366/PK5hCdSbCRGRCMv+eplOQJWyd1fbcAu9OCUj5zNLiq" crossorigin="anonymous"></script>
</body>
</html>
Görüşmek üzere..