PDA

View Full Version : سوال: مشکل در چاپ متغیر!!!



new_programer_79
جمعه 16 مرداد 1394, 01:01 صبح
سلام
من دارم روی یک اسکریپت چت کار میکنم و در فایل chat.php میخوام در رحله اول سوال طرف رو که توی دیتابیس از قبل رفته چاپ کنم
<?php
session_start();
$id=$_GET['id'];
if(isset($id)){
global $id;
global $qs;
global $answerer;
global $sp;
global $name;
include('config.php');
$conn=new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8 ;",$username,$password);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPT ION);
$id=$conn->quote(htmlentities($id));
$find=$conn->prepare("SELECT * FROM qs WHERE id=:id");
$find->bindParam(':id',$id);
$find->execute();
if($rows=$find->fetch(PDO::FETCH_ASSOC)){
$qs=$rows['question'];
$answerer=$rows['answerer'];
}
$answerer=explode("(",$answerer);
$ansgiver=$conn->prepare("SELECT * FROM ruhani WHERE name=:answerer");
$ansgiver->bindParam(':answerer',$answerer[0]);
$ansgiver->execute();
if($row=$ansgiver->fetch(PDO::FETCH_ASSOC)){
$name=$row['username'];
$avatar=$row['avatar'];
$sp=$row['sp'];
}
class chat {
public function fetchMessage() {
include('config.php');
global $id;
$conn=new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8 ;",$username,$password);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPT ION);
$ans=$conn->prepare("SELECT answere FROM ans WHERE q_id=:id ");
$ans->bindParam(':id',$id);
$ans->execute();
}
public function throwMessage($id, $text,$sayer){
include('config.php');
global $id;
$conn=new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8 ;",$username,$password);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPT ION);
$send=$conn->prepare("INSERT INTO ans(q_id,answere,sayer) VALUES(:q_id,:text,:sayer) ");
$send->bindParam(':q_id',$id);
$send->bindParam(':text',$text);
$send->bindParam(':sayer',$sayer);
$send->execute();
}
}
$chat = new chat();
?>
<!DOCTYPE html>
<head>
<title>Example Title</title>
<meta charset="utf-8">
<link rel="stylesheet" href="style/style.css" media="screen, projection" />
<script src="js/jquery-1.6.3.min.js"></script>
<script src="js/chat.js"></script>
</head>
<body>
<div class="all">
<div class="env">
<span><?php echo $name ?>|<?php echo $sp ?></span>
<span>Hi,Can I help you?</span><br>
<span>من:<?php echo $qs ?></span>
<div class="messages"></div>
</div>
<textarea name="ask_ans" class="ask_ans" id="ask_ans" placeholder="Please write here!"></textarea><br>
<input type="submit" class="submit" name="submit" value="send" />
<input type="hidden" id="hidden" value=<? echo $id ?> name="id" />
<input type="hidden" id="hidden2" value=<? echo $_SESSION['$username'] ?> name="username"/>
</div>
</body>
<?php
}
?>
خوب همون طور که می بینید توی این قسمت :
<span><?php echo $name ?>|<?php echo $sp ?></span>
<span>سلام،در خدمتم</span><br>
<span>من:<?php echo $qs ?></span>
دارم یک سری متغیر رو چاپ میکنم اما متاسفانه این متغیر ها وقتی که کد رو اجرا میکنم نمایش داده نمیشن:ناراحت:
کسی میدونه ایراد چیه؟؟

new_programer_79
جمعه 16 مرداد 1394, 01:52 صبح
ضمیمه:
با این فایل js اون class ها رو فراخوانی میکنم:
var chat = { }
chat.fetchMessage=function (){
$.ajax({
url:"send.php",
type: 'POST',
data: {method : 'fetch'},
cache:false,
success: function(data){
$(".all .env .messages").html(data)
}
});
}
chat.throwMessage=function (id,message,sayer){
if($.trim(message).length != 0 ){
$.ajax({
url:"send.php",
type: 'POST',
data: {method : 'throw' , id : id , message : message , sayer : sayer },
cache:false,
success: function(data){
chat.fetchMessage();
$(".ask_ans").val('');
}
});
}
}
chat.entry=$(".all .submit");
chat.entry.bind('click',function (evt){
evt.preventDefault();
chat.throwMessage($("#hidden").val(),$(".ask_ans").val(),$("#hidden2").val());
});
chat.interval=setInterval(chat.fetchMessage(),5000 );
chat.fetchMessage()

barnamenevis2016
شنبه 17 مرداد 1394, 01:00 صبح
سلام...یکم شلوغ پلوغه:لبخندساده:
در اجرا چه خطایی می ده.بهتره یک alert بزارید ببینید چی میشه.مثلا توی تابع fetchMessage که هر 5 ثاینه اشتب نکنم، یکبار اجرا می شه...یک

alert(data)
رو اضافه کنید و ببینید چی پیغام می ده و یا نمایش می ده، اصلا اجرا می شه؟

new_programer_79
شنبه 17 مرداد 1394, 01:19 صبح
سلام
خیلی ممنون از پاسخ .اگر یادتون باشه من چند وقت پیش یک تاپیکی رو تحت عنوان نوشتن یک اسکریپت چت ایجاد کردم و شما به من یک آموزش از PHPAcademy معرفی کردید.
من اون رود دیدم و شروع به ساخت کردم.
این مشکل این بالا رو خودم حل کردم (من متغیر رو با استفاده از PDO::Quote() ویرایش میکردم و وقتی اون رو explode() میکردم نمی تونست درست پیدا کنه و ارور میداد)اما الان مشکل اصلی من اینه که اطلاعات send و receive نمیشه از طریق Ajax.
من کل پروژه رو ضمیمه میکنم شما لطف کنید یک نگاه بندازید.خیلی ممنون میشم:قلب::قلب:
http://bayanbox.ir/download/4834163513350458423/chat.zip
فکر میکنم بهتر باشه به فایل های chat.js,send.php,Core.php یه نگاهی بندازید:)
معذرت میخوام انقدر زحمت میدم به شما
ممنون

barnamenevis2016
شنبه 17 مرداد 1394, 02:14 صبح
سلام مجدد.شما این دو تا فایل زیر رو جا گذاری کنید.یک تغییر خیلی کوچیک دادم.
http://uplod.ir/8pu10ixr3kby/send.zip.htm
از طرفی شاید مشکل از کدای pdo باشه که من متاسفانه با pdo کار نمی کنم و واقعیت نتونستم بفهمم، مشکلی دارن و یا نه...غیر اون مشکلی ندیدم.

new_programer_79
شنبه 17 مرداد 1394, 02:58 صبح
سلام ممنون.
هنوز مشکل داره اما من یک کاری کردم:
من اومدم توی chat.js:
var chat = { }
chat.fetchMessage=function (id){
$.ajax({
url: "send.php",
type: "POST",
data: {method : 'fetch' , id : id},
async:false,
cache:false,
success: function(data){
$(".all .env .messages").html(data);
alert(data);
}
});
}
chat.throwMessage=function (id,message,sayer){
if($.trim(message).length != 0 ){
$.ajax({
url: "send.php",
type: "POST",
data: {method : 'throw' , id : id , message : message , sayer : sayer },
async:false,
cache:false,
success: function(data){
chat.fetchMessage();
alert(data);
$(".ask_ans").val('');
error:function(status,error)
alert(status);
alert(error);
}
});
}
}
$(".submit").click(function(e) {
e.preventDefault();
chat.throwMessage($(".hidden").val(),$(".ask_ans").val(),$(".hidden2").val());
});
chat.interval=setInterval(function(){chat.fetchMes sage($(".hidden").val())},5000);
chat.fetchMessage($(".hidden").val());
این قسمت ها رو ویرایش کردم:
chat.fetchMessage=function (id){
$.ajax({
url: "send.php",
type: "POST",
data: {method : 'fetch' , id : id},
async:false,
cache:false,
success: function(data){
$(".all .env .messages").html(data);
alert(data);
}
});
و
$.ajax({
url: "send.php",
type: "POST",
data: {method : 'throw' , id : id , message : message , sayer : sayer },
async:false,
cache:false,
success: function(data){
chat.fetchMessage();
alert(data);
$(".ask_ans").val('');
error:function(status,error)
alert(status);
alert(error);
}
});
وقتی که fetchMessage اجرا میشه alert(data) اجرا میشه و پیام میده اما وقتی روی send کلیک میکنم(throwMessage)باید اجرا بشه اما نه error اجرا میشه و نه success:ناراحت:بالاخره باید یکیش اجرا بشه دیگه نه؟؟؟

new_programer_79
شنبه 17 مرداد 1394, 21:01 عصر
دوستان لطفا مشکل دوم رو بررسی کنید:افسرده: