ورود

View Full Version : سوال: مشکل در ساخت حلقه ای که چند فیلد دیتابیس را باهم در ajax چاپ کند



amirreza99
چهارشنبه 24 دی 1393, 15:52 عصر
سلام به همه.این سایت مثل سرزمین مشکل گشایی می مونه.:لبخند:


من دارم یه forum یا همون انجمن می سازم.
میخوام با ajax چند فیلد رو همزمان از دیتابیس بیرون بکشم و نشون بدم.
اولش که فقط یه فیلدو از دیتابیس درخواست می کردم خوب جواب میداد.بعد تصمیم گرفتم چندتا فیلد بشه که به مشکل برخوردم.
تازه از دیدن فایلهایی که براتون قرار دادم گیج نشین،من تازه کارم واسه همین حلقه ای که برای گرفتن اطلاعات از دیتابیس نوشتم بی سوادانه و ابتداییه.
می خواستم شما یه حلقه ی مناسب برام ترتیب بدین.


اگه فایلها تو IE کار نکرد تو Firefox جواب میده.این مهم نیست.فقط یه حلقه میخوام.اینی که خودم نوشتم دو دقیقه هیچ عکس العملی نداره بعدش تنها اطلاعات اولین تاپیک دیتابیسم رو بی نهایت بار لود می کنه.


راستی این صفحه هایی که اینهمه در موردشون گفتم کارشون اینه که با رسیدن کاربر به آخر صفحه باید واکنشی که گفتمو نشون بدم.فقط حلقه ی منو درست کنین.


بقول قدیمیا خدا پدر شما و باعث و بانی این سایتو بیامرزه.


فایلی که کاربر با آن کار دارد(web-ajax.html):




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


<script type="text/javascript">


var printed=1;


function loadFile()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.write(xmlhttp.responseText);
}
}
xmlhttp.open("GET","ajax-get.php?printed="+printed,true);
xmlhttp.send();
}
//]=]=>
</script>
<style type="text/css">
body{
font-family:Tahoma, Geneva, sans-serif;
font-size:12px;
direction:rtl;
}
</style>
</head>
<body>
**********
window.onscroll = function(){
if((window.innerHeight+window.scrollY) >= document.body.offsetHeight){
loadFile()
printed+=4
}
}
</script>
<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>

1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
1<br>
</body>
</html>



و فایلی که تاپیکها را از دیتابیس درخواست می کند(ajax-get.php):




<?php
if(isset($_GET['printed']))
{
$printed=$_GET['printed'];
$connection = mysqli_connect('localhost','root','','database') or die(mysqli_error($connection));


for ($print=$printed; $print=$printed+3; $print++)
{
$selectquery = "SELECT content,author FROM topics WHERE id='$printed'";
$selectresult = mysqli_query($connection,$selectquery);
$selectcontent= mysqli_fetch_array($selectresult);


$selectquery = "SELECT query FROM posts WHERE query='$printed'";
$selectresult = mysqli_query($connection,$selectquery );
$selectnumanswer= mysqli_num_rows($selectresult);


echo $selectcontent ['content'];


echo "<br>".$selectcontent ['author'];


echo "<br>".$selectnumanswer;


echo "<form method=GET action=answer-writing.php> <input type=text name=answer> <input type=hidden name=query value=$printed> <input type=submit name=answerbutton value=answerthis> </form>" ;
}
}
else
{
echo '<META HTTP-EQUIV="Refresh" content="0; url=http://localhost/web-ajax.html">';
}
?>

id1385
جمعه 26 دی 1393, 09:44 صبح
برای بی نهایت مشکل اینجاست :


for ($print=$printed; $print=$printed+3; $print++)


باید به این شکل باشه


for ($print=$printed; $print<=($printed+3); $print++)


بهتره برای دریافت خروجی از json استفاده کنید