article

استفاده از JOIN و ساخت پرس و جوی ترکیبی در MySQL

mysql-join

مطالبی که تا این لحظه از بخش آموزش مقدماتی MySQL فرا گرفته ایم معمولا برای حالت های متداول و کار با جداول به صورت مجزا کافی خواهند بود، اما در برنامه نویسی های پیشرفته تر و در طراحی ساختار برنامه های پیچیده نیاز به نوشتن پرس و جوهای ترکیبی و برقراری تعامل بیشتر بین جداول موجود در دیتابیس است، این نیاز سبب شده که قابلیت دیگری تحت عنوان JOIN (و مشتقات آن) به دستورات MySQL اضافه شود که به کمک آن می توان پرس و جوهای ترکیبی نوشت و بین جداول مختلف ارتباط برقرار کرد، در ادامه در مورد آن بیشتر خواهیم گفت.

ساخت جداول فرضی با دستور CREATE


برای درک بهتر نحوه عملکرد دستور JOIN پیش از هر چیز لازم است که چند جدول و ستون فرضی با مقادیری از پیش تعریف شده بسازیم که در زیر پرس و جوی آن را ملاحظه می کنید.
نکته: پیش از اجرای کدهای زیر باید از طریق برنامه phpMyAdmin دیتابیسی با نام فرضی test بسازید، دقت کنید که Collation دیتابیس بر روی utf8_persian_ci تنظیم شده باشد.
<?php
$con = mysql_connect("localhost","root","");
if (!$con){
    die('اتصال برقرار نشد: ' . mysql_error());
}
mysql_select_db("test", $con);
mysql_query("SET NAMES 'utf8'");

mysql_query("CREATE TABLE tbl_1(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
name VARCHAR(255),
skill VARCHAR(255)) ENGINE=MyISAM "
)
or die(mysql_error());

mysql_query("ALTER TABLE tbl_1
DEFAULT CHARACTER SET utf8
COLLATE utf8_persian_ci;"
)
or die(mysql_error());

mysql_query("CREATE TABLE tbl_2(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
language VARCHAR(255),
count VARCHAR(255)) ENGINE=MyISAM "
)
or die(mysql_error());

mysql_query("ALTER TABLE tbl_2
DEFAULT CHARACTER SET utf8
COLLATE utf8_persian_ci;"
)
or die(mysql_error());

echo "جدول با موفقیت ساخته شد!<br>";

//اطلاعات اولیه به صورت آرایه
$name_skill = array('علی' => 'HTML', 'ساسان' => 'PHP', 'پدرام' => 'Ajax');
$language_count = array('HTML' => 9, 'PHP' => 3, 'Ajax' => 6);

//ذخیره در دیتابیس
foreach($name_skill as $key => $value){
    mysql_query("INSERT INTO tbl_1 (name, skill) VALUES('$key', '$value')")
    or die(mysql_error());
}
foreach($language_count as $key => $value){
    mysql_query("INSERT INTO tbl_2 (language, count) VALUES('$key', '$value')")
    or die(mysql_error());
}

echo "اطلاعات با موفقیت افزوده شد!<br>";

mysql_close($con);
?>
پرس و جوی بالا دو جدول با مقادیری از پیش تعریف شده ایجاد می کند، در جدول نخست لیست کاربران به همراه مهارت برنامه نویسی آنها به صورت زیر قرار دارد.
id     name     skill
1     علی       HTML
2     ساسان     PHP
3     پدرام     Ajax
در جدول دوم عنوان هر زبان برنامه نویسی و به فرض تعداد برنامه نویس موجود و مسلط به آن زبان درج شده.
id     language      count
1       HTML           9
2       PHP            3
3       Ajax           6
همان طور که ملاحظه می کنید بین دو جدول در ستون های skill و language ارتباطی متقابل وجود دارد (هر دو ستون عناوین مربوط به زبان های برنامه نویسی را در خود دارند)، بنابراین به فرض اگر بخواهیم مسابقه ای بین افراد هم مهارت برگزار کنیم و نیاز به محاسبه تعداد رقبای اسامی موجود در جدول اول باشد، به ناچار باید در پرس و جوی خود هم از اصلاعات جدول اول (اسامی و مهارت آنها) و هم از اطلاعات جدول دوم (مهارت و تعداد شرکت کننده) استفاده کنیم، هرچند این کار با نوشتن دو پرس و جو نیز امکانپذیر است، اما حرفه ای تر آن است که به کمک JOIN و مشتقات آن (INNER JOIN، LEFT JOIN، RIGHT JOIN، OUTER JOIN) یک پرس و جوی ترکیبی نوشته و به هدف خود برسیم، بدین ترتیب می توان نوشت:
$resutl = mysql_query("SELECT tbl_1.name, tbl_2.count FROM tbl_1 INNER JOIN tbl_2 ON tbl_1.skill = tbl_2.language")
or die(mysql_error());
while($row = mysql_fetch_array($resutl)){
    echo $row['name']. ' : ' .$row['count']. '<br>';    
}
که خروجی دستور بالا به صورت نمونه زیر خواهد بود.
علی : 9
ساسان : 3
پدرام : 6
نکته: برای تعریف شرط در هنگام استفاده از دستور JOIN (و مشتقات آن)، از عبارت ON استفاده می شود.
برای آشنایی بیشتر با JOIN و مشتقات آن، در ادامه به صورت موردی این دستور را بررسی می کنیم.

حالت INNER JOIN


حالت اول از مشتقات دستور JOIN به صورت INNER JOIN می باشد، در این حالت می توان به مواردی مشترک از هر دو جدول دسترسی داشت، نتیجه پرس و جو شامل برخی موارد از جدول اول به همراه برخی موارد دیگر از جدول دوم (بر اساس شرط تعیین شده) خواهد بود، مثال:
SELECT tbl_1.skill, tbl_2.count FROM tbl_1 INNER JOIN tbl_2 ON tbl_1.skill = tbl_2.language
خروجی این حالت به صورت زیر خواهد بود.
skill     count
HTML       9
PHP        3
Ajax       6
ملاحظه می کنید که با اجرای پرس و جوی بالا ردیف های زیر از جدول اول:
HTML
PHP
Ajax
و ردیف های زیر از جدول دوم به عنوان خروجی برگردانده می شوند:
9
3
6

حالت LEFT JOIN


نوع دیگر از مشتقات دستور JOIN به صورت LEFT JOIN است که در این حالت تمام ردیف های جدول اول صرف نظر از شرط تعیین شده به همراه ردیف های جدول دوم (بر اساس شرط تعیین شده) به عنوان خروجی برگردانده می شوند، مثال:
SELECT tbl_1.skill, tbl_2.count FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.id = tbl_2.count
خروجی پرس و جوی بالا به صورت زیر خواهد بود.
skill     count
HTML      NULL
PHP       NULL
Ajax       3
نکته: ردیف هایی که در جدول دوم بر اساس شرط تعریف شده انتخاب نشوند، با مقدار NULL برگردانده می شوند.

حالت RIGHT JOIN


مشابه حالت LEFT JOIN، حالت RIGHT JOIN است که در این صورت ردیف ها از جدول دوم صرف نظر از شرط تعیین شده انتخاب و ردیف های جدول اول بر اساس شرط انتخاب می شوند، مثال:
SELECT tbl_1.skill, tbl_2.count FROM tbl_1 RIGHT JOIN tbl_2 ON tbl_1.id = tbl_2.count
خروجی پرس و جوی بالا به صورت زیر خواهد بود.
skill     count
NULL        9
Ajax        3
NULL        6

حالت OUTER JOIN


حالت آخر از مشتقات JOIN به صورت OUTER JOIN یا FULL JOIN است که در این صورت می توان دو پرس و جوی مبتنی بر JOIN را با عبارت کلیدی UNION (اجتماع) به هم مرتبط نمود، مثال:
SELECT tbl_1.skill, tbl_2.count FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.id = tbl_2.count UNION SELECT tbl_1.skill, tbl_2.count FROM tbl_1 RIGHT JOIN tbl_2 ON tbl_1.id = tbl_2.count
نتیجه پرس و جوی بالا به صورت زیر خواهد بود.
skill     count
HTML      NULL
PHP       NULL
Ajax       3 
NULL       9
NULL       6
sectionدسته بندی: آموزش مقدماتی » MySQL
related مطالب بیشتر:
» محدودسازی، گروه بندی و مرتب سازی نتایج در MySQL
» اتصال PHP به MySQL با اکستنشن MySQLi
» آموزش MySQL، سیستم مدیریت پایگاه داده
» به روز رسانی ردیف ها در MySQL با UPDATE
» توابع تجمعی (Aggregate Functions) در MySQL
commentنظرات (۳۸ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: امیرحسین
۰۰:۱۶ ۱۳۹۶/۰۲/۲۱
سلام استاد عزیز
یه سوال داشتم اگر جواب بدید خیلی لطف میکنید
من میخوام از دستور where در join ها هم استفاده کنم ترتیبشون چگونه است
SELECT tbl_attr.title,tbl_product_attr.value FROM tbl_attr LEFT JOIN tbl_product_attr ON tbl_attr.id = tbl_product_attr.idattr
SELECT tbl_attr.title,tbl_product_attr.value FROM tbl_attr @where LEFT JOIN tbl_product_attr ON tbl_attr.id = tbl_product_attr.idattr
SELECT tbl_attr.title,tbl_product_attr.value FROM tbl_attr LEFT JOIN tbl_product_attr @where ON tbl_attr.id = tbl_product_attr.idattr
SELECT tbl_attr.title,tbl_product_attr.value FROM tbl_attr LEFT JOIN tbl_product_attr ON tbl_attr.id = tbl_product_attr.idattr @WHERE
به این WHERE ها دقت کنید که از دستی @ گذاشتم که رنگش آبی بشه مشخص بشه در کجا میتوانم استفاده کنم ایا بعد از FROM یا بعد از JOIN مربوطه یا بعد از ON یا قبلش ایا سه بار میشه از WHERE استفاده کرد یعنی هم برای FROM هم برای JOIN و ترتیبشون رو هم ذکر کنید که مثلا یه دستور JOIN دارم ترتیب های where,on,having را ذکر کنید.
پاسخ: 
پارامتر WHERE باید در پایان پرس و جو بیاید، اگر نیاز به اعمال شرط های بیشتر باشد، در کنار WHERE از AND و OR استفاده کنید، HAVING برای مواردی است که از GROUP BY استفاده می کنیم و مانند WHERE باید در پایان پرس و جو بیاید، مثال:
SELECT tbl_1.id, tbl_1.name, tbl_2.age 
FROM tbl_1
LEFT JOIN tbl_2 ON tbl_1.id = tbl_2.id
GROUP BY tbl_1.id
HAVING tbl_2.age > 20

SELECT tbl_1.id, tbl_1.name, tbl_2.age
FROM tbl_1
LEFT JOIN tbl_2 ON tbl_1.id = tbl_2.id
WHERE tbl_2.age > 20
AND tbl_2.age != 55
LIMIT 0 , 30
نویسنده: واحد
۰۹:۳۵ ۱۳۹۶/۰۳/۲۱
سلام
من سه جدول دارم که یکی برای ذخیره خودرو یکی برای ذخیره املاک و دیگری برای ذخیره لوازم الکتریکی دارم. می خواهم اطلاعات را از این سه جدول بگیرم و بر اساس تاریخ درج مرتب کنم. لطفا من را راهنمایی کنید.
خیلی ممنون
پاسخ: 
در حالت کلی و اگر دریافت تمام اطلاعات مد نظر باشد باید از الگوی نمونه کد زیر پیروی کنید:
SELECT col_item, col_date
FROM table_1
UNION ALL
SELECT col_item, col_date
FROM table_2
UNION ALL
SELECT col_item, col_date
FROM table_3
ORDER BY col_date DESC
نویسنده: نوید
۱۲:۰۰ ۱۳۹۶/۰۶/۰۵
سلام
میخواستم بدونم میشه ما بین 3 الی 4 تا جدول هم join کرد؟ اگر میشه به چه شکلی و سینتکسی
ممنونم
پاسخ: 
لطفا به این آدرس مراجعه کنید:
http://www.blokeish.com/2011/08/join-sql-multiple-3-4-tables-mysql/
نویسنده: رحیمی
۱۳:۵۶ ۱۳۹۸/۱۲/۲۶
با سلام
ضمن تشکر از آموزش بسیار خوب شما
لطفا بفرمایید وقتی دو جدول با هم لفت جوین می شوند همانطور که فرمودید بدلیل لفت جوین شدن امکان وجود سطر خالی در جدول دوم وجود دارد، حالا اگر خواسته باشیم بدون اینکه دو جدول را انییر جوین کنیم با یک شرط سطرهای خالی جدول دوم را انتخاب کنیم چه دستوری باید بکار ببریم
پاسخ: 
لطفا سوال را به همراه نمونه ساختار دو جدول فرضی مطرح و مشخص کنید نتیچه مد نظرتان به چه نحوی باید باشد، با توجه به توضیحات اگر هدف صرفا انتخاب مواردی است که ستون جدول دوم به صورت NULL است نمونه پرس و جوی زیر کاربرد دارد:
SELECT tbl_1.num AS row_1, tbl_2.num AS row_2 FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.num = tbl_2.num WHERE tbl_2.num IS NULL
نکته: با توجه به هدفتان ممکن است دستور LEFT JOIN گزینه مناسبی نباشد و با دستورات دیگری بتوانیم به هدف دست پیدا کنیم که با تعیین دقیق ساختار دیتابیس و نتیجه مورد انتظار شکل پرس و جوی لازم مشخص می شود.
نویسنده: hasti
۲۰:۰۵ ۱۳۹۹/۰۲/۱۶
سلام . وقت بخیر . میشه مثالی بزنید که right over join برابر با inner join (داخلی) بشه . /با order و customer/
و یدونم left over join برابر با inner join (داخلی) بشه
خیییلی ممنون .
پاسخ: 
برابر شدن نتیجه پرس و جوها در حالت JOIN به ساختار دیتابیس و مقادیر ردیف ها بستگی دارد، همچنین معمولا این در شرایطی است که پارامتر WHERE در پرس و جو در نظر گرفته شود، به فرض:
SELECT tbl_1.customer, tbl_2.order FROM tbl_1 INNER JOIN tbl_2 ON tbl_1.c_id = tbl_2.c_id WHERE tbl_1.cash > 100
البته این صرفا مثال است، در صورت تمایل ساختار نمونه دیتابیستان را به صورت فرمت sql به آدرس ایمیل ما (موجود در بخش تماس) به همراه توضیحات و خروجی مورد انتظار ارسال کنید تا بررسی گردد.
نویسنده: امیر
۰۵:۲۹ ۱۳۹۹/۰۲/۱۹
با سلام، خدمت دوستان عزیز دو جدول به نام‌های Messages و Comments موجود هستند.
در جدول Comments فیلدی به نام IDElement وجود دارد که ID پیامی که کامنت برای آن ثبت شده ذخیره می‌شود (مشخص می‌کند کامنت جاری مربوط به کدام رکورد از جدول Message است). همچنین در هر دو جدول فیلدهایی با نام IsShow وجود دارند که بیانگر نمایش و عدم نمایش هستند با مقدار True و False جدول Comments یک فیلد Action هم دارد که مشخص میکند این کامنت مربوط به پیام‌ها هستند (Messages) یا خبرها (News) که در آن یک رشته ثابت "Post" یا "News" ذخیره می‌شود.
حال میخواهم کوئری SQL بنویسم که در یک جدول تمام IDMessage ها و تعداد کامنت‌های مربوط به آن‌ها را برگرداند. (اگر پیامی کامنت نداشت باید مقدار فیلد تعداد کامنت صفر درنظر گرفته شود و اینکه کامنت هایی که IsShow آن‌ها False هستند درنظر گرفته نشوند..)
با تشکر
پاسخ: 
برای انتخاب از جدول اول در حالت اشتراک و عدم اشتراک ستون ها باید پرس و جوی ترکیبی بنویسیم، می توانید از نمونه پرس و جوی زیر الگوبرداری کنید:
(SELECT a.id AS 'message_id', COUNT(b.IdElement) AS 'comment_count' FROM messages a LEFT JOIN comments b ON a.id = b.IdElement WHERE b.IsShow = 'True' GROUP BY a.id)
UNION
(SELECT id AS 'message_id', 0 AS 'comment_count' FROM messages WHERE id NOT IN (SELECT IdElement FROM comments))
نویسنده: میثم
۲۳:۵۸ ۱۳۹۹/۰۵/۰۱
سلام
من برای دریافت چند تا اطلاعات از جداول سایتم مجبور شدم دستور زیر رو اجرا کنم.
هر کدام از جداول حدود ۱.۰۰۰.۰۰۰ رکورد دارن.
$res=mysql_query("Select * From tba INNER JOIN tbb ON tba.xxx = tbb.yy Where tba.zzz = '2' and find_in_set(3,vvv) Order By tba.time DESC Limit 50");
به نظرتون دستور بالا بهینه هست و آیا راهی هست که بشه سرعت اجرای دستور رو بالاتر برد؟
راستی من به تمام ستون های هر دو تا جدول برای نمایش اطلاعات نیاز دارم.
پاسخ: 
در صورتی که از ایندکس گذاری (Indexing) بر روی ستون های درگیر در تصمیم گیری MySQL در انتخاب نتایج (به فرض ستون های tba.xxx، tbb.yy، tba.zzz، tba.time) استفاده کرده باشید پرس و جو بهینه است، نکته دوم اینکه برای کدهای جدید از اکستنشن MySQLi استفاده کنید (آموزش فعلی قدیمی است و به زودی ویرایش می شود).
نویسنده: مجتهد
۰۲:۱۰ ۱۳۹۹/۰۶/۱۳
سلام
ابتدائا از سایت مفیدتون تشکر می کنم. من خیلی از آموزه هام رو از سایت شما یاد گرفتم.
یه سوال دارم
من دو تا جدول دارم. تو جدول درخواست ها، درخواست هایی ثبت می شن که یه متن درخواست داره. یه گروه درخواست (مثلا پشتیبانی) و یه دونه هم زیرگروه درخواست (مثلا مالی)
ولی برای راحتی کار این درخواست ها رو بجای نام دادن کد عددی دادم. مثلا درخواست پشتیبانی کد 1 داره. درخواست فنی تو زیر گروه پشتیبانی کد 20 داره. حالا یه جدول هم واسه اسامی اینها دارم. مثلا اسم درخواست شماره 1 هست پشتیبانی. اسم درخواست 2 هست خرید و ... . لازم به ذکره که تو جدول دوم هر درخواست یه دونه آیدی والد داره که بتونم یه لول زیرمجموعه بزارم. یعنی مثلا درخواست شماره 20 دارای آیدی والد 1 هست. یعنی زیر مجموعه کد 1 (پشتیبانی) است.
حالا می خوام یه کوئری بگیرم که توش متن درخواست از جدول یک گرفته بشه و نام گروه اصلی و نام زیر گروه از جدول دوم.
چطوری می تونم این کار رو انجام بدم.
به راحتی می تونم با join inner متن درخواست و نام زیرگروه رو بگیرم. اما نتونستم نام گروه اصلی رو هم بگیرم.
با کوئری زیر متن و زیر گروه رو به راحتی می گیرم:
SELECT req.text, category.name FROM req INNER JOIN category ON req.request_kind = category.parent_id AND req.request_sub_kind = category.id
ممنون می شم راهنماییم کنید
پاسخ: 
طبق توضیحات و برداشتی که از ساختار دیتابیس می توان داشت با نمونه پرس و جوی ترکیبی زیر می توانید متن، نام اصلی و زیرمجموعه را داشته باشید:
SELECT r1.text, c1.name AS kind, c2.name AS sub_kind FROM req r1 INNER JOIN category c1 ON r1.request_kind = c1.id INNER JOIN category c2 ON r1.request_sub_kind = c2.id LIMIT 0 , 30
منتها به نظر ساختار جداول و ارتباط آنها دارای اشکال است و می توان با افزودن چند ستون ارتباط منطقی تری بین دو جدول ایجاد و از سردرگمی جلوگیری کرد، در نمونه پرس و جویی هم که درج کرده اید در قسمت آخر به category.id اشاره دارد که ظاهرا باید ستونی از نوع افزایش خودکار باشد؟ در صورت تمایل می توانید نمونه ساختار قابل تست جداول را به صورت فایل SQL به ایمیل ما (موجود در بخش تماس) ارسال کنید تا بیشتر بررسی کنیم.
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- موارد غیرمرتبط با مباحث آموزش ها را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ مختصر داده خواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- از درج عناوین تبلیغاتی در فیلدها خودداری کنید، در صورتی که یادداشت تبلیغاتی تشخیص داده شود حذف خواهد شد.
- تمام یادداشت ها بررسی و زمانی جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد خودداری کنید.





9 × 1
 refresh

آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
form mohadeseh
در:
ممنون از راهنماییتون مشکلم حل شد
۱۳۹۹/۰۷/۲۸

form محمد
در:
سلام. یک کد نوشته ام بدین صورت: وقتی صفحه باز شده یک پنجره پیام خالی با یک ok باز شده هر چه ok را...
۱۳۹۹/۰۷/۲۸

form فایز پور جهانبخشی
در:
سلام اگر بخواهیم برنامه ای که داخل متلب نوشتیم تا یک ثانیه اجرا شود و بعد از ثانیه اول در حالت خطا که...
۱۳۹۹/۰۷/۲۸

form mohadeseh
در:
الان کد من که توی تگ <head> گزاشتم میخواستم بدونم ایا امکانش هست که توی تگ link که ایکون رو باهاش اوردم بتونم...
۱۳۹۹/۰۷/۲۷

form mohadeseh
در:
سلام ببخشید لطفا راهنمایی کنید که چجوری title برای favicon در html بزارم؟ جوری که وقتی موس روی icon قرار بگیره متن...
۱۳۹۹/۰۷/۲۷

form ryomaechizen
در:
سلام. اگه حافظه وب پر بشه و مجبورا عکسا کپی باشن چطور باید مشکل بارگزاریشون حل بشه؟
۱۳۹۹/۰۷/۲۶

form رونا
در:
پرونده فرستاده شده نمی‌تواند به wp-content/uploads/2020/10 برود. سلام این ارور برای چی رخ می ده
۱۳۹۹/۰۷/۲۵

form reza
در:
سلام خوبید انشاالله؟ خواستم بدونم این نوار ابزار رو چطور باید اونایی رو دوست دارم بزارم سمت راست وبلاگم. هر چی کد و ......
۱۳۹۹/۰۷/۲۴

form سینا
در:
چگونه میتوانیم با استفاده از HTML فرمول شیمیایی مواد را بنویسیم؟ با عدد اتمی، جرمی و بار اتمی
۱۳۹۹/۰۷/۲۱

form فاطمه
در:
سلام ممنونم... خیلی ساده و روون توضیح دادین.. اونقدر که تشویق شدم محتوای یه فایل تکس رو با ایجکس درون یه div بیارم ولی...
۱۳۹۹/۰۷/۲۱

form امیرحسین
در:
خب متوجه شدم. که باید خط اول عدد فانکشن رو تغییر بدم. بسته به تعداد آرایه یا هر عدد دیگه تغییر بدم جوابمو...
۱۳۹۹/۰۷/۲۱

form امیرحسین
در:
عالی بود. خیلی ممنونم. ولی هر چند کلمه داخل آرایه داشته باشم به همون میزان خروجی گرفته میشه. من اگه 10 کلمه در آرایه داشته...
۱۳۹۹/۰۷/۲۱

form سعادتی
در:
سلام کاش روش برطرف کردن این بهم ریختگی رو هم توضیح میدادید. ممنون
۱۳۹۹/۰۷/۲۰

form امیرحسین
در:
موفق شدم اینو پیدا کنم. ولی میخوام کلمات تکراری داخلشون نباشه. مثال AAA فقط یک بار در اون خط وجود داشته باشه.
۱۳۹۹/۰۷/۲۰

form امیرحسین
در:
سلام. نه محدودیت زمانی وجود نداره.
۱۳۹۹/۰۷/۲۰
form امیرحسین
در:
سلام خسته نباشید. میخوام از این تابع برای بدست آوردن لیست های متفاوت استفاده کنم. مثلا یه آرایه داشته باشم. امیدوارم کمکم...
۱۳۹۹/۰۷/۲۰
form ابوالفضل
در:
سلام وقتتون بخیر من میخوام یه افزونه برای مرورگر کروم طراحی کنم و میخوام یه متنی رو هر سری از سایت دریافت کنه و...
۱۳۹۹/۰۷/۲۰
form mahdi
در:
سلام چطور می تونم از ip خارجی استفاده کنم؟ برای دریافت لانچر میخام. مرسی
۱۳۹۹/۰۷/۱۹
form احسان عباسی
در:
با سلام و تشکر از سایت خوبتون من یه کد تعریف کردم که در بورس ایران سهم مدنظرمو بیاره .. میخواستم ببینم امکانش هست دستوری...
۱۳۹۹/۰۷/۱۷
form شبنم
در:
سلام وقتتون بخیر، ببخشید از کلمه event یا e دقیقا چه زمانی توی فانکشن استفاده میکنیم؟
۱۳۹۹/۰۷/۱۷
form احمد
در:
با عرض سلام مجدد ساختار کلی دستورم به این صورت هست. بعد از حلقه وایل اون دیو کلاس 1 و 2 و 3 میخواهم...
۱۳۹۹/۰۷/۱۶
form احمد
در:
با عرض سلام ببخشید چطوری میتونم یه قسمت از تگ ها رو داخل حلقه وایل رد کنم دوباره تگ های بعدی داخل حلقه قرار بگیرن...
۱۳۹۹/۰۷/۱۶
form ابوالفضل
در:
سلام واقعا من خیلی گشتم تا بتونم این آموزش رو پیدا کنم چون واقعا نمی دونستم چی بنویسم تا یک رتبه بندی برای نتایج جستجو...
۱۳۹۹/۰۷/۱۵
form mahtab
در:
سلام وقتتون بخیر ببخشید میشه بفرمایید چجوری کلیپ رو بزاریم وبلاگ ؟؟ بی زحمت کامل بفرمایین ممنون و متشکر
۱۳۹۹/۰۷/۱۴
form Saeid Azari
در:
سلام ببخشید اگه امکانش هست سوال منو جواب بدید یکم گیج شدم...من یک کد html دارم که باید یک سایت درست کنم و ان را...
۱۳۹۹/۰۷/۱۳
form ابوالفضل
در:
سلام یک سوال دارم چجوری یک متنی که درون تگ td هست و بعد تگ br هست (تگ br درون تگ td است) رو...
۱۳۹۹/۰۷/۱۳
form parnian
در:
با سلام با توجه به این که این مطلب در سال 91 نوشته شده ایا تغیری هم کرده؟ مثلا استفاده و مهم بودن تگ های...
۱۳۹۹/۰۷/۱۳
form fahimeh
در:
سلام من دارم پروژه واسه دانشگاه مینویسم طراحی سایتو کردم برای کار با پایگاه داده دستور insert و delete کار میکنه ولی...
۱۳۹۹/۰۷/۱۲
form امین
در:
با عرض سلام ببخشید یه فرم دارم اخر فرمم یه دکمه دارم میخواستم بدونم چطوری باید بعد از کلیک کردن دکمه به صفحه دیگه انتقال...
۱۳۹۹/۰۷/۱۱
form محسن
در:
سلام من از فرم ساز گرویتی استفاده میکنم آیا امکان استفاده همچین چیزی رو میتونم داخلش داشته باشم آیا کدی داره که در قسمت...
۱۳۹۹/۰۷/۱۱
form مالکی
در:
چرا وبلاگم بالا نمی یاد
۱۳۹۹/۰۷/۰۹
form احمد
در:
با عرض سلام مجدد و خسته نباشید ببخشید نمونه کد رو اگر امکانش هست نگاه کنید که چطوری این متغییری رو که بدست اوردم در...
۱۳۹۹/۰۷/۰۹
form الناز
در:
سلام وقتتون بخیر. چطور میشه برنامه ای رو در php نوشت که کدملی رو تبدیل به شماره دانشجویی کنه اگه برام بنویسید ممنون میشم.
۱۳۹۹/۰۷/۰۹
form محمد
در:
سلام من میخواستم بدونم چه طوری میشه بدون اینکه از کاربر بپرسی که میخواهد از حساب خروج پیدا کند خود سایت بفهمد که کاربر از...
۱۳۹۹/۰۷/۰۹
form احمد
در:
با سلام ببخشید چطوری باید در جکوری از یک متغییر در صفحات دیگه استفاده کنم مثال دو عدد را باهم جمع کردم و ریختم داخل...
۱۳۹۹/۰۷/۰۹
form مهسا
در:
سلام و خسته نباشید مشکلی برای وبلاگ من پیش اومده موقع ورود بهم پیام میده وبلاگ داره بروز رسانی میشه و بعدا وارد وبلاگ شوید...
۱۳۹۹/۰۷/۰۸
form Moshtagh
در:
سلام و خسته نباشید بنده چند روزه که وقتی اطلاعات ورود به وبلاگم رو وارد تیترها و کلیک میکنم با چنین پاسخی مواجه میشم...
۱۳۹۹/۰۷/۰۸
form mahtab
در:
سلام خسته نباشین ببخشید چرا بلاگفا باز نمیکنه ؟؟؟ میرم مدیریت وبلاگ نه تو بروز شده ها وبی هستم نه هم که...
۱۳۹۹/۰۷/۰۷
form جواد
در:
سلام و عرض ادب. سایت من هک شده و یک کد ریدایرکت تو دیتابیس هاستم بارگزاری شده که آخر همه پست ها تو...
۱۳۹۹/۰۷/۰۷
form نبی
در:
‏asc و desc رو جابجا نوشتی
۱۳۹۹/۰۷/۰۴
form ساناز محمدی
در:
سلام مرسی از کدی که گذاشتید ♥
۱۳۹۹/۰۷/۰۳
form mahtab
در:
سلام خسته نباشین ببخشید میخواستم بپرسم که چجوری میتونیم یه کلیپ رو از کامپیوتر از انیستا دانلود کنیم ؟؟ اها اینم بگم...
۱۳۹۹/۰۷/۰۲
form سعید
در:
سلام دستتون درد نکنه از پروژه شما استفاده کردم فقط یه مشکل اگه در یک صفحه دو تا لیست کشویی داشته باشیم چطوری...
۱۳۹۹/۰۷/۰۱
  در انتظار بررسی: ۰
 پاسخگویی به سوالات ممکن است تا 24 ساعت زمان ببرد.