lostyazilim
tr.link

PHP, Form İle Mysql Veri Kaydetme

12 Mesajlar 31.635 Okunma
lstbozum
tr.link

4531 4531 WM Aracı Anonim Üyelik
  • Üyelik 13.03.2012
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 996
  • Beğeniler 210 / 211
  • Ticaret 3, (%100)
Merhaba arkadaşlar mysql işlemlerinden en önemlilerinden biri bu diyebilirim. Çünkü scriptler yazı-içerik eklerken siz yorum yazarken hep form işlemlerini kullanırız. Bu yazım da bende form işlemlerini anlatacağım. Aslında mantığı anlarsanız çok basit olan bu işlemler için 3 dosya gerekiyor.
Not: Aşağıda geçen şu yazımda bunu anlatmıştım dediklerimin linkleri en alttadır.

    [*]index.php
    [*]baglanti.php
    [*]gonder.php

Php ile Mysql’ye Bağlanma yazımda zaten index.php ve baglanti.php oluşturmayı ve Mysql’ye bağlanmayı anlatmıştım. Bir diğer yazımda ise Mysql’ye veri kaydetmeyi anlatmıştım. Şimdi bu kodları kullanarak form ile veri kaydetmeyi anlatacağım.
İlk olarak index.php’mizin kodlarını vereyim. Tasarımda Twitter boostrap framework’ünü kullandım. Tabi sadece buton ve input alanları için.





PHP Form İşlemleri





























Yukarıda gördüğünüz üzere bir form var ve görevi, doldurulan verileri gonder.php’ye post metodu ile iletmek. Bunun yanında bir yazımda anlattığım while döngüsü ile kısa yoldan 1950′den 2000′e yılları yazdırdım. Şimdi ise sıra baglanti.php’yi incelemede.
baglanti.php bize gonder.php’de mysql’ye bağlanmamıza yarayacak ve index.php’de kaydettiğimiz verilerimi görmemizi sağlayacaktır.
Aşağıdaki kodlar baglanti.php dosyamızın içeriğidir.

$link = mysql_connect("localhost", "root", "");

$db = mysql_select_db("phpdersi", $link);
if($db){
}
else {
echo "Veritabanına bağlantı sağlanamadı";
}
?>

Burada phpdersi veritabanımızdır. Eğer yoksa localhost kullandığınızı varsayaraktan http://localhost/phpmyadmin adresini kullanarak veritabanı yönetimine gelin phpdersi veritabanı oluşturun ve aşağıdaki kodlar ile tablo oluşturun. Eğer nasıl oluşturacağınızı bilmiyorsanız en altta verdiğim linklerden veri tabanına veri ekleme yazısını okuyun.
CREATE TABLE IF NOT EXISTS `kullanicilar` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`isim` text NOT NULL,
`soyisim` text NOT NULL,
`yas` text NOT NULL,
`eposta` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

baglanti.php’yi de oluşturduysak şimdi sıra gonder.php’nin oluşturulmasına geldi.
Aşağıdaki kodlar gonder.php dosyası içeriğidir.


include("baglanti.php");
$isim = $_POST['isim'];
$soyisim = $_POST['soyisim'];
$eposta = $_POST['eposta'];
$sayi1 = $_POST['yas'];
$today = getdate();
$yas = $today['year'] - $sayi1;
$kaydet = mysql_query("insert into kullanicilar (id, isim, soyisim, eposta, yas) values (Null, '$isim', '$soyisim', '$eposta', '$yas')");

if($kaydet){
header(sprintf("Location: " .$_SERVER['HTTP_REFERER']));
}
else{
echo "İşlem başarısız..";
}

?>

İlk olarak baglanti.php’yi gonder.php’ye çağırdık çünkü Mysql bağlantısı için gerekli. Daha sonra index.php’de ki form’dan gelen verileri değişkenlere atadık. Ancak fark ettiyseniz bir değişken de çıkarma işlemi yaptık. Bu değişken tabii ki doğum yılı ben ilk olarak $sayi1 değişkenine form’dan gelen doğum yılını atadım. Daha sonra ise $today = getdate(); ile zamanı aldım $today['year'] ile yılı yazdırdım yaşı bulmak için. Bunun için aşağıdaki işlemi yaptım.
$yas = $today['year'] - $sayi1;
gördüğünüz gibi $yas değişkenine şuan ki yıldan form’dan gelen doğum yılını çıkarttım. En sonda mysql_query ile verileri yazdırdım. Bu arada mysql_query‘yi $kaydet değişkenine atama sebebim if, else yani koşulları uygulamak istememdi. Eğer if else’yi bilmiyorsanız aşağıda verdiğim linkten okuyunuz.
İşte detaylı olarak php ile form işlemlerini anlattım umarım işinize yarar. Bunun yanında verileri nasıl ekrana yazdıracağınızı bilmiyorsanız. Aşağıdan Mysql'den veri çekme yazısını okuyun.

Kaynak: http://ahmettalut.com/php-form-ile-mysql-veri-kaydetme

Not: Yazı, kodlama tamamen benim tarafımdan hazırlanmıştır. Yukarıda yaş işlemi sade php'de çıkartma ve tarih fonksiyonunu göstermek içindir. Bunun yanında çok yakında en fazla yazıdan oluşacak olan mini blog scirpti yazılarımı paylaşacağım.

Yazıda Geçen Adresler;

PHP İle Veritabanına Bağlanma
PHP, Mysql'ye Veri Kaydetme
PHP, Mysql'den Veri Çekme
PHP, While Döngüsü
PHP Koşullar, İf, Elseif, Else
furkandemirci teknoonur kbra123

kişi bu mesajı beğendi.

wmaraci
reklam

furkandemirci furkandemirci SEO Kullanıcı
  • Üyelik 17.02.2013
  • Yaş/Cinsiyet 27 / E
  • Meslek SEO
  • Konum Erzurum
  • Ad Soyad F** D**
  • Mesajlar 927
  • Beğeniler 378 / 157
  • Ticaret 17, (%100)
Warning: mysql_connect(): Access denied for user 'mysql.hostinger.'@'localhost' (using password: YES) in /home/u538389562/public_html/deneme/baglanti.php on line 3 Warning: mysql_select_db() expects parameter 2 to be resource, boolean given in /home/u538389562/public_html/deneme/baglanti.php on line 5 Veritaban�na ba�lant� sa�lanamad�

Böyle hata aldım, http://turklirasikazan.tk/deneme/.
Veritabanı böyle, pek bilgim de yok PHP hakkında. Yazılarınızı da okudum.



Yukarıdaki bilgilere göre burayı ne yapmalayım? Sanırsam sorun burada, ben böyle yapıyorum?

$link = mysql_connect("localhost", "u538389562_1 YAZIYORUM", "ŞİFREMİ_YAZIYORUM");

$db = mysql_select_db("u538389562_1 YAZIYORUM", $link);
if($db){
}
else {
echo "Veritabanına bağlantı sağlanamadı";
}
?>
 

 

##

4531 4531 WM Aracı Anonim Üyelik
  • Üyelik 13.03.2012
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 996
  • Beğeniler 210 / 211
  • Ticaret 3, (%100)
Hocam orada localhost yerine mysql.hostinger.web.tr yazacaksınız. Bazı sistemlerde host adı localhost 'dur mesela ben bilgisayarda da sitem üzerinde de çalışırken localhost yazarım ancak bazı sistemlerin kendi host name'i vardır. Siz bu yazıda
dediğim gibi
localhost yerine mysql.hostinger.web.tr yazacaksınız.
 

 

salichomg salichomg WM Aracı Kullanıcı
  • Üyelik 15.03.2013
  • Yaş/Cinsiyet 31 / E
  • Meslek Network Manager
  • Konum Bulgaristan
  • Ad Soyad S** A**
  • Mesajlar 393
  • Beğeniler 18 / 41
  • Ticaret 0, (%0)
sadece sql injecte karsi birsey goremedim adam heklenir bunu kullanirsa
 

 

wmaraci
wmaraci

4531 4531 WM Aracı Anonim Üyelik
  • Üyelik 13.03.2012
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 996
  • Beğeniler 210 / 211
  • Ticaret 3, (%100)

salichomg adlı üyeden alıntı

sadece sql injecte karsi birsey goremedim adam heklenir bunu kullanirsa

Hocam güvenlik önlemi olan bir şey yazmadım ben sadece konuyu anlattım güvenliğide siz yaparsınız artık.
brk

kişi bu mesajı beğendi.

miharbisukarak miharbisukarak Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 27.11.2013
  • Yaş/Cinsiyet 35 / E
  • Meslek İnternet Danışmanı
  • Konum İstanbul Avrupa
  • Ad Soyad H** K**
  • Mesajlar 735
  • Beğeniler 121 / 106
  • Ticaret 6, (%100)
Kodlar için teşekkürler. Kendime göre uyarladım fakat hata aldım. Nerede yanlış yapıyorum acaba. Yardımcı olursanız minnettar kalacağım. İşlem başarısız hatası alıyorum. Veritabanındaki veriyi ekrana yazdırmada sorunum yok. Sadece formdaki veriyi veritabanına kaydedemiyorum :(


error_reporting(E_ALL & ~E_NOTICE);
ini_set('error_reporting', E_ALL & ~E_NOTICE);

############### veritabanı bağlantı ayarları ######################
$localhost = "localhost";
$kullanici = "dbismim";
$sifre = "dbsifrem";
$dbadi = "colored_share";

$dbbaglan = @mysql_connect($localhost,$kullanici,$sifre);
$dbbaglanti = @mysql_select_db($dbadi,$dbbaglan);
if(!$dbbaglanti){
die("baglanti yok");
} else {
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER_SET utf8');
mysql_query("SET COLLATION_CONNECTION = 'utf8_turkish_ci' ");
}
############### veritabanı bağlantı ayarları ######################

$acilirmenu = $_POST['acilirmenu'];
$bilgi = $_POST['bilgi'];
$ekle = mysql_query("insert into bilgiler (id, acilirmenu, bilgi,) values (Null, '$id', '$acilirmenu', '$bilgi', )");

if($kaydet){
header(sprintf("Location: " .$_SERVER['HTTP_REFERER']));
}
else{
echo "İşlem başarısız..";
}

?>


Form ise şurada;













sdasdasdadas



 

 

teknoonur teknoonur WM Aracı Kullanıcı
  • Üyelik 22.07.2013
  • Yaş/Cinsiyet 26 / E
  • Meslek EEM Öğrencisi
  • Konum İstanbul Avrupa
  • Ad Soyad O** K**
  • Mesajlar 510
  • Beğeniler 207 / 112
  • Ticaret 2, (%100)

salichomg adlı üyeden alıntı

sadece sql injecte karsi birsey goremedim adam heklenir bunu kullanirsa


SQL Injection saldırılara karşı mysql_(*) kodları yerine PDO kullanabilirsiniz

http://www.phpr.org/php-data-objects-pdo/
 

 

http://onurkinay.com.tr

MertKoseoglu MertKoseoglu Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 12.07.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek x
  • Konum Ankara
  • Ad Soyad M** K**
  • Mesajlar 659
  • Beğeniler 120 / 168
  • Ticaret 3, (%100)
Php tagini buyuk yazmayin. Localhostda sikinti cikmaz fakat sunucuya attiginizda sorun yasayabilirsin. Tecrubeyle sabit, sonra arar durursun nerde hata var diye :)
 

 

mkardogan mkardogan WM Aracı Kullanıcı
  • Üyelik 18.11.2011
  • Yaş/Cinsiyet - / E
  • Meslek makine mühendisi
  • Konum
  • Ad Soyad ** **
  • Mesajlar 163
  • Beğeniler 27 / 41
  • Ticaret 12, (%100)
Güzel anlatım teşekkür ederim
 

 

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)

teknoonur adlı üyeden alıntı

SQL Injection saldırılara karşı mysql_(*) kodları yerine PDO kullanabilirsiniz

http://www.phpr.org/php-data-objects-pdo/


Ekleme yapayım. PDO kullanmak daha güvenli ve daha düzgün bir yapı yapmaya yarayabilir. Ancak yine de tek başına güvenli değildir.
htmlentities ve addslashes gibi fonksiyonlar kullanmak da faydalı olacaktır.
 

 

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al