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;
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;
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ü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.
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..
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.
$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"); ?>
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.
<?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.
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.
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.
<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>
Yukarıdaki form'un action kısmını boş bıraktık. Dolayısı ile form bulunduğu sayfaya gönderilecek.
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.
// 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..
Toplam 33 Makale
Lütfen yorumlarınızda saygılı, yapıcı ve anlaşılır bir dil kullanın.
Küfür, hakaret ya da spam içerikler onaylanmaz.