به روز رسانی ردیف ها در MySQL با UPDATE

یکی دیگر از دستورات مربوط به مدیریت اطلاعات در MySQL، دستور UPDATE است که پس از INSERT INTO و SELECT FROM می تواند بیشترین کاربرد را داشته باشد، فلسفه پیدایش و تعریف این دستور نیز به این جهت است که بتوانیم بدون حذف ردیف های موجود، اطلاعات آنها را به روز کنیم، به طور مثال فرض کنید اسامی افرادی را در یک جدول به همراه شماره تلفن آنها ذخیره کرده ایم و اکنون می خواهیم بدون اینکه ردیف مورد نظر حذف شود، تنها شماره تماس فرد را تغییر دهیم، یعنی اطلاعات قبلی مربوط به شماره تماس را حذف و اطلاعات جدید را جایگزین آن کنیم، در این گونه موارد است که دستور UPDATE کاربرد دارد، در ادامه به صورت جزئی تری با این دستور آشنا خواهیم شد.
شیوه نگارش (syntax) دستور UPDATE
شیوه نگارش (syntax) و نحوه استفاده از دستور UPDATE در MySQL بسیار ساده و کاربردی است، در واقع مانند سایر دستورهای مربوط به پایگاه داده، از جمله INSERT INTO و SELECT FROM، دستور UPDATE نیز از عناصر تعریف شده و خاص خود پیروی می کند که عبارتند از SET،UPDATE و WHERE، عنصر UPDATE بخش کلیدی پرس و جو، SET عملیات مورد نظر و WHERE ردیف هایی است که تحت تاثیر قرار می گیرند، به مثال زیر توجه کنید.
<?php
mysql_query("UPDATE tb_name SET tel_column='+98**********', age_column='33' WHERE user_column='ali'")
or die(mysql_error());
?>
در مثال بالا، از جدول فرضی tb_name، ستون های tel_column و age_column را به روز رسانی کردیم در جایی که ردیف یا ردیف های ستون user_column برابر مقدار فرضی ali باشد، به این ترتیب اطلاعات قبلی ذخیره شده در ردیف ها حذف و با مقادیر جدید به روز رسانی می گردند، بدون اینکه خود آن ردیف ها حذف شوند.نکته: برای به روز رسانی چندین ستون با یک دستور UPDATE و جداسازی آنها، از علامت , به صورتی که در مثال آمده است استفاده کنید.
یک مثال کاربردی با دستور UPDATE
برای آشنایی بیشتر با کاربرد دستور UPDATE در MySQL، این قسمت از آموزش را با یک مثال کاربردی به پایان می بریم؛ فرض کنید اسامی کاربران سایت خود را در جدولی به نام users ذخیره کرده ایم که این جدول دارای چند ستون با نام های username، password، status و ... است، حال می خواهیم این امکان را به کاربران بدهیم تا بتوانند کلمه عبور خود را تغییر دهند، در چنین شرایطی می توان با استفاده از دستور UPDATE این کار را به راحتی انجام داد که در زیر یک نمونه از آن را ملاحظه می کنید.
<?php
$con = mysql_connect("localhost","root","")
or die(mysql_error());
mysql_select_db("test")
or die(mysql_error());
$update = mysql_query("UPDATE users SET password='$new_pass' WHERE username='$user_name' AND status='online'")
or die(mysql_error());
mysql_close($con);
?>
توضیح:- دقت کنید، دستورات MySQL در اکثر مواقع، قبل از هر چیز باید توسط کدهای php کنترل شده و با هدف مشخصی استفاده گردند، به این معنی که هیچ زبان برنامه نویسی خود به خود نباید کاری انجام دهد بلکه تنها باید به عنوان یک ابزار در اختیار برنامه نویس باشد تا منظور او را به مفسر سیستم تفهیم کند، از این رو باید بدانید که کی و کجا از چه دستوری می توانید استفاده کنید، البته این موضوع تا حدود زیادی به تمرین و تجربه نیز بستگی دارد.
- پرس و جوی فرضی بالا اطلاعات کلمه عبور یک کاربر را به روز رسانی می کند، همان طور که ملاحظه می کنید از WHERE و AND برای اطمینان و محدودسازی ردیف های مورد نظرمان استفاده کرده ایم، همچنین از متغیرهایی برای مقادیر در دستور استفاده شده است که می توانند به فرض از یک فرم HTML و با متد POST دریافت شده باشند.
- همان طور که گفتیم، قبل از اجرای پرس و جوهای مربوط به دیتابیس، می توانید عملیات کاربر را با برنامه نویسی php کنترل و مدیریت کنید، به فرض از اعتبار سنجی با if و else یا isset استفاده کرده و سپس اجازه اجرای پرس و جو را بدهید، یا از دیگر قابلیت های php با توجه به هدف و برنامه خود استفاده کنید.
دسته بندی: آموزش مقدماتی » MySQL
برچسب ها: MySQL

حذف مقادیر از MySQL با دستور DELETE
استفاده از WHERE در پرس و جوی MySQL
نحوه ذخیره کردن اطلاعات با دستور INSERT در MySQL
انتخاب ردیف ها با دستور SELECT در MySQL
ساخت دیتابیس، جدول و ستون با دستور CREATE در MySQL
دیدگاه


علی
۱۳:۱۳ ۱۳۹۳/۱۱/۱۱
ببخشید من برای انتقال امتیاز به ستون یوزر مورد نظر از دستور زیر استفاده می کنم و جواب داد
db::update('onlines', "`score`=(score +'$score'), `username` ='$username'");
حالا برای کسر امتیاز از این دستور استفاده می کنم صفحه مورد نظر باز نمیشه آیا باید برای کسر امتیاز تو بدنه جدید دستور را نوشت یا اینکه تو همین بدنه میشه شرطی قرار داد که امتیاز را کسر کنه ممنونظاهرا در حال ویرایش قسمتی از یک برنامه هستید، در این صورت بدون تست و بررسی نمی توان گفت که ایراد کار از کجاست، آنچه که از پرس و جو مشخص است، اگر حالت جمع به خوبی عمل کند، دلیلی برای عمل نکردن حالت کسر وجود ندارد (در حالت عادی روش معمول چه برای جمع و کسر به همین شیوه است)، اما اینکه صفحه سفید نمایش داده می شود می تواند علت هایی خارج از این موضوع داشته باشد، به طور مثال ممکن است با کسر امتیاز، مقداری منفی در دیتابیس ایجاد شود که برنامه برای آن پیش بینی نشده باشد و یا هر خطای اینچنینی دیگر، در هر صورت برای بررسی اینکه دستور به خوبی عمل می کند یا خیر، می توانید مقدار موجود در جداول دیتابیس خود را از طریق برنامه phpMyAdmin رصد کنید.
محمد
۰۰:۵۰ ۱۳۹۳/۱۱/۰۲
سلام دوست عزیز
دستورات بالا مقدار قبلی Columns رو از بین میبرن و مقدار جدید به Columns میدن آیا دستوری هست که با حفط مقادیر قبلی Columns، مقدار جدید بهش اضافه کنه؟
تشکر
دستورات بالا مقدار قبلی Columns رو از بین میبرن و مقدار جدید به Columns میدن آیا دستوری هست که با حفط مقادیر قبلی Columns، مقدار جدید بهش اضافه کنه؟
تشکر
سلام
برای این کار می توانید از تابع CONCAT استفاده کنید:
برای این کار می توانید از تابع CONCAT استفاده کنید:
UPDATE `tbl` set col = CONCAT(col, 'new data');
محسن
۱۵:۱۸ ۱۳۹۳/۱۰/۱۴
سلام و عرض ادب
در مورد بهینه کردن کوئری اپدیت سوالی داشتم.
فرض کنید میخواین یک مقدار عددی را با یک جمع کنیم از نظر شما کدام یک از روش های زیر بهینه تر هستند و کمتر در حافظه میمانند :
1. انتخاب مقدار فعلی توسط دستور سلکت و جمع آن با مقدار 1 و مجدد اپدیت کردن.
2. استفاده از دستور set=hite+1
البته لازم به ذکر هست که برای سلکت کردن نیاز به ایجاد کوئری جدید نیست یعنی این کوئری برای نمایش اطلاعات ضروری هست، فقط میخوام بدونم کدام روش بهتر است.
سپاسگذار.
در مورد بهینه کردن کوئری اپدیت سوالی داشتم.
فرض کنید میخواین یک مقدار عددی را با یک جمع کنیم از نظر شما کدام یک از روش های زیر بهینه تر هستند و کمتر در حافظه میمانند :
1. انتخاب مقدار فعلی توسط دستور سلکت و جمع آن با مقدار 1 و مجدد اپدیت کردن.
2. استفاده از دستور set=hite+1
البته لازم به ذکر هست که برای سلکت کردن نیاز به ایجاد کوئری جدید نیست یعنی این کوئری برای نمایش اطلاعات ضروری هست، فقط میخوام بدونم کدام روش بهتر است.
سپاسگذار.
سلام
در صورتی که هدف شما صرفا اضافه کردن یک مقدار به ردیف مورد نظر است، قاعدتا روش دوم بهینه تر است، اما اگر دستور SELECT بنا به اقتضای برنامه اجرا می شود، می توانید دستور UPDATE را برای ردیف مشخص اجرا کنید (از LIMIT 1 نیز استفاده کنید)، این روش نیز استاندارد است اما در کل حالت اول در معیار میلی ثانیه سریع تر خواهد بود (که خیلی محسوس نیست و می توان از آن صرف نظر کرد!)
در صورتی که هدف شما صرفا اضافه کردن یک مقدار به ردیف مورد نظر است، قاعدتا روش دوم بهینه تر است، اما اگر دستور SELECT بنا به اقتضای برنامه اجرا می شود، می توانید دستور UPDATE را برای ردیف مشخص اجرا کنید (از LIMIT 1 نیز استفاده کنید)، این روش نیز استاندارد است اما در کل حالت اول در معیار میلی ثانیه سریع تر خواهد بود (که خیلی محسوس نیست و می توان از آن صرف نظر کرد!)
Mostafa_042
۱۶:۰۲ ۱۳۹۳/۰۷/۱۸
سلام وقت بخیر. من یه مقداری تازه کار هستم ممنون میشم کمک کنید. این کد را دستور insert into اجرا کردم. حالا می خوام به update تبدیل کنم. ممنون میشم توی همین کد برام مثال بزنید.
mysql_query("insert into wp_register_users (file,group_name,user_n)
values ('$file','$group_name','$user_n')")
or die ('Error: '.mysql_error());
سلام
با توجه به نمونه پرس و جو می توان دستوری شبیه به نمونه زیر نوشت:
با توجه به نمونه پرس و جو می توان دستوری شبیه به نمونه زیر نوشت:
mysql_query("UPDATE wp_register_users SET `file` = '$file', `group_name` = '$group_name', `user_n` = '$user_n' WHERE `id` = 1")
or die ('Error: '.mysql_error());
نکته: در آپدیت دیتابیس باید ستون یا ستون های مورد نظر را مشخص کنید که در اینجا از ستون فرضی id استفاده شده.شهریار
۱۶:۳۳ ۱۳۹۳/۰۴/۰۷
درود بر شما
میخوام یه سایت قدیمی که با پی اچ پی نوشتم رو با کدهای جدید پی اچ پی بنویسم اما مشکل اینجاست که که سایتم از بین میره . می تونین در این زمینه کمک کنید .. که هم بتونم سایتم رو به روز کنم , هم اینکه سایت قبلیم از بین نره؟؟؟؟؟؟؟؟؟ پی اچ پی قبلی 4 و حالا پی اچ پی 5.3.10 به بالا میخوام
میخوام یه سایت قدیمی که با پی اچ پی نوشتم رو با کدهای جدید پی اچ پی بنویسم اما مشکل اینجاست که که سایتم از بین میره . می تونین در این زمینه کمک کنید .. که هم بتونم سایتم رو به روز کنم , هم اینکه سایت قبلیم از بین نره؟؟؟؟؟؟؟؟؟ پی اچ پی قبلی 4 و حالا پی اچ پی 5.3.10 به بالا میخوام
سلام
متاسفانه در این زمینه کمک خاصی از دستمان بر نمی آید، می توانید جداول دیتابیس سایت قبلی را در لوکال هاست یا سرور قرار داده (به طور مثال به ابتدای جداول پیشوند _old اضافه کنید) و سپس با نوشتن دستوراتی در PHP، اطلاعات جداول قبلی را به جداول جدید منتقل نمائید، به عبارتی به کدهایی نیاز دارید که اطلاعات را از فیلدهای جداول قبلی به فیلدهای جداول جدید منتقل کند، این کد را باید با دقت کامل و پس از آزمایش و خطا بنویسید و حتما قبل از حذف اطلاعات قبلی، از انتقال صحیح آنها اطمینان حاصل کنید.
متاسفانه در این زمینه کمک خاصی از دستمان بر نمی آید، می توانید جداول دیتابیس سایت قبلی را در لوکال هاست یا سرور قرار داده (به طور مثال به ابتدای جداول پیشوند _old اضافه کنید) و سپس با نوشتن دستوراتی در PHP، اطلاعات جداول قبلی را به جداول جدید منتقل نمائید، به عبارتی به کدهایی نیاز دارید که اطلاعات را از فیلدهای جداول قبلی به فیلدهای جداول جدید منتقل کند، این کد را باید با دقت کامل و پس از آزمایش و خطا بنویسید و حتما قبل از حذف اطلاعات قبلی، از انتقال صحیح آنها اطمینان حاصل کنید.
mehdiro
۲۰:۲۱ ۱۳۹۳/۰۴/۰۵
سلام و خسته نباشید
ببخشید من می خوام یک مقدار ستون اپدیت کنم بدون این که مقادیرش حذف شه
ببخشید من می خوام یک مقدار ستون اپدیت کنم بدون این که مقادیرش حذف شه
منظورتان از حذف مشخص نیست؟! قاعدتا UPDATE مقادیر را به روز رسانی می کند و مقدار قبلی بسته به هدف ما تبدیل به یک مقدار جدید می شود.
یه دوست
۲۱:۴۸ ۱۳۹۲/۱۱/۲۱
سلام من یک سایت دارم که با زبان php نوشته شده است و اطلاعات هم در xml ذخیره می شود در سایت من از تکنولوژی های زیر استفاده شده است:
php - xml - javascripts - css - html
دسترسی به کلیه فایل های xml توسط کد زیر در فایل htaccess. محدود شده است:
با تشکر از شما
php - xml - javascripts - css - html
دسترسی به کلیه فایل های xml توسط کد زیر در فایل htaccess. محدود شده است:
<Files ~ "\.xml$">
Order allow,deny
Deny from all
Satisfy All
</Files>
می خواستم بدونم آیا هکر می تونه به اینچنین سایتی که دارای بانک اطلاعاتی نیست نفوذ کند این مورد خیلی خیلی برای من مهم است.با تشکر از شما
سلام
هک سایت یک مفهوم گسترده است و روش ها و حالت های زیادی را شامل می شود، صرفا محدود به دیتابیس نیست، البته بر خلاف تصور معمول هک کردن سایت ها در صورتی که تنظیمات امنیتی سرور به درستی انجام شده باشد و برنامه های فایروال و... به روز باشند، همچنین کاربر در بخش کدنویسی حرفه ای باشد و ملاحظات امنیتی را رعایت کند، به راحتی امکانپذیر نیست، لذا در مورد سایت شما باید موارد امنیتی سرور رعایت شده باشد، به طور مثال حفاظت در برابر حملات DDOS، قاعدتا سایتی که دیتابیس ندارد، از حملات مربوط به پایگاه داده در امان است و ضریب نفوذ در این بخش کاهش می یابد، اما در هر صورت هیچ امنیت صددرصدی وجود ندارد.
هک سایت یک مفهوم گسترده است و روش ها و حالت های زیادی را شامل می شود، صرفا محدود به دیتابیس نیست، البته بر خلاف تصور معمول هک کردن سایت ها در صورتی که تنظیمات امنیتی سرور به درستی انجام شده باشد و برنامه های فایروال و... به روز باشند، همچنین کاربر در بخش کدنویسی حرفه ای باشد و ملاحظات امنیتی را رعایت کند، به راحتی امکانپذیر نیست، لذا در مورد سایت شما باید موارد امنیتی سرور رعایت شده باشد، به طور مثال حفاظت در برابر حملات DDOS، قاعدتا سایتی که دیتابیس ندارد، از حملات مربوط به پایگاه داده در امان است و ضریب نفوذ در این بخش کاهش می یابد، اما در هر صورت هیچ امنیت صددرصدی وجود ندارد.
ابوالفضل
۲۳:۳۲ ۱۳۹۲/۱۱/۱۸
سلام لطف کنید در رابطه با تابع mysqli_connect و mysql_pconnect توضیحاتی بدهید همینطور بگویید اگر از تابع mysql_close برای قطع ارتباط با پایگاه داده استفاده نشود چه مشکلی پیش می آید
بی نهایت ازتون سپاسگزارم
بی نهایت ازتون سپاسگزارم
سلام
تابع mysqli_connect در اکستنش بهبود یافته و تقریبا جدید PHP برای ارتباط با دیتابیس استفاده می شود، این تابع جایگزین تابع قدیمی mysql_connect است (که به مرور و در نسخه های جدیدتر دیگر پشتیبانی نخواهد شد)، تابع mysql_pconnect برای ایجاد لینک اتصال دائمی یا persistent connection استفاده می شود که جزء اکستنش قدیمی PHP است، در این حالت لینک اتصال پس از پایان کار حتی با فراخوانی توابعی مانند mysql_close نیز بسته نمی شود، این نوع اتصال در موارد خاصی کاربرد دارد، به طور مثال اگر سایت از دیتابیسی استفاده می کند که در سرور دیگری قرار دارد یا به فرض اگر تعداد کاربران دیتابیس محدود است.
تابع mysql_close برای بستن لینک اتصال غیر دائمی ایجاد شده با تابع mysql_connect است، استفاده از این تابع الزامی نیست و اگر استفاده نشود نیز لینک اتصال non-persistent به صورت خودکار بسته می شود.
تابع mysqli_connect در اکستنش بهبود یافته و تقریبا جدید PHP برای ارتباط با دیتابیس استفاده می شود، این تابع جایگزین تابع قدیمی mysql_connect است (که به مرور و در نسخه های جدیدتر دیگر پشتیبانی نخواهد شد)، تابع mysql_pconnect برای ایجاد لینک اتصال دائمی یا persistent connection استفاده می شود که جزء اکستنش قدیمی PHP است، در این حالت لینک اتصال پس از پایان کار حتی با فراخوانی توابعی مانند mysql_close نیز بسته نمی شود، این نوع اتصال در موارد خاصی کاربرد دارد، به طور مثال اگر سایت از دیتابیسی استفاده می کند که در سرور دیگری قرار دارد یا به فرض اگر تعداد کاربران دیتابیس محدود است.
تابع mysql_close برای بستن لینک اتصال غیر دائمی ایجاد شده با تابع mysql_connect است، استفاده از این تابع الزامی نیست و اگر استفاده نشود نیز لینک اتصال non-persistent به صورت خودکار بسته می شود.
ابوالفضل
۱۳:۳۱ ۱۳۹۲/۱۱/۱۸
ممنون اما در هنگام قرار دادن اون کد خطای زیر نمایش داده می شود:
و میگه دسترسی نداریم البته یه چیزی تو این مایه ها راهی برای رفعش وجود دارد ؟؟
و میگه دسترسی نداریم البته یه چیزی تو این مایه ها راهی برای رفعش وجود دارد ؟؟
Error
SQL query:
SET GLOBAL log_bin_trust_function_creators = TRUE ;
MySQL said: Documentation
#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation
باید از پشتیبانی هاستتان بخواهید که این تابع را به دیتابیس مورد نظر اضافه کنند.
ابوالفضل
۰۲:۰۶ ۱۳۹۲/۱۱/۱۸
سلام
در یک جدول در دیتابیس جملات انگلیسی ذخیره شده است من میخوام جملاتی که حرف اول آنها با حروف کوچک انگلیسی هست به حروف بزرگ تبدیل شود مثلا :
اگر امکانش هست راهنمایی نمایید . ممنون از سایت خوبتون
در یک جدول در دیتابیس جملات انگلیسی ذخیره شده است من میخوام جملاتی که حرف اول آنها با حروف کوچک انگلیسی هست به حروف بزرگ تبدیل شود مثلا :
my name
به :My Name
تبدیل شوداگر امکانش هست راهنمایی نمایید . ممنون از سایت خوبتون
سلام
برای انجام این کار بهتر است ابتدا یک پشتیبان از دیتابیس تهیه کنید، سپس از طریق برنامه phpMyAdmin به قسمت SQL جدول مورد نظر بروید و دستور زیر را یک بار اجرا کنید:
سپس مجددا بخش SQL را کلیک کنید تا قسمت مربوطه خالی شود، در این مرحله دستور UPDATE جدول و ستون مورد نظر را به صورت نمونه زیر اجرا کنید:
نکته: حداکثر طول کاراکترهای جدول باید از نوع VARCHAR 255 یا کمتر باشد.
برای دیدن تابع ایجاد شده می توانید دستور زیر را اجرا کنید:
برای انجام این کار بهتر است ابتدا یک پشتیبان از دیتابیس تهیه کنید، سپس از طریق برنامه phpMyAdmin به قسمت SQL جدول مورد نظر بروید و دستور زیر را یک بار اجرا کنید:
DROP FUNCTION IF EXISTS properCase;
SET GLOBAL log_bin_trust_function_creators = TRUE;
DELIMITER |
CREATE FUNCTION properCase(str VARCHAR(255))
RETURNS VARCHAR(255)
BEGIN
DECLARE c CHAR(1);
DECLARE s VARCHAR(255);
DECLARE i INT DEFAULT 1;
DECLARE bool INT DEFAULT 1;
DECLARE punct CHAR(18) DEFAULT ' ()[]{},.-_\'!@;:?/';
SET s = LCASE(str);
WHILE i <= LENGTH(str) DO
BEGIN
SET c = SUBSTRING(s, i, 1);
IF LOCATE(c, punct) > 0 THEN
SET bool = 1;
ELSEIF bool=1 THEN
BEGIN
IF c >= 'a' AND c <= 'z' THEN
BEGIN
SET s = CONCAT(LEFT(s,i-1), UCASE(c), SUBSTRING(s,i+1));
SET bool = 0;
END;
ELSEIF c >= '0' AND c <= '9' THEN
SET bool = 0;
END IF;
END;
END IF;
SET i = i+1;
END;
END WHILE;
RETURN s;
END;
|
DELIMITER ;
این دستور تابعی به نام properCase برای استفاده در پرس و جوهای MySQL ایجاد می کند (فقط کافی است کدها را در قسمت SQL قرار داده و یک بار بر روی GO کلیک کنید!).سپس مجددا بخش SQL را کلیک کنید تا قسمت مربوطه خالی شود، در این مرحله دستور UPDATE جدول و ستون مورد نظر را به صورت نمونه زیر اجرا کنید:
UPDATE `tbl` SET `name` = properCase(name) WHERE 1
به جای tbl نام جدول و به جای name نام ستون مورد نظر را وارد کنید، این دستور تمام مقادیر را به صورت مورد نظر تبدیل می کند.نکته: حداکثر طول کاراکترهای جدول باید از نوع VARCHAR 255 یا کمتر باشد.
برای دیدن تابع ایجاد شده می توانید دستور زیر را اجرا کنید:
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
و احیانا برای حذف آن از دستور زیر استفاده کنید:DROP FUNCTION IF EXISTS properCase;
مصطفی
۱۹:۱۴ ۱۳۹۲/۰۹/۳۰
سلام و خسته نباشید من 1 سوال جزئی داشتم آیا قرار دادن تریگر روی جداول منجر به کند شدن سرعت جدول میشه؟به فرض مثال من میتونم اطلاعات را از طریق فایل php وارد جدول کنم اما میتونم یه تریگر روی همون جدول بزارم که با تغییر یکی از فیلدها سایر فیلدهای جدول به نسبت تغییر کنه هر دو یک نتیجه میده. به نظر شما کدام بهینه تر و سرعت بیشتری داره؟ با تشکر
در کل هر چه سیستم شما از دیتابیس کمتر استفاده کند، نتیجه بهتر خواهد بود، البته این به میزان و حجم ستون های انتخاب شده از دیتابیس نیز بستگی دارد.
نتیجه: اگر کاری با دستورات PHP امکانپذیر است، بهینه تر آن است که از همین روش استفاده کنید، هر چند که ممکن است برای موارد جزئی تغییر ملموس نباشد.
نتیجه: اگر کاری با دستورات PHP امکانپذیر است، بهینه تر آن است که از همین روش استفاده کنید، هر چند که ممکن است برای موارد جزئی تغییر ملموس نباشد.
mohsen
۱۳:۱۶ ۱۳۹۲/۰۹/۲۸
با سلام و خسته نباشید خدمت شما دوست عزیز
شما در جواب بنده در یکی از سوالاتم گفته بودین که از event trigger استفاده کنم میشه بگین چطوری باید از اینا استفاده کرد؟ میشه یه مثالی بزنید؟ سوال قبلی بنده در همین صفحه قبل این صفحه است اگر میتوانید به طور کامل جواب بدین!
البته سوالم این بودش که چطوری میتونم پس از گذشت زمان معینی مثلا یه ساعت به متغییر مقداری خاص اضافه شه!
میشه یه مثال ساده بزنید؟
راستی اگه میشه بگین که من اصلا این کد ها رو باید کجا بزارم؟ تو همین صفحه طراحی سایت بین تگ php بزارم؟
میدونم یکم بد توضیح دادم ولی اگه میشه یه جواب مختصری بدین
با تشکر از شما
منتظر جوابتون هستم
شما در جواب بنده در یکی از سوالاتم گفته بودین که از event trigger استفاده کنم میشه بگین چطوری باید از اینا استفاده کرد؟ میشه یه مثالی بزنید؟ سوال قبلی بنده در همین صفحه قبل این صفحه است اگر میتوانید به طور کامل جواب بدین!
البته سوالم این بودش که چطوری میتونم پس از گذشت زمان معینی مثلا یه ساعت به متغییر مقداری خاص اضافه شه!
میشه یه مثال ساده بزنید؟
راستی اگه میشه بگین که من اصلا این کد ها رو باید کجا بزارم؟ تو همین صفحه طراحی سایت بین تگ php بزارم؟
میدونم یکم بد توضیح دادم ولی اگه میشه یه جواب مختصری بدین
با تشکر از شما
منتظر جوابتون هستم
سلام
event و trigger از طریق امکانات برنامه phpMyAdmin قابل تنظیم هستند (از گزینه More)، در کل این امکانات حداقل در عمل خیلی کاربردی و متداول نیستند، باید سعی کنید طوری برنامه بنویسید که به این نوع موارد نیاز نباشد.
event و trigger از طریق امکانات برنامه phpMyAdmin قابل تنظیم هستند (از گزینه More)، در کل این امکانات حداقل در عمل خیلی کاربردی و متداول نیستند، باید سعی کنید طوری برنامه بنویسید که به این نوع موارد نیاز نباشد.
mohsen
۱۹:۰۵ ۱۳۹۲/۰۹/۱۳
یه سوال دیگه داشتم خدمتتون
چرا وقتی مثلا میخوام از یه متغیر نشست (session) در دیگر صفحات سایت استفاده کنم با گذاشتن تابع
من هیچ خروجی روی مرورگر ندارم یعنی حتی کد های دیگر رو هم حذف می کنم فقط همین قسمت رو میزارم روی صفحه بازم الکی اررور میده!
من با نرم افزار Microsoft Expression web 4 کار می کنم میدونم که هیچ چیزی الکی الکی ارسال نمیکنه به مرورگر طرف! ولی بازم هر کاری می کنم مینویسه هدر قبلا ارسال شد!
نمیشه کاری کرد اصلا این اروره نیاد؟ یعنی نمیشه کاری کرد هدر بعدا ارسال شه؟
خواهشا طوری توضیح بدین قشنگ توضیح بدین من دیگه کلا از دسته این هدر خلاص شم!
راستی باید بگم که من کلا از کدهای شما هم استفاده کردم یعنی کلا کپی پیست کردم ولی اررور هدر بازم هست!
راستی یه سوال دیگه اینکه یه تابعی داریم به نام exit
که برنامه رو میبنده! من یه جا دیدم پارامتری توش قرار دادن که عدده! این عدده این جا چی کار میکنه؟ فقط یه ارگومان می گیره این تابع؟
سوال اخرم هم نظر شماست! به نظر شما که حرفه ای هستین، ایا جاوا اسکریپت و اژاکس سختر از php هست؟
کدوم راحتره از نظر شما؟
مرسی خیلی کمک کردین!
با تشکر فراوان فقط خواهشا اگه میشه خیلی قشنگ توضیح بدین با تشکر از شما
چرا وقتی مثلا میخوام از یه متغیر نشست (session) در دیگر صفحات سایت استفاده کنم با گذاشتن تابع
session_start
الکی الکی میگه هدر قبلا ارسال شده!من هیچ خروجی روی مرورگر ندارم یعنی حتی کد های دیگر رو هم حذف می کنم فقط همین قسمت رو میزارم روی صفحه بازم الکی اررور میده!
من با نرم افزار Microsoft Expression web 4 کار می کنم میدونم که هیچ چیزی الکی الکی ارسال نمیکنه به مرورگر طرف! ولی بازم هر کاری می کنم مینویسه هدر قبلا ارسال شد!
نمیشه کاری کرد اصلا این اروره نیاد؟ یعنی نمیشه کاری کرد هدر بعدا ارسال شه؟
خواهشا طوری توضیح بدین قشنگ توضیح بدین من دیگه کلا از دسته این هدر خلاص شم!
راستی باید بگم که من کلا از کدهای شما هم استفاده کردم یعنی کلا کپی پیست کردم ولی اررور هدر بازم هست!
راستی یه سوال دیگه اینکه یه تابعی داریم به نام exit
که برنامه رو میبنده! من یه جا دیدم پارامتری توش قرار دادن که عدده! این عدده این جا چی کار میکنه؟ فقط یه ارگومان می گیره این تابع؟
سوال اخرم هم نظر شماست! به نظر شما که حرفه ای هستین، ایا جاوا اسکریپت و اژاکس سختر از php هست؟
کدوم راحتره از نظر شما؟
مرسی خیلی کمک کردین!
با تشکر فراوان فقط خواهشا اگه میشه خیلی قشنگ توضیح بدین با تشکر از شما
سلام
- دریافت خطای Cannot modify header information - headers already sent، یعنی قبل از تابع session یا header خروجی به مرورگر ارسال می شود، این خروجی می تواند کاراکترهای مرئی یا حتی کاراکترهای نامرئی (BOM) باشد، برای اطمینان از برنامه هایی مانند ++Notepad استفاده و از قسمت Encoding کاراکترهای نامرئی BOM را حذف (UTF-8 without BOM) و فایل را مجددا ذخیره نمائید.
- تابع exit می تواند دو نوع آرگومان داشته باشد، رشته متنی و عدد (بین 0 تا 255)، اگر آرگومان string باشد، پس از خروج از اجرای کدها، متن مورد نظر چاپ می شود، اگر عدد باشد، 0 به معنی خروج و پایان برنامه است، 255 عددی رزرو شده توسط PHP است، ظاهرا سایر اعداد تاثیر و معنای خاصی در این مورد ندارند.
- دریافت خطای Cannot modify header information - headers already sent، یعنی قبل از تابع session یا header خروجی به مرورگر ارسال می شود، این خروجی می تواند کاراکترهای مرئی یا حتی کاراکترهای نامرئی (BOM) باشد، برای اطمینان از برنامه هایی مانند ++Notepad استفاده و از قسمت Encoding کاراکترهای نامرئی BOM را حذف (UTF-8 without BOM) و فایل را مجددا ذخیره نمائید.
- تابع exit می تواند دو نوع آرگومان داشته باشد، رشته متنی و عدد (بین 0 تا 255)، اگر آرگومان string باشد، پس از خروج از اجرای کدها، متن مورد نظر چاپ می شود، اگر عدد باشد، 0 به معنی خروج و پایان برنامه است، 255 عددی رزرو شده توسط PHP است، ظاهرا سایر اعداد تاثیر و معنای خاصی در این مورد ندارند.
php.net/exit
- قاعدتا JavaScript که یک زبان اسکریپت نویسی سمت کاربر است با PHP که زبان سمت سرور است فرق می کند! در کل هر دو مورد در حد رفع نیازهای اولیه در مقایسه با سایر زبان های برنامه نویسی خیلی سخت نیستند، اما در حد متوسط و حرفه ای، با پیچیده تر شدن هدفتان، مباحث نیز پیچیده می شوند و نیاز به تجربه، تمرین و ممارست بیشتری است، اگر JavaScript را فرا بگیرید، Ajax خیلی سخت نیست و چندان مباحث مفصلی ندارد.mohsen
۱۵:۰۷ ۱۳۹۲/۰۹/۱۳
بازم سلام
من یه سوال دارم اگه نمیتونین دقیق توضیح بدین فقط یه راهنماییم بکنین تا خودم حداقل بدونم دنبال چی هستم
دو سوال دارم
اول اینکه سیستم پیام دادن و .. توی سایت ها چه جوریه؟یعنی مثلا اول پیام مربوط تو دیتابیس ذخیره میشه و با توجه به اون نام کاربری طرف بهش پیام میرسه؟!!!
دوم اینکه مثلا تو بعضی از بازی های اینترنتی میبینیم که از نقشه تو بازی استفاده میکنن این کار چطور امکان پذیره؟ با php میشه این کد ها رو طراحی کرد؟
میدونم سوال هام یکم در واقع چرت هست ولی خوب سواله دیگه هر چی دنبالش میگردم پیدا نمیکنم از همه میپرسم جوابی نمیدن!
بازم تشکر
ولی خواهشا سریع جواب بدین لطفا
من یه سوال دارم اگه نمیتونین دقیق توضیح بدین فقط یه راهنماییم بکنین تا خودم حداقل بدونم دنبال چی هستم
دو سوال دارم
اول اینکه سیستم پیام دادن و .. توی سایت ها چه جوریه؟یعنی مثلا اول پیام مربوط تو دیتابیس ذخیره میشه و با توجه به اون نام کاربری طرف بهش پیام میرسه؟!!!
دوم اینکه مثلا تو بعضی از بازی های اینترنتی میبینیم که از نقشه تو بازی استفاده میکنن این کار چطور امکان پذیره؟ با php میشه این کد ها رو طراحی کرد؟
میدونم سوال هام یکم در واقع چرت هست ولی خوب سواله دیگه هر چی دنبالش میگردم پیدا نمیکنم از همه میپرسم جوابی نمیدن!
بازم تشکر
ولی خواهشا سریع جواب بدین لطفا
سلام
مورد اول با اختصاص شماره id اختصاصی به هر کاربر در دیتابیس و با استفاده از بحث session ها انجام می شود، به طور خلاصه هنگام ورود نام کاربری و پسورد کاربر با آی دی او تطبیق داده شده و پیام هایی به او نشان داده می شود که در قسمت id شماره متناظر آن کاربر درج شده باشد.
در مورد بحث بازی های آنلاین، این یک مبحث پیشرفته است که مجموعه ای از زبان های سمت سرور و کاربر (به طور مثال ترکیب PHP، JavaScript، Ajax و...) در تعامل با هم آن را ایجاد می کنند.
مورد اول با اختصاص شماره id اختصاصی به هر کاربر در دیتابیس و با استفاده از بحث session ها انجام می شود، به طور خلاصه هنگام ورود نام کاربری و پسورد کاربر با آی دی او تطبیق داده شده و پیام هایی به او نشان داده می شود که در قسمت id شماره متناظر آن کاربر درج شده باشد.
در مورد بحث بازی های آنلاین، این یک مبحث پیشرفته است که مجموعه ای از زبان های سمت سرور و کاربر (به طور مثال ترکیب PHP، JavaScript، Ajax و...) در تعامل با هم آن را ایجاد می کنند.
mohsen
۲۱:۲۶ ۱۳۹۲/۰۹/۱۲
سلامی دوباره
یکم بیشتر توضیح میدم
ببینین من تو php یه متغیری ساختم مثلا به اسم x$!
یه متغیر دیگه ای هم ساختم مثلا به اسم min$ که برابر دقیقه ای از تابع date!
میخوام با گذر هر یه دقیقه تو دیتابیس مای اس کیو الم به این متغیر مثلا 10 تا اضافه شه!!! خوب باید الان من چه جوری همچین کدی بنویسم؟؟؟
فکر کنم خوب توضیح داده باشم!
یکم بیشتر توضیح میدم
ببینین من تو php یه متغیری ساختم مثلا به اسم x$!
یه متغیر دیگه ای هم ساختم مثلا به اسم min$ که برابر دقیقه ای از تابع date!
میخوام با گذر هر یه دقیقه تو دیتابیس مای اس کیو الم به این متغیر مثلا 10 تا اضافه شه!!! خوب باید الان من چه جوری همچین کدی بنویسم؟؟؟
فکر کنم خوب توضیح داده باشم!
سلام
به چند روش می توانید چنین قابلیتی ایجاد کنید:
- روش اول نوشتن کد به PHP و فراخوانی آن در هر دقیقه با قابلیت Cron job در cPanel است.
- روش دیگر استفاده از event trigger در MySQL است، در این روش یک پرس و جو به صورت event اختصاص می دهید که در فواصل زمانی تعیین شده توسط شما اجرا می شود (از برنامه phpMyAdmin استفاده کنید).
- روش دیگر که تنها در هنگام فراخوانی و باز بودن صفحه در مرورگر قابل استفاده است، روش مبتنی بر Ajax است.
به چند روش می توانید چنین قابلیتی ایجاد کنید:
- روش اول نوشتن کد به PHP و فراخوانی آن در هر دقیقه با قابلیت Cron job در cPanel است.
- روش دیگر استفاده از event trigger در MySQL است، در این روش یک پرس و جو به صورت event اختصاص می دهید که در فواصل زمانی تعیین شده توسط شما اجرا می شود (از برنامه phpMyAdmin استفاده کنید).
- روش دیگر که تنها در هنگام فراخوانی و باز بودن صفحه در مرورگر قابل استفاده است، روش مبتنی بر Ajax است.
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.