-
July 21st, 2014, 00:39
#1
مشکل با توابع
درود دوستان
یه مشکل ساده داشتم تو php واسه فراخوانی یه تابع .
من یه اسکریپت چت نوشتم کولچو هستش البته چت خصوصی نه عمومی
یه مشکلی داشتم .
کد PHP:
<?php include('config1.php') ;include('div.php');?>
<html>
<head>
<title>chat-admins</title>
<link rel="stylesheet" href="css/style.css">
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js'></script>
<script src="js/organictabs.jquery.js"></script>
<script>
$(function() {
$("#example-one").organicTabs();
setInterval(function(){
$('.div').load('div.php');
}, 1000);
});
</script>
</head>
<body>
<div id="page-wrap">
<h1>Organic Tabs</h1>
<p>The purpose of this demo is to show a tabbed area where the content in tabbed panels are
of different heights. When we switch between tabs, the content below is gently moved up or down
to accomodate.</p>
<div id="example-one">
<?php
$num = 1 ;
$pages=0;
$db->open();
$db->query("select distinct session from chat ");
$session = array();
echo '<ul class="nav">';
while($row = $db->fetchObject()){
if($num==1){
echo '<li class="nav-two"><a href="#'.$row->session.'" class="current">'.$row->session.'</a></li>';
}else{
echo '<li class="nav-three"><a href="#'.$row->session.'">'.$row->session.'</a></li>';
}
$session[] = $row->session;
$num++;
}
echo '</ul>';
////////////////////////////////////////////////////
echo '<div class="list-wrap">';
///////////////////////////////////////////////////
$count = count($session);
$i=0;$j=0;
while($count>0){
if($i!=0){
echo'<ul id="'.$session[$i].'" class="hide"><div id="div">';
}else{
echo'<ul id="'.$session[$i].'">
';
}
?>
<div class="div">
<?php
test($session[$i]);
?>
</div>
<?php
echo'
<form method="post">
<input type="hidden" name="hiid" value="'.$session[$i].'">
<input type="submit" name="sub">
<textarea name="text"></textarea>
</form>';
$i++;
$count--;
echo'</ul>';
///////////////////////////////////////////////////
}echo'</div>';
///////////////////////////////////////////////////
?>
</div>
</div>
<?php
if(isset($_POST['sub'])){
echo $_POST['hiid'];
}
?>
</body>
</html>
این بخش مدیریتی هست همه چی معلومه دیگه :دی و از جی کئوری تب استفاده کردم و ...
اینم همون صفحه ای که هی می خوام فراخوانی کنم به عنوان ریفرش که پی ام ها رو پشت سر هم دریافت کنم
کد PHP:
<?php
function test(){
include 'config1.php';
$db->open();
$db->query("select * from chat where session='$session[$i]'");
while($rows=$db->fetchObject()){
echo'<li>'.$rows->name.','.$rows->family.':'.$rows->payam.'</li>';
};
}
?>
ولی با این ارور مواجه میشم
کد PHP:
( ! ) Fatal error: Cannot redeclare test() (previously declared in C:\wamp\www\tphp\chat\div.php:2) in C:\wamp\www\tphp\chat\div.php on line 9
-
-
July 21st, 2014 00:39
# ADS
-
July 21st, 2014, 02:28
#2
پاسخ : مشکل با توابع
از
include_once
استفاده کنید
-
تعداد تشکر ها از hamid53214 به دلیل پست مفید
-
July 21st, 2014, 02:51
#3
پاسخ : مشکل با توابع
اون وقت صفحه یه بار اجرا میشه کلا می خوام هر ثانیه ریفرش بشه تا داده های جدید رو ببینم .
-
-
July 21st, 2014, 03:13
#4
پاسخ : مشکل با توابع
تعریف تابع فقط یک بار لازمه. اجرای تابع فقط با دستور
test();
امکان پذیره
-
-
July 21st, 2014, 14:11
#5
پاسخ : مشکل با توابع
خب منم همون کار رو کردم دیگه :|
-
-
July 21st, 2014, 14:24
#6
عضو انجمن
پاسخ : مشکل با توابع
محتوای فایل div.php اون متن دومی هست ؟ چون فک کنم کامل نزاشتینش .
-
تعداد تشکر ها از iMohsen به دلیل پست مفید
-
July 21st, 2014, 14:37
#7
پاسخ : مشکل با توابع
بعلی همونه نه تایع کامل هست .
چون فقط یه دونه اونه رفرش میزنه .
فک کنم نشه اینکار رو کرد یا با متغییر های سوپر گلوبال بشه یا هم با ob_flush تست نکردم حقیقتش
-
-
July 21st, 2014, 14:42
#8
عضو انجمن
پاسخ : مشکل با توابع
اول این که چرا تابع رو نمیزارین تو همون صفحه ؟
دوم این که اگر با include_once بزارید فقط یک بار include میشه ولی برای دفعات بعدی باز هم میتونه اجرا بشه .
سوم این که شما میتونی قبل از این که function شروع بشه اول چک کنی ببینی این function وجود داره یا نه .
PHP: function_exists - Manual
-
-
July 21st, 2014, 15:13
#9
پاسخ : مشکل با توابع
با include_once یا بدون اینکه اینکلود کنم همون تابع یه بار اجرا میشه جال ابنکه الان چک کردم ببینم اصلا تابع وجود داره نشناخت :|
درصورتی که حداقل یه بار اجرا میشه . فک کنم اون جی کئوری هم مشکل داشته باشه با این اوصاف چون یه بار flase داد :|
if(function_exists('test()')){
//test($session[$i]);
echo "true";
}else{
echo "false";
}
-
-
July 21st, 2014, 15:40
#10
پاسخ : مشکل با توابع
setInterval(function(){
$('.div').load('div.php');
}, 1000)
اینجا هر یه ثانیه دوباره تابعو تعریف کردی
-