PDA

View Full Version : معادل دستور Dlookup در PHP



Mahsa Hatefi
جمعه 14 بهمن 1390, 20:25 عصر
با سلام

مي خواستم بدونم معادل دستور Dlookup در PHP چيه چطور ميتونم فيلدي از بانك Mysql رو جستجو كنم

Net So
جمعه 14 بهمن 1390, 20:29 عصر
سلام.
فکر کنم این کمکتون کنه :

function DLookup($fld, $tab, $whr)
{
$q = "Select $fld from $tab where $whr";
$rst = mysql_query($q);
if ($row = mysql_fetch_object($rst))
return $row->$fld;
else
return NULL;
}

// ex: lookup a customer name based on $customerid

$name = DLookup("Name", "Customer", "Id=$customerid");

Mahsa Hatefi
جمعه 14 بهمن 1390, 23:43 عصر
با عرض معذرت يه بزرگواري لطف كنه بفرمايند ايراد اين قسمت بويژه خط 15 چيه ؟


function DLookup($fld, $tab, $whr)
{
$q = "Select $fld from $tab where $whr";
$rst = mysql_query($q);
if ($row = mysql_fetch_object($rst))
return $row->$fld;
else
return NULL;
}

$server=mysql_connect("localhost","adabestan","123456789");
mysql_select_db("adab_DB",$server);
$table=mysql_query("select * from 'jos_smartformer_data' where 'data' like {val101}",$server);

if DLookup("data","jos_smartformer_data","data like {%id101%}")

{
echo("You filled before");
}

Reza1607
شنبه 15 بهمن 1390, 00:07 صبح
خط 15 رو به اين صورت تغيير بدين

if(DLookup("data","jos_smartformer_data","data like {%id101%}"))

يعني بايد شرط رو داخل پرانتز بزاريد

tux-world
شنبه 15 بهمن 1390, 00:59 صبح
اینDlookup رو کسی توضیح میده؟

MMSHFE
شنبه 15 بهمن 1390, 09:14 صبح
این دستور، سه پارامتر میگیره:
1- نام فیلد/فیلدها
2- نام جدول
3- شرط/شرایط
و بعد بررسی میکنه ببینه رکوردی در اون جدول هست که توی اون رکورد، فیلد/فیلدهای اعلام شده، دارای شرایط مشخص شده باشه یا نه؟

tux-world
شنبه 15 بهمن 1390, 16:18 عصر
میشه یه کم بیشتر توضبح بدی؟ ممنون میشم

MMSHFE
شنبه 15 بهمن 1390, 16:38 عصر
ببینید مثلاً میخواین ببینید توی جدول students رکوردی داریم که فیلد name اون حاوی کلمه ali باشه یا نه؟ برای این کار، از این تابع اینطوری استفاده میکنیم:


if(DLookup('name', 'students', "LIKE {%ali%}")) {
echo 'Found!';
}

موفق باشید.

Mahsa Hatefi
شنبه 15 بهمن 1390, 17:40 عصر
باز هم خدمت بزرگوارتان سلام بويژه برادر ارجمند آقامحمد مصطفي
من آموزشهاي 9 گانه شما را يك بار مختصر خواندم و از حضرتعالي از آموزشتان سپاسگزارم . انشاءالله خداوندگار كريم هميشه يار و پشتيبان شما باشد

خدمتتان عرض كنم من اين كد را نوشته ام


function DLookup($fld, $tab, $whr)
{
$q = "Select $fld from $tab where $whr";
$rst = mysql_query($q);
if ($row = mysql_fetch_object($rst))
return $row->$fld;
else
return NULL;
}

$server=mysql_connect("localhost","adabestan","123456789");
mysql_select_db("adab_DB",$server);
$tt= DLookup("data","jos_smartformer_data","data like {%id101}");
echo($tt);


اما هنگام اجرا اين خطا را مي گيرد :

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/adab/domains/adabestan.ir/public_html/adab/components/com_smartformer/engine.php(622) : eval()'d code on line 5


راستش اينكه فرمسازهاي آماده كه در cmsهايي مثل جوملا استفاده مي شوند ، كليه اطلاعات فيلدي فرم شما را در يك فيلد از جدول مي ريزند مثل نام نام خانوادگي نام پدر كد ملي و..... بخاطر همين بجاي = از like استفاده كرده ام حالا در يه جايي از طراحي فرم ميشه كد PHP داد و من مي خواهم با كنترل مثلا كد ملي از ثبت مجدد فرم جلوگيري كنم . به نظر شما طريقي كه پيش گرفته ام صحيح مي باشد .

ممنون و سپاسگزار

MMSHFE
شنبه 15 بهمن 1390, 18:05 عصر
1- شرط where رو داخل پرانتز بگذارین.
2- اسامی فیلدها و جداول و... رو داخل گیومه برگشته یا Backquote (`) قرار بدین.

Mahsa Hatefi
شنبه 15 بهمن 1390, 18:14 عصر
منظورتان به اين شكل است :

$tt= DLookup("`data`","`jos_smartformer_data`",("data like {%id101}"));

ولي باز همان خطا را مي دهد

MMSHFE
شنبه 15 بهمن 1390, 18:19 عصر
خیر، اینطوری:


function DLookup($fld, $tab, $whr) {
$q = "SELECT `{$fld}` FROM `{$tab}` WHERE ({$whr})";
$rst = mysql_query($q);
return ($row = mysql_fetch_object($rst)) ? $row->$fld : NULL;
}

mysql_connect('localhost', 'adabestan', '123456789');
mysql_select_db('adab_DB');
$tt = DLookup('data', 'jos_smartformer_data', '`data` LIKE {%id101}');
echo $tt != NULL ? $tt : 'NULL';

موفق باشید.

Mahsa Hatefi
شنبه 15 بهمن 1390, 18:24 عصر
دوست مهربان

ولي من هنوز همان خطا را دريافت مي كنم

MMSHFE
شنبه 15 بهمن 1390, 18:37 عصر
function DLookup($fld, $tab, $whr) {
$q = "SELECT `{$fld}` FROM `{$tab}` WHERE ({$whr})";
$rst = mysql_query($q);
if(!$rst) {
return mysql_error();
}
return ($row = mysql_fetch_object($rst)) ? $row->$fld : NULL;
}

mysql_connect('localhost', 'adabestan', '123456789');
mysql_select_db('adab_DB');
$tt = DLookup('data', 'jos_smartformer_data', '`data` LIKE {%id101}');
echo $tt != NULL ? $tt : 'NULL';

یکبار اینو تست کنید ببینید چه خطایی چاپ میشه؟

Mahsa Hatefi
شنبه 15 بهمن 1390, 18:45 عصر
حالا اين خطا را مي دهد

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 '%id101%})' at line 1

MMSHFE
شنبه 15 بهمن 1390, 18:52 عصر
حالا چطور؟

function DLookup($fld, $tab, $whr) {
$q = "SELECT `{$fld}` FROM `{$tab}` WHERE ({$whr})";
$rst = mysql_query($q);
if(!$rst) {
return mysql_error();
}
return ($row = mysql_fetch_object($rst)) ? $row->$fld : NULL;
}

mysql_connect('localhost', 'adabestan', '123456789');
mysql_select_db('adab_DB');
$tt = DLookup('data', 'jos_smartformer_data', "`data` LIKE '%id101'");
echo $tt != NULL ? $tt : 'NULL';

Mahsa Hatefi
شنبه 15 بهمن 1390, 18:59 عصر
ممنون و سپاسگزار حالا پيام Null رو برگردوند واقعاً ممنونم

Mahsa Hatefi
شنبه 15 بهمن 1390, 19:27 عصر
ضمن تشكر ميشه لطف بفرمايين راهنمايي كنين رويدادهاي كنترل تكست باكس فرم در PHP رو كجا مي تونم پيدا كنم
مثلا :
ongetfocus
onlostfocus
onchange
و......

ميخوام كه اون تكه كد رو بصورت يك فانكشن تعريف كنم كه با رويداد lostfocus تكست باكس كد ملي {%id101} قرار بدم تا هنگام ترك فيلد كدملي پيام صادر بشه . شدنيه ؟

MMSHFE
شنبه 15 بهمن 1390, 19:39 عصر
اینها مربوط به جاوا اسکریپت هست. بجای ongetfocus و onlostfocus به ترتیب از onfocus و onblur استفاده کنید.
کلاً اینجا (http://www.w3schools.com/js/js_events.asp) رو ببینید بد نیست.

Reza1607
شنبه 15 بهمن 1390, 19:41 عصر
مثلا :
ongetfocus
onlostfocus
onchange
و......



دوست عزيز php سمت سرور هست و تنها امكان پردازش رو مقاديري كه اين فيلدهاي ارسال مي كنند وجود داره و شما نمي تونيد اين رويداد هايي رو كه گفتيد با php پياده كنيد براي اين كار بايد از جاوا اسكريپت استفاده كنيد و اگر نياز به پردازش خاصي داريد كه با جاوا اسكريپت امكانش نيست بايد از ajax استفاده كنيد

Mahsa Hatefi
شنبه 15 بهمن 1390, 19:59 عصر
استاد بزرگوار

اين فانكشن PHP ، بصورت جاوا اسكريپت چه تغييري بايد بكنه ؟


function DLookup($fld, $tab, $whr) {
$q = "SELECT `{$fld}` FROM `{$tab}` WHERE ({$whr})";
$rst = mysql_query($q);
if(!$rst) {
return mysql_error();
}
return ($row = mysql_fetch_object($rst)) ? $row->$fld : NULL;

mysql_connect('localhost', 'adabestan', '123456789');
mysql_select_db('adab_DB');
$tt = DLookup('data', 'jos_smartformer_data', "`data` LIKE '%id101'");
echo $tt != NULL ? $tt : 'NULL';

}

MMSHFE
یک شنبه 16 بهمن 1390, 07:41 صبح
دوست گرامی، کدهای PHP بخصوص مواردی شبیه این که با دیتابیس در ارتباط هستن رو نمیشه با جاوا اسکریپت بنویسیم چون PHP سمت سرور اجرا میشه و JS سمت کلاینت. تنها راه ارتباطی بین این دو هم استفاده از AJAX هست، بدین ترتیب که تابع DLookup رو توی یک صفحه قرار میدین و اون صفحه مقادیر رو به روش Get یا Post دریافت میکنه و پردازش لازم رو انجام میده و خروجی رو با کمک echo نشون میده. حالا با AJAX موقع تایپ کردن کاربر، اون صفحه رو صدا میزنید و اطلاعاتی که کاربر وارد کرده رو براش میفرستین و خروجی رو دوباره دریافت کرده و در محل دلخواه به نمایش در میارین. اگه مشکلی در نحوه اجرا بود، بفرمایید تا نمونه کد بگذارم. موفق باشید.

tux-world
یک شنبه 16 بهمن 1390, 12:01 عصر
ببینید مثلاً میخواین ببینید توی جدول students رکوردی داریم که فیلد name اون حاوی کلمه ali باشه یا نه؟ برای این کار، از این تابع اینطوری استفاده میکنیم:


if(DLookup('name', 'students', "LIKE {%ali%}")) {
echo 'Found!';
}

موفق باشید.
پس ميشه به جاي سلكت و mysql_fetch_array و mysql_assoc از اين استفاده كرد؟

Mahsa Hatefi
یک شنبه 16 بهمن 1390, 13:37 عصر
استاد گرانقدر
درك مطالب ذكر شده توسط اساتيد گرامي براي حقير دشوار و وراي سواد اينجانب مي باشد . من در جوملا فرمسازي دارم (اسمارت فورمر) كه مي خواهم در بخشي كه اجازه كنترل فرم با PHP و جاوا را مي دهد يكي از فيلدها (مثلا كد ملي) را كنترل كنم تا از تكميل تكراري فرم جلوگيري كنم . تصوير از بخشي كه مي توان از كدهاي PHP و جاوا استفاده كرد را پيوست كردم . سپس بعد از ورود كدها در بخشي ديگر كه تصوير آن را پيوست كرده ام ، مي توان آن فانكشن را فراخواني كرد .

حالا اين كار را از چه راهي انجام بايد داد ؟