Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

Php Dosyamda Ajax İle Yorum Ekleyemedim

WebWizard

0
Onaylı Üye
Üye
Katılım
5 Haziran 2008
Mesajlar
80
Açılan Konu
10
Tepki puanı
0
Sitemde bazı videoları yükleyip yayınlıyorum. Videonun altında sayfayı yenilemeden yorum yazılsın istiyordum Ajax tavsiye ettiler okudum ettim araştırdm bazı kodlar bulup düzenledm. Ama olmadı :( gönder butonuna basıyorum hiç bişi olmuyo :(

videonun bulunduğu sayfanın adı izle.php ve izle.php?id=1 gibi id'ye göre mysql'dan video çekiyor. form gizli olarak $vid değişkenini gönderiyor. $vid de videonun id si oluyor

buyrun form:


<td class="tableh1">Yorumlar</td>
</tr>
<tr>
<td width="467" class="button">

<form id="yorum_formu" method="post" action="yorumekle.php">
Ad :     
<input type="text" name="ad" size="35"><br>
Yorum:
<textarea rows="4" name="yorum" cols="51"></textarea><br>

<input type="hidden" name="vid" value="<?=$vid;?>">

<input type="button" onClick="gonder()" value="Gönder">

</form>

<script>

function gonder(){

$('yorum_formu').send({

onComplete: function(){

alert("Başarıyla gönderildi");

}

});

}

</script>



Bu da yorumekle.php

PHP:
<?php
include("Settings.php");
$ad=$_POST["ad"];
$yorum=$_POST["yorum"];
$vid=$_POST["vid"];
$date= date("Y/m/d");

$ekle=mysql_query("insert into comments values (ad,yorum,vid,date)values('$ad','$yorum', '$vid', '$date')");

}

}


?>

nerede hatalar var?
birde bu yorum eklendikten sonra yorum ekleme formunun altında yorumları tarihe göre sıralamam için ne yapmam gerekir.
videonun bulunduğu sayfanın adı izle.php ve izle.php?id=1 gibi id'ye göre mysql'dan video çekiyor. form gizli olarak $vid değişkenini gönderiyor. $vid de videonun id si oluyor
Tabi bunu da göz önünde bulundurarak
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
Javascript namına birşey göremedim. Benim ajax fonksiyonumu veriyim kullan.

ajax.js
Kod:
function yorumekle() {
var xmlHttpReq = false;
var self = this;
	
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
   	
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('POST', 'yorumekle.php', true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function() {

document.getElementById("yorum").innerHTML = '<b>Lutfen bekleyin...</b>';

if (self.xmlHttpReq.readyState == 4) {
document.getElementById("yorum").innerHTML = self.xmlHttpReq.responseText;
}

}

var form = document.forms['yorum_formu'];
var ad = form.ad.value;
var yorum = form.yorum.value;
var vid = form.vid.value;
qstr = 'ad='+escape(ad)+'&yorum='+escape(yorum)+'&vid='+escape(vid);
self.xmlHttpReq.send(qstr);
}

Ilk dosya

PHP:
<script language="Javascript" src="ajax.js"></script>

...
...
<textarea rows="4" name="yorum" cols="51"></textarea><br>
<input type="hidden" name="vid" value="<?=$vid;?>">
<input type="button" onClick="gonder()" value="Gönder">
<div id="yorum"></div>
</form>

PHP

PHP:
<?php
include("Settings.php");
$ad=$_POST["ad"];
$yorum=$_POST["yorum"];
$vid=$_POST["vid"];
$date= date("Y/m/d");

$ekle=mysql_query("insert into comments values (ad,yorum,vid,date)values('$ad','$yorum', '$vid', '$date')") or die (mysql_error());
if ($ekle) { echo 'Yorumunuz eklendi'; }
?>

Bu tarz durumlarda hatayı teşhis edebilmek için, proses eden ikinci php dosyasına kontrol echo'ları ekleyin. Ajax'da da gelen çıktıyı benim yaptığım gibi bir <div> alanına yazdırın. Yoksa hata javascript'de mi, php'de mi bulmak zorlaşır. Ayrıca firefox'un Hata Paneli IE'ye göre bir hayli gelişmiş javascript hataları için.
 

WebWizard

0
Onaylı Üye
Üye
Katılım
5 Haziran 2008
Mesajlar
80
Açılan Konu
10
Tepki puanı
0
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'values('Wiz','deneme yorumu ', '19', '2008/08/02')' at line 1

böle bir hata aldm
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
SQL kodunu doğru yazdığını varsayarak bakmamıştım.
Doğru kullanım
INSERT into tablo (alan1,alan2,alan3) VALUES ('$deger1','$deger2','$deger3')

Ayrıca date alanın MYSQL(DATE) tipi ise, slash değil tire çek aralara.
 

WebWizard

0
Onaylı Üye
Üye
Katılım
5 Haziran 2008
Mesajlar
80
Açılan Konu
10
Tepki puanı
0
ama aynı sayfada olmuyor yorumunuz eklendi diyor ancak yorumekle.php ye gidiyor ajax ın amacı sayfayı yenilemeden eklemk değil mi?
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
<form>'dan action'ı kaldır.
submit kullanma, button kullan.
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
Adresi ver bakalım. onClick koyduysan tıklanması gerekiyor. Java'da hata olabilir.
 

WebWizard

0
Onaylı Üye
Üye
Katılım
5 Haziran 2008
Mesajlar
80
Açılan Konu
10
Tepki puanı
0
http://hilarydufftr.com/hilarytube/izle_yorumlu.php?id=20

bu form

<script language="Javascript" src="ajax/yorum.js"></script>
.
.
.
<td class="tableh1">Yorumlar</td>
</tr>
<tr>
<td width="467" class="button">

<form id="yorum_formu" method="POST" >
Ad :     
<input type="text" name="ad" size="35"><br>
Yorum:
<textarea rows="4" name="yorum" cols="51"></textarea><br>
<input type="hidden" name="vid" value="<?=$vid;?>">
<input type="button" onClick="gonder()" value="Gönder">
<div id="yorum"></div>
</form>



Bu yorumekle.php
PHP:
<?php
include("Settings.php");
$ad=$_POST["ad"];
$yorum=$_POST["yorum"];
$vid=$_POST["vid"];
$date= date("Y-m-d");

$ekle=mysql_query("insert into comments (ad,yorum,vid,date) values ('$ad','$yorum', '$vid', '$date')") or die (mysql_error());
if ($ekle) { echo 'Yorumunuz eklendi'; }
?>
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
Fonksiyonu javascript'te yorumekle() diye tanımlı.
Ya onu gonder() yap ya da formdaki çağrıyı yorumekle() ye çevir.
 

WebWizard

0
Onaylı Üye
Üye
Katılım
5 Haziran 2008
Mesajlar
80
Açılan Konu
10
Tepki puanı
0
teşekkürler oldu :)

şimdi mysql a eklenen bu yorumlardan son 5 tanesini nasıl ekrana basıcam onu da bilmiyorum :(
 
Üst