PDA

View Full Version : نحوه چاپ گزارش گیری در ای جکس



shekofeh
پنج شنبه 22 فروردین 1387, 14:46 عصر
سلام.
کد زیر را برای گزارش گیری در ای جکس استفاده کردم ولی کار نمی کند.اشکالش در کجاست؟
در سرور این کد:



function runselect()
{
$query="select * from `d`";
$result=mysql_query($query);
if ( isset($result) and (mysql_num_rows($result)>0) )
{
$res.="<table align='center' border='1' width='40%'>
<tr>
<td>نام</td><td>شماره</td>
</tr>
while($row=mysql_fetch_object($result))
{
<tr>
<td>$row->name</td><td>$row->id</td>
</tr>
}
</table>";
}
return $res;
}



در جاوا اسکریپت این کد:



agent.call('','runselect','show');
function show(res)
{
document.getElementById('div1').innerhtml=res;
}


در اچ تی ام ال هم این کد:



<div id="div1"></div>

ممنون میشم جواب بدین.:لبخند:

امید امرایی
پنج شنبه 22 فروردین 1387, 17:30 عصر
در قسمت
if ( isset($result) and (mysql_num_rows($result)>0) )استفاده از isset روش مناسبی نیست چرا که در صورت false بودن result در mysql_num_rows خطا ایجاد میشه و مطمئنا response خارج از انتظار خواهد بود . روش بهتر اینه که کد رو به
if ($result && mysql_num_rows($result)>0 ) تغییر بدید.

و مهمترین اشتباه که یک اشتباه نحویه اینکه شما در قسمت


$res.="<table align='center' border='1' width='40%'>
<tr>
<td>نام</td><td>شماره</td>
</tr>
while($row=mysql_fetch_object($result))
{
<tr>
<td>$row->name</td><td>$row->id</td>
</tr>
}
</table>";

در حالی که هنوز عملیات الحاق رشته به پایان نرسیده اقدام به اجرای یک حلقه while کردید .

روش صحیح اینه :


$res .= "<table align='center' border='1' width='40%'>
<tr>
<td>نام</td><td>شماره</td>
</tr>";

while($row = mysql_fetch_object($result)){
$res .= "<tr>
<td>".$row->name."</td><td>".$row->id."</td>
</tr>";
}

$res .= "</table>";

shekofeh
پنج شنبه 22 فروردین 1387, 17:46 عصر
سلام
این کار را کردم ولی درست نشد!
فکر می کنم قسمت سرور مشکل دارد.یکی کمک کند.:گریه:

امید امرایی
پنج شنبه 22 فروردین 1387, 17:48 عصر
بعید می دونم
کد اصلاح شده خودتونو بزارید شاید بازم مشکل داشته باشه

shekofeh
پنج شنبه 22 فروردین 1387, 17:53 عصر
<?php
require_once("includes/connect.inc.php");
include_once("agent.php");
$agent->init();
// server side function call
function insert($id,$name)
{

$query = "INSERT INTO `d` (`id`,`name`) VALUES ('$id','$name');";


$result = mysql_query( $query,0 );
if (!$result)
{
return "false";
}
else
return "true";

}
function runselect()
{
$query="select * from `d`";
$result=mysql_query($query,0);
if ( ($result) && (mysql_num_rows($result)>0) )
{
$res.="<table align='center' border='1' width='40%'>
<tr>
<td>نام</td><td>شماره</td>
</tr>";
while($row=mysql_fetch_object($result))
{
$res.="<tr>
<td>".$row->name."</td><td>".$row->id."</td>
</tr>";
}
$res.="</table>";
}
return $res;
}

?>

shekofeh
پنج شنبه 22 فروردین 1387, 17:57 عصر
<script>
function runinsert()
{
id=document.getElementById('id').value;
name=document.getElementById('name').value;
agent.call('','insert','callback',id,name);
}
function callback(str)
{
if (str=='false')
{
alert("error insert information");
}
else
alert("insert data");
}
agent.call('','runselect','show');
function show(res)
{
document.getElementById('div1').innerhtml=res;
}
</script>

shekofeh
پنج شنبه 22 فروردین 1387, 18:00 عصر
درج می کند فقط نمایش نمی دهد!

امید امرایی
پنج شنبه 22 فروردین 1387, 18:00 عصر
این کد قاعدتا نباید مشکلی نداشته باشه


<?php
require_once("includes/connect.inc.php");
include_once("agent.php");
$agent->init();
// server side function call
function insert($id,$name){
$query = "INSERT INTO `d` (`id`,`name`) VALUES ('$id','$name')";
$result = mysql_query($query);
if (!$result)
return false;
else
return true;
}

function runselect(){
$query="select * from `d`";
$result=mysql_query($query);
if ( ($result) && (mysql_num_rows($result)>0) ){
$res.="<table align='center' border='1' width='40%'>
<tr>
<td>نام</td><td>شماره</td>
</tr>";
while($row=mysql_fetch_object($result)){
$res.="<tr>
<td>".$row->name."</td><td>".$row->id."</td>
</tr>";
}
$res.="</table>";
return $res;
}
}
?>

البته به این شرط که ارتباط شما با دیتابیس برقرار شده باشه . چون من اینجا هیچ Connection نمی بینم فرض رو بر این گذاشتم که خودتون این کار رو انجام دادین

shekofeh
پنج شنبه 22 فروردین 1387, 18:05 عصر
} if
کجا بسته شده؟

امید امرایی
پنج شنبه 22 فروردین 1387, 18:13 عصر
اصلاح شده اگه refresh کنید می بینید

shekofeh
پنج شنبه 22 فروردین 1387, 18:23 عصر
:لبخند:درست نشد!
چه کنم؟

shekofeh
پنج شنبه 22 فروردین 1387, 18:25 عصر
درست نشد چه کنم؟

امید امرایی
پنج شنبه 22 فروردین 1387, 18:33 عصر
شما چطور با دیتابیستون ارتباط برقرار کردید
اصلا ارتباط برقرار شده ؟

shekofeh
پنج شنبه 22 فروردین 1387, 19:01 عصر
بله در فایل دیگری به نامconnect.inc.php در پوشه includes


<?php
$host = "localhost";
$username = "root";
$password = "";
$database = "a";

mysql_connect($host,$username,$password) or die("Error: ".mysql_error());

mysql_select_db($database);
?>

shekofeh
پنج شنبه 22 فروردین 1387, 19:04 عصر
تازه برای پروژه ام میخوام.الان یک مثال ساده برای خودم نوشتم تا ببینم چطور باید بنویسند بعد در پروژه ام استفاده کنم.
کمک!

shekofeh
پنج شنبه 22 فروردین 1387, 20:18 عصر
کسی نیست یک راهنمایی کند؟
خوب اینجا جواب می گیریم!!

ali_sed
جمعه 23 فروردین 1387, 01:53 صبح
همیشه تو نوشتن کدها دقت کن در عیب یابی برنامه قبل از هر کاری از تایپ صحیح دستور ها مطمئن شو اولین چیزی که به چشم من خورد ( با توجه به اینکه جاوااسکریپت به کوچک و بزرگ بودن حروف حساس هست اول رفتم سراغش) اینه که شما innerHTML رو باید درست تایپ کنید یعنی اینی که دیدی( HTML با حروف درشت باشه).حالا دوباره امتحان کن و قبل از نوشتن اینکه دوباره کار نمی کنه بقیه کدهاتم چک کن (بخصوص جاوااسکریپ ):لبخند:

shekofeh
جمعه 23 فروردین 1387, 08:48 صبح
سلام.بله درست شد یعنی رکورد های جدول را نمایش می دهد اما وقتی درج می کنیم باید refresh کنیم تا رکورد تازه درج شده نمایش داده شود.در صورتی که همان وقت که درج می کنیم همان لحظه باید در پایین نمایش دهد؟
ممنون میشم دوباره کمکم کنید:خجالت: