Php Ders 7 - Ziyaretçi Mesaj Formu.
PHp ile Ziyaretçi Mesaj Formu Yapımı
Bu dersimizden önce Mysql veritabanı üretmeniz gerekiyor. Başlamadan önce şu dersi okuyarak bir veritabanı tablosu üretmelisiniz.Php ile birçok veritabanı işlem yapılabiliyor ama Veritabanı mantığını anlamanız için önce o dersi iyice incelemelisiniz.
Php dersimize Elimizde 4 Sütunu bulunan bir veritabanı tablosu olduğunu kabul ederek başlıyoruz.
mesajno
yazan
mesaj
zaman
1-HTML MESAJ FORMU
Öncelikle ziyaretçilerimizin kullanacağı bir mesaj formu yapmamız gerekiyor.Mümkünse Dreamweaver ile aşağıdaki düğmeleri kullanarak bir form hazırlayın. Önce form sonra onun içine textfield ve buton.
Formun bitmiş hali:
Dreamweaver yoksa yada form yapamazsanız hazırladığım şu form ve boş php sayfası örneğini indirebilirsiniz: Dosya indir : ziyaretcibos.zip
Dremweaver hiç bilmiyorsanız şu derse de göz atabilirsiniz: dreamweaver ile web sayfası
Burada dikkat etmeniz gereken nokta: Bu kısımda herhangi bir PHP kodu falan yazmıyoruz. bunlar basit HTML bilgisidir. HTML bilginiz yoksa bile dreamweaver ile kolayca bir form yapabilirsiniz.
Formu oluşturan HTML kodları: Elinizde dreamweaver yoksa Not defterine aşağıdaki yazıyı yapıştırıp. mesajformu.html adı ile kaydetmeniz yeterlidir.
Buradaki en önemli konu formun hedef alanıdır: action="" Bu formun gönder tuşuna basıldığında web sayfamızda hangi php´nin çalışacağını belirtir.
isminiz: isim" id="isim" />
Mesajınız: text</span></b>" id="text" cols="45" rows="5">
Diğer önemli nokta ise formdaki yazı kutularına verdiğimiz isimlerdir. yukarıda kırmızı ile işaretlediğim yerlere dikkat edin. Action kısmını unutursanız Form aynı sayfaya gider. sayfamız html olduğu için de hiçbir işe yaramaz.
2- MESAJLARI PHP İLE ALMAK
Durumu anlamanız için aşağıdaki resmi inceleyin.
Formun action kısmındaki yazıya göre baka bir sayfaya gönderiliyor. Bu örnekteki sayfamızın adı kaydet.php olacak.
Yani birisi mesaj yazıp kaydet tuşuna basınca kaydet.php çalışacak.
Şimdi kaydet.php sayfasını yapalım. Aşağıdaki kodu yazın ve uygulayalım.
$civciv=$_POST["isim"];
echo " Sayın". $civciv. " Siz bu formu yollayacak kadar karizmatik değilsiniz";
Kodlara dikkat ettiyseniz hiçbir veritabanı komutu yok. Peki burdan ne öğreneceğiz. Form geldiğinde bilgiyi nasıl işleyeceğimizi öğreneceğiz.
Bir Php sayfası çalıştığında eğer adres satırına sayfa adı yazılarak çağrılmışsa $_GET parametresi çalışır.
şunu deneyin: http://localhost/kaydet.php?isim=Necmi
bu durumda $_GET["isim"] şeklinde otomatik oluşan bir değişkenimiz olur.
Eğer php Sayfası bir Form gönderilerek çalıştırılmışsa $_POST parametresi kullanılır. şimdi bunlar ingilizce diye hemen kaçmayın. ben size Türkçesini de yazarım:
$_GET: Al Getir
$_POST: Postala
Şimdi yukarıda neden zarf çizdiğimi anlamışsınızdır. HTML sayfasındaki form üzerine dikkat etmediyseniz şu ufak ayrıntıyı göremezsiniz:
Bu form bir posta mektubudur ve onu alan PHP sayfasında otomatik olarak $_POST isimli bir değişken oluşur. bu değişken paketlenmiş bir Değişkendir. aynı isimle birden fazla bilgi çağrılabilir:
kaydet.php çalışırken şu iki değişkeni kullanabiliriz:
$_POST["isim"];
$_POST["text"];
Bu isim ve text nerden geldi diye soracak olursanız en yukarıdaki
ile başlayan HTML sayfasını inceleyin bakalım. orada isim ve text adında iki bölüm var mı ?HTML sayfasına dikkatli bakarsanız görürsünüz:
isminiz: isim" id="isim" />
Mesajınız: text</span></b>" id="text" cols="45" rows="5">
Yani: Form üzerinde belirtilen mesaj kutularının hepsi $_POST değişkeninin içinde paketlenmiş olarak bulunur.
2- MESAJLARI VERİTABANINA KAYDETMEK
Şimdi formla gelen bilgiyi veritabanına kaydedelim. Veritabanı konusuna hiç başlamadıysanız şu iki dersi mutlaka okuyun. çünkü burda bağlantı nedir diye anlatmayacağım.Şurda anlattım: Mysql Bağlantı
Önceki derslerden Query dilini hatırlayın. Burada bilgi kaydetmek için INSERT INTO kelimesi ile başlayan query cümlesini kullanacağız.
Cümle şöyle olacak:
INSERT INTO `mesajlar` (`yazan`,`mesaj`,`zaman`) VALUES (´ahmet´, ´selam millet´, NOW() );
Kırmızı ile gösterdiklerim. Sütun isimleri Mavi ile gösterdiklerim ise kaydedilecek bilgiyi belirliyor. Yani sağdaki bilgiyi soldaki alanlara sıra ile kaydetmesini söylüyoruz.
kaydet.php sayfasında önce veritabanı bağlantısı yapıp ardındna bu komutu çalıştırmanız yeterli, tek farkla: isim hanesine ahmet yazmayacağız. $_POST[isim] yazacağız.
mysql_connect("localhost","root","");
mysql_select_db("kutuphane");
$ad=$_POST["isim"];
$mesaj=$_POST["text"];
mysql_query("INSERT INTO `mesajlar` (`yazan`,`mesaj`,`zaman`)
VALUES (´$ad´, ´$mesaj´, NOW() );");
echo "Mesaj Kaydedildi";
Hepsi bu kadar bitti
Madem bu kadar kısaydı millet neden sayfalarca kod yazıyor diye sorabilirsiniz. Güvenlik sebebi ile birkaç ufak ekleme yapmak gerekiyor. Bunları aşağıdaki bitmiş örnekte bulabilirsiniz. Ama işin özünü anlamadan güvenlik işimize yaramaz.
Not: Alan isimlerindeki ve Veritabanı ismindeki Küçük/Büyük harflere dikkat edin. Ben yaptığım örnekte sorun çıkmasın diye hepsini küçük harfle yazdım.
3- MESAJLARI LİSTELEMEK
Bu konuda fazla detaya girmeyeceğim Query idlini kullanarak SELECT * FROM mesajlar cümlesini kullanarak başka bir php sayfası daha yazacağız.
liste.php
mysql_select_db("kutuphane");
$bilgi = mysql_query("SELECT * FROM mesajlar ");
if($bilgi)
{
while($satir = mysql_fetch_array($bilgi))
{
echo $satir[yazan].´
´;
echo $satir[mesaj].´
´;
}
}
Bu konudaki POST ve GET kavramını anladıysanız dersimiz başarıya ulaşmış demektir.
Takıldığınız yeri aşağıya yazınız
Dersin bitmiş hali: Dosya indir : basitziyaretcimesaj.zip

.
TAM OLARAK ANLAYAMIYORUM..
BAZILARINI ANLADIM BAZILARINI ANLAMADIM.. SANIRIM VERİ TABANI OLUSTURURKEN HATA YPTIM CUNKU
kutuphane ve mesajlar diye ayrı tablo var gibi anladım ben nmesajlar diye de bir sey olusturmadım. mesajlar nerden gldi aklım orda karıstı aslında
ziyaretçi formu
ben yaptım mesaj kaydedildi dedi kaydet.php
ama liste.php dosyasında;
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\xampp\htdocs\liste.php on line 11
şu hatayı aldım, kaydedilen mesajı okuyamadım yani...
1) veritabanının içinden (phpmyadminden) okunabilir mi kaydedilen bu mesajlar?
2) veri tabanı işini hiç karıştırmadan php ile, yazılan mesajların bir php sayfasına kaydedilip, içini açıp bakıldığında görünmesi sağlanabilir mi?
Eline sağlık.Buna bakmadım ama videolu derste çok iyi anladım.Hiç bir hata yok.Çok iyi kaydediyor. :) Yalnız listele.phpdeki dosyalara ben echo "<br>"
nin dışında diğer html kodlarını nasıl yazabilrim.ben tablonun en iyisi olacağını düşünüyorum.Yardım ederseniz çok sevinirim.Bir de şu Türkçe sorunu olmasa çok güzel olacaktı.
Tekrar çok teşşekürler.Sayenizde hiç bir şey bilmezken şimdi çok iyi anlıyor ve öğreniyorum.Ama tabi kendi kendimi geliştimeliyim.Ama bu php html gibi değil yav. :D
liste.php´de hata
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\AppServ\www\summerworks\liste.php on line 11
maalesef ben de ZeRDuShT ile aynı hatayı aldım... Ama yine de php'nin "p"sini bilmezken, bugün gerçekten çok şey öğrendim sayenizde :D Gerçekten çok güzel bi anlatımınız var
{ echo $satir[yazan].´ ´; echo $satir[mesaj].´ ´; } }
echo $satir[yazan].' '; echo $satir[mesaj].' '; } }
Hata!!!
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: NO) in C:\AppServ\www\summerworks\liste.php on line 2
Şimdi de bu hatayı aldım
Arkadaşlar bazı yerleri değiştirdim ve sorunun liste.php'de değil, kaydet.php'de olduğunu gördüm ve;
Hata3 diyor, neden acaba ??
Arkadaşlar sorunu hallettim; örnek: mysql_query("INSERT INTO `mesajlar` (`yazan`,`mesaj`,`zaman`) Bu bölümde mesela 'yazan' yerine tırnaksız direk yazan yazılacak, ama values kısmında tırnaklı yazılacak :)
vallaha arkadaşlar sabahtan beri ugrassıom bi turlu bi sonuç alamadım
include (ayar.php)
$isim = $HTTP_POST_VARS['isim'];
$email = $HTTP_POST_VARS['email'] ;
$mesaj = $HTTP_POST_VARS['mesaj'] ;
if(mysql_query("INSERT INTO `ziyarteci` (isim , email , mesaj) VALUES ('$isim', '$email', '$mesaj');")
{
print "Mesajiniz Kaydedilmistir. Sayfayi kapatabilirsiniz.";}
else
{ print "Bir Hata Olustu xxx Bul su hatayi.";
}
?>
kayit.php yukarıda ve formu çalıştırıp gönder dediğimde hep
Parse error: parse error in C:\wamp\www\kayit.php on line 8
hatasını alıorum ve hiçbir veri kaydedilememiş sebebi nedir acaba?
birisi bana yardımcı olabilirm i?
merhaba alisami
sorguyu şu şekilde güncellersen hem hatalarını daha kolay görürsün hem de fazla karışık olmaz
<?php
include (ayar.php)
$isim = $_POST['isim'];
$email = $_POST['email'];
$mesaj = $_POST['mesaj'];
$sorgu = "INSERT INTO `ziyaretci` (isim, email, mesaj) VALUES ('$isim', '$email', '$mesaj')";
$sql=mysql_query($sorgu);
if($sql)
{
print "Mesajiniz Kaydedilmistir. Sayfayi kapatabilirsiniz.";
}
else
{
print "Bir Hata Olustu xxx Bul su hatayi.";
}
?>