1. hadi
  2. عمومی - ایزابل، الستیکس، فری پی بی اکس ...
  3. دوشنبه, 12 خرداد 1393
سلام به همه
دوستان من یه برنامه با php نوشتم که سیستم شماره تلفن کاربر را گرفته و اون رو با یه فیلد تو دیتابیس مقایسه میکنه اگه این دو مقدار با هم برابر بود، سیستم
پیام خوش امد پخش میکنه. لطفا این کد رو چک کنید ببینید مشکل کجاست.ممنون.
[PHP]#!/usr/bin/php -q
<?php

set_time_limit(30);
require('phpagi.php');
error_reporting(E_ALL);
GLOBAL $cid,$result,$row,$agi;
$agi = new AGI();

$agi->answer();
$cid = $agi->get_variable("CALLERID(num)";);
$cid = $cid['data'];
//$agi-> say_number($cid,'1234567');
//connection to the database
$con=mysqli_connect("192.168.1.71","root","dbarman@1","customer";);
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$query="SELECT tell FROM user"
or die("Could not select user";);
$result=mysql_query($query);

if ($result == $cid) {
$agi-> stream_file('custom/wellcome');
}
elseif ($result != $cid) {
$agi-> stream_file('custom/Mix');
}

mysql_close($con);


$agi->hangup();
?>[/PHP]
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
دوستان کسی نیست جواب بده؟
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
تو این کد وقتی با داخلی که تو دیتابیسم ثبت شده تماس میگیرم طبیعتا باید شرط اول اجرا بشه و پیام خوش آمد پخش بشه اما سیستم شرط دوم رو اجرا میکنه!!!!
اساتید بزرگوار لطف کنن یه کوچولو از دانششون رو در ا ختیار بقیه بزارن..ممنون
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
سلام دوست عزيز

همانطور که توي سايت رسمي php هم نوشته، خروجي [COLOR=#000000][COLOR=#0000BB]mysql_query[/COLOR][/COLOR] يک resultset است.

[LEFT]For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
[/LEFT]

در حاليکه شما خروجي [COLOR=#000000][COLOR=#0000BB]result[/COLOR][/COLOR] را با مقدار [COLOR=#000000] [COLOR=#0000BB]cid[/COLOR][/COLOR] (که به احتمال زياد string است) مقايسه مي کنيد. به همين دليل است که هميشه شرط دوم اجرا مي شود.

در لينک PHP: mysql_query - Manual با مثال توضيح داده است.
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
درسته فيلد [COLOR=#0000ff]tell [/COLOR]از نوع [COLOR=#0000ff]varchar [/COLOR]است، اما وقتي شما کوئري [COLOR=#0000ff]select tell from user[/COLOR] را اجرا مي کنيد کل [COLOR=#0000ff]tell [/COLOR]هاي کاربران مختلف را ليست مي کند.

يک روش شايد بهتر اين باشه که کوئري [COLOR=#0000ff]select * from user where tell = $cid[/COLOR] را اجرا کنيد، به اين روش اگر [COLOR=#0000ff]cid [/COLOR]وجود داشته باشد حداقل يک [COLOR=#0000ff]row [/COLOR]به عنوان خروجي دارد.

[LEFT][PHP]
$query="SELECT * FROM user where tell = $cid";
$result=mysql_query($query,$con);
$count = mysql_num_rows($result);
if($count > 0)
$agi-> stream_file('custom/wellcome');
else
$agi-> stream_file('custom/Mix');
[/PHP]
[/LEFT]
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
این کد هم جواب نداد.نمیدونم مشکل از کجاست!!
شاید مشکل از دیتابیس باشه یا مشکل ارتباطی با دیتابیس؟
چطوری میشه فهمید که آیا به دیتابیس وصل شدیم یا نه؟
من از الستیکس2.4 استفاده میکنم، برای ارتباط با دیتابیس نیازی به نصب درایور odbc تو این نسخه نیست؟
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
سلام

الان که با دقت بيشتر کد شما رو بررسي کردم، در کد زير به جاي mysql_connect نوشته ايد mysqli_connect
[LEFT][PHP]
$con=mysqli_connect("192.168.1.71","root","dbarman@1","customer";);
[/PHP]
[/LEFT]
درستش اينه که به جاي خط فوق از خطوط زير در کد خود استفاده کنيد
[LEFT][PHP]
$con = mysql_connect("192.168.1.71","root","dbarman@1";);
mysql_select_db('customer', $con);
[/PHP][/LEFT]
من از کدي مشابه کدي که به شما پيشنهاد کردم، استفاده کردم و مشکلي نداشته. ديگه اگر اينم کار نکنه چيزي به ذهنم نمي رسه. :)
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
ممنون آقای مرادی که با حوصله جواب دادین
تست کردم جواب داد.اگه مشکلی بود تو همین تاپیک میزارم
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
سلام به همه
من تو کد پایین میخوام با دستور insert اطلاعاتی که از کاربر میگیرمو وارد دیتابیس کنم.موقع اجرای کد هیچ خطایی تو کنسول نمیبینم
اما اطلاعات وارد دیتابیس نمیشن!!دوستان باتجربه ببینن اشکال ازکجاست.
[PHP]#!/usr/bin/php -q
<?php

set_time_limit(30);
require('phpagi.php');
error_reporting(E_ALL);
$agi = new AGI();
$agi->answer();

$cid = $agi->get_variable("CALLERID(num)";);
$cid = $cid['data'];
$agi-> say_number($cid,'1234567');

//connection to the database
$con = mysql_connect("192.168.1.71","root","dbarman@1";);
mysql_select_db('customer', $con);

//execute the SQL query and return records
$query="SELECT * FROM user where tell = $cid";
$result=mysql_query($query,$con);
$count = mysql_num_rows($result);
if($count > 0){
$nan = $agi->get_data('custom/wellcome', 3000, 1);
$nan = $nan['result'];
$agi-> say_number($nan,'1234567');
if ($nan == 1) {
$lav = $agi->get_data('custom/lav', 3000, 2);
$lav = $lav['result'];
$bar = $agi->get_data('custom/bar', 3000, 2);
$bar = $bar['result'];
$pbar = $bar * 300;
$plav = $lav * 300;
$fact = $plav + $pbar;
$agi-> say_number($fact,'1234567');

}
}

mysql_query("INSERT INTO ordert (bar, lav) VALUES ('$pbar', '$plav')";);

$agi-> stream_file('custom/Mix');


//close the connection
mysql_close($con);

$agi->hangup();
?>[/PHP]
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
آقا این مشکل ما همچنان پا برجاست!!!!
کسی داکیومنتی در مورد وارد کرد اطلاعات به دیتابیس mysql با php-agi نداره؟؟
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
مشکل شما اصلا مربوط به AGI نیست.
شما اول باید بتونید با یک فایل PHP ساده به MYSQL وصل بشید و به سمت اون Query بفرستید بعد بیایید توی استریست و AGI بنویسید.

مشکل از سمت دستورات PHP شما هست
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
اگه دقت کرده باشید تو این کد ابتدا به دیتابیس وصل شدم و برای کاربر از این طریق پیام خوش آمد گویی پخش میشه.
اگه منظورتون اینه که باید یه فایل php جدای دیگه بنویسم،لطفا راهنمایی کنید.
چطوری میشه فهمید که آیا به دیتابیس وصل شدم یانه؟
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
اگر با موفقیت به دیتابیس متصل شده باشید و mysqli_connect_errno هیچ خطایی برنگرئونه شما می تونید دیتابیس خورد نظرتون را از mysql انتخاب کنید و به سمت اون query بزنید.
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
با دستور tsql هم از توی کنسول لینوکس میتونید چک کنید که آیا به درستی به دیتابیس متصل میشید یا نه
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
سلام

با توجه به آخرين کدي که فرستاديد فکر مي کنم اگر کد زير رو استفاده کنيد احتمالا مشکل تون حل مي شه:

[LEFT][PHP]mysql_query("INSERT INTO ordert (bar, lav) VALUES ('$pbar', '$plav')",$con);[/PHP]
[/LEFT]
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
ممنون از همگی
با این کد که تست میکنم ارور زیر رو میده:
[PHP]mysql_query("INSERT INTO order (lav, bar) VALUES ('$plav', '$pbar')",$con) or die(mysql_error());
[/PHP]
<SIP/927-0000002c>AGI Rx << 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 'order (lav, bar) VALUES ('600', '600')' at line 1
<SIP/927-0000002c>AGI Tx >> 510 Invalid or unknown command
نظر
هنوز هیچ نظری ارسال نشده است!
  • صفحه :
  • 1


هنوز به این موضوع پاسخی داده نشده است

دسته بندی ها

سیستم های تلفنی کدباز
  1. 107 پست
  2. 0 زیرمجموعه
سیسکو Cisco
  1. 61 پست
  2. 0 زیرمجموعه
سیستم تلفنی FreePBX
  1. 48 پست
  2. 0 زیرمجموعه
شبکه و زیرساخت
  1. 65 پست
  2. 0 زیرمجموعه
تازه واردین دنیای ویپ
  1. 927 پست
  2. 0 زیرمجموعه