به روز رسانی ردیف ها در 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، سیستم مدیریت پایگاه داده
استفاده از JOIN و ساخت پرس و جوی ترکیبی در MySQL
استفاده از WHERE در پرس و جوی MySQL
محدودسازی، گروه بندی و مرتب سازی نتایج در MySQL
اتصال PHP به MySQL با اکستنشن MySQLi
دیدگاه


محدثه
۱۶:۱۳ ۱۴۰۱/۰۳/۳۱
سلام وقت بخیر من میخواستم یه کد ادیت بنویسم اومدم اول یک تابع سلکت نوشتم بعد از کد آپدیت استفاده کردم مشکلم اینه که وقتی اپدیت میکنم اون فیلد اپدیت نمیشه یک فیلد با مشخصات جدید اپدیت شده ساخته میشه
اگر درست متوجه منظورتان شده باشیم باید شماره ID فیلد مورد نظر را در هنگام اجرای دستور UPDATE در قسمت WHERE مشخص کنید، به فرض اگر ردیف مورد نظر در ستون id مقدار 20 داشته باشد دستور UPDATE به شکل نمونه زیر خواهد بود:
UPDATE tbl_name SET column_name = 'value' WHERE id = '20'
در صورت استفاده از پارامترهایی که از سمت کاربر دریافت می شوند ایمن سازی مقادیر قبل از استفاده در پرس و جو هم باید لحاظ شود.آویسا
۰۴:۳۲ ۱۴۰۱/۰۳/۱۴
execute نمیشه ! صفحه سفیده بدون ارور لاگ ! مود ستون هم text هست دیوونه ام کرده این متغیر
$new_content
در اینصورت باید خطایابی را مرحله به مرحله انجام دهید، سطح نمایش خطاها را در ابتدای فایل PHP منفی یک در نظر بگیرید:
<?php
error_reporting(-1);
.
.
.
?>
پرس و جوی SELECT را با LIMIT به چند مورد محدود کنید:SELECT * FROM posts LIMIT 10
در قسمت UPDATE با errorInfo خطای دریافتی را بررسی کنید:if($result->execute()){
echo 'update success!';
} else {
print_r($st->errorInfo());
}
در صورتی که مشکل با این روش ها مشخص نشود نیاز به تست آنلاین در سرورتان دارد.آویسا
۱۴:۳۳ ۱۴۰۱/۰۳/۱۳
سلام و عرض ادب ، من یه دستور آپدیت نوشتم که از لحاظ کدنویسی درسته اما به خاطر اینکه کوئری من بزرگ هست در دیتابیس آپدیت نمیشه ، از ساختار ورکر ، تکست و لانگ تکست هم استفاده کردم اما فایده ای نداره ؛ در واقع این ستون حاوی اطلاعات html و css هم هست که کار رو سخت تر کرده . من با تابع str_replace اقدام به جایگزینی یه آتریبیوت به جای آتریبیوت قبلی کردمو در حالت اکو همه چی درسته و با وجود اینکه فرآیند آپدیت انجام میشه اما عملا این کوئری آپدیت نمیشه!
<?php
require_once('dbase.php');
$query = "SELECT * FROM posts";
$result = $connect->prepare($query);
$result->execute();
while($row = $result->fetch(PDO::FETCH_ASSOC)){
$id = $row['id'];
$content = $row['content'];
$video_url = "data-source='//videos/";
$new_video_url = "data-source='https://dl2.mizbanfa.net/videos/";
$new_content = str_replace($video_url, $new_video_url, $content);
$update = "UPDATE posts SET content = '$new_content' WHERE id = '$id'"
$result = $connect->prepare($update);
if($result->execute()){
echo 'update success!';
}
}
?>
لطف می کنید اگر مشکلم رو حل بفرمایید .به نظر قسمت UPDATE در نمونه پرس و جوی شما صحیح نیست، کد بالا بر اساس اکستنشن PDO ویرایش و اصلاح شد.
نکته: در صورتی که از پارامترهای خارجی (به طور مثال مقادیر ارسال شده با متد POST یا GET) استفاده می کنید حتما با bindParam در PDO قبل از متد execute پارامترها را ایمن سازی کنید، به فرض:
نکته: در صورتی که از پارامترهای خارجی (به طور مثال مقادیر ارسال شده با متد POST یا GET) استفاده می کنید حتما با bindParam در PDO قبل از متد execute پارامترها را ایمن سازی کنید، به فرض:
$update = "UPDATE posts SET content = :new_content WHERE id = '$id'"
$result = $connect->prepare($update);
$result->bindParam(':new_content', $new_content);
m.b
۱۶:۲۶ ۱۴۰۰/۱۱/۲۳
با سلام و عرض خدا قوت و تشکر بابت سایت مفدیتان که الحق و انصاف خیلی جاها کارم را راه انداختین . یک سوال خدمتتان داشتم من یک صفحه ای ساختم که تو اون اسامی بیماران را جستجو می کنه و از دیتابیس فراخوانی انجام میشه و نمایش داده میشه میخواستم تو یک فیلد که قسمت ویرایش داره و یک قسمت بابت حذف با توجه به نمونه سورس های من به چه صورت باید انجام بشه تا بعد از پیدا کردن بیمار مورد نظر و در فیلد اخر مشخصات بشه اطلاعات مثلا نام و نام خانوادگی و موبایل و ساعت و تاریخ ویزیت رو ویرایش کرد .
سوال بعدی اینه که اگر بخوام بعد از پیدا کردن اطلاعات بیمار پس از سرچ بخوام کلا اون بیمار از دیتابیس حذف بشه به چه صورت باید کد نویسی انجام بشه . در صورت امکان نمونه سورس آن را محبت نمایید .
سوال بعدی اینه که اگر بخوام بعد از پیدا کردن اطلاعات بیمار پس از سرچ بخوام کلا اون بیمار از دیتابیس حذف بشه به چه صورت باید کد نویسی انجام بشه . در صورت امکان نمونه سورس آن را محبت نمایید .
<div class="Search" style="background:blue"><div class="title-right" style="background:blue"><p class="right" style="color:white;" >لطفا جهت مشاهده نام خانوادگی بیمار را وارد نموده و جستجو نمایید<hr class="right" style=""></p>
<form action="#" style="width:100%;" method="post">
<input class="Search" style="width:75%;margin-right:2%;float:right; border-radius:10px;border:1px solid blue;;height:30px"type="text" name="query"placeholder="عبارت مورد نظر را جستجو نمایید...">
<input class="w3-hover-shadow" style="margin-left: 2%;border-radius:5px;background:blue;color:white;width:20%;height:30px"type="submit" name="search" value="جستجو">
</form></div></div>
</div>
</div>
</div>
<div class="col-10 col-s-12" style="margin-top:5px;">
<?php
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";
// Create connection
$db = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($db->connect_error) {
die("ارتباط برقرار نشد: " . $db->connect_error);
}
if(isset($_POST['search'])){
$searchQuery=$_POST['query'];
$getnewposts=mysqli_query($db,"SELECT * FROM `patients`WHERE lastname!= '' AND lastname LIKE '%$searchQuery%' OR firstname LIKE '%$searchQuery%' OR nationalcode LIKE '%$searchQuery%' OR date LIKE '%$searchQuery%' OR day LIKE '%$searchQuery%' OR time LIKE '%$searchQuery%' OR description LIKE '%$searchQuery%' OR videocall LIKE '%$searchQuery%' ORDER BY `date` DESC ");
echo "<table border='1' >
<tr>
<th >ردیف</th>
<th>نام</th>
<th>نام خانوادگی</th>
<th>کد ملی </th>
<th>شماره تماس </th>
<th>تاریخ</th>
<th>روز</th>
<th>زمان</th>
<th>وضعیت پرداخت</th>
<th>توضیحات</th>
<th>ویرایش</th>
<th>حذف</th>
</tr>";
while($row = mysqli_fetch_array($getnewposts)){
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['firstname'] . "</td>";
echo "<td>" . $row['lastname'] . "</td>";
echo "<td>" . $row['nationalcode'] . "</td>";
echo "<td>" . $row['mobile'] . "</td>";
echo "<td>" . $row['date'] . "</td>";
echo "<td>" . $row['day'] . "</td>";
echo "<td>" . $row['time'] . "</td>";
echo "<td>" . $row['paymentstatus'] . "</td>";
echo "<td>" . $row['description'] . "</td>";
echo "<td>" .'<a href="https://www.drmoslemsoltani.ir/dashbord/update.php?id=$p"><img src="/img/edite.png" width="20px" height="20px" alt="update"/></img></a>';
echo "<td>" .'<a href="https://www.drmoslemsoltani.ir/dashbord/delete.php?id=$p"><img src="/img/delete.png" width="20px" height="20px" alt="delete"/></img></a>';
echo "</tr>";
}
}
else{
echo "با اطلاعات فوق مشخصاتی وجود ندارد";
}
?>
</div>
</div>
</div>
امکاناتی که می خواهید به برنامه اضافه کنید نیاز به توسعه اساسی و زمانبر کدها دارد و با توجه به اهمیت حفظ امنیت و رعایت جزئیات زیاد واقعا نمی شود در این قسمت صرفا با نمونه کد راهنمایی کرد، نمونه کدها در آموزش مقدماتی MySQL وجود دارند به فرض برای ویرایش باید اطلاعات را با توجه به آی دی بیمار از دیتابیس SELECT و در فیلدهای input در قسمت value به عنوان مقدار چاپ و در نهایت پس از ارسال مجدد فرم با دستور UPDATE ستون مربوط به بیمار را با اطلاعات جدید به روز کنید، در مورد حذف هم باید یک دکمه (button) تعبیه کرد و پس از ارسال ID ردیف متناظر بیمار نیاز است که با نحوه کار دستور DELETE در MySQL آشنا باشید که آموزش های آن در وب و در سایت وجود دارد، در کل آشنایی با دو مبحث زیر مورد نیاز است:
- نحوه کار فرم های وب و متد GET و POST.
- نحوه کار PHP و MySQL برای برقراری ارتباط، انتخاب، به روزرسانی و حذف اطلاعات.
- نحوه کار فرم های وب و متد GET و POST.
- نحوه کار PHP و MySQL برای برقراری ارتباط، انتخاب، به روزرسانی و حذف اطلاعات.
m.b
۱۳:۱۴ ۱۴۰۰/۰۷/۰۵
ضمن تشکر و خداقوت از اینکه جواب تمامی سوالات بنده را کامل فرمودید که خیلی بهم کمک کرد سوالی داشتم از خدمتتان و اون اینکه من تو سایتم می خوام امکان چت انلاین با مشتری داشته باشتم به چه صورت و چه روش میشه این کار رو انجام داد.
و همچنین اگر بخوام یک باتن مثل واتس آپ پایین سایت داشته باشتم که مشتری امکان ارتباط از طریق واتس آپ و چت انلاین را داشته باشته باشد به چه روشی و با سورس امکان راهنمایی هست. ممنون
و همچنین اگر بخوام یک باتن مثل واتس آپ پایین سایت داشته باشتم که مشتری امکان ارتباط از طریق واتس آپ و چت انلاین را داشته باشته باشد به چه روشی و با سورس امکان راهنمایی هست. ممنون
برای ایجاد سیستم چت آنلاین در سایت دو راه وجود دارد:
- طراحی و برنامه نویسی سیستم چت آنلاین.
- استفاده از برنامه های موجود به صورت رایگان یا با پرداخت هزینه.
در مورد حالت اول باید با برنامه نویسی وب و زبان هایی مانند JavaScript و PHP آشنا باشید و زمان لازم را برای ایجاد این سیستم صرف کنید.
در مورد روش دوم لطفا در گوگل عبارت "سیستم چت آنلاین برای سایت" را جستجو کنید، مجموعه ای از برنامه ها در این زمینه قابل استفاده است که ابتدا باید در این زمینه و انتخاب یک مورد تحقیق کنید.
در مورد ایجاد دکمه WhatsApp طراحی را باید خودتان به کمک کدهای HTML و CSS انجام دهید، یک نمونه:
برای ایجاد لینک هم می توانید با تگ a به صورت نمونه زیر شماره موبایلتان را قرار دهید:
- طراحی و برنامه نویسی سیستم چت آنلاین.
- استفاده از برنامه های موجود به صورت رایگان یا با پرداخت هزینه.
در مورد حالت اول باید با برنامه نویسی وب و زبان هایی مانند JavaScript و PHP آشنا باشید و زمان لازم را برای ایجاد این سیستم صرف کنید.
در مورد روش دوم لطفا در گوگل عبارت "سیستم چت آنلاین برای سایت" را جستجو کنید، مجموعه ای از برنامه ها در این زمینه قابل استفاده است که ابتدا باید در این زمینه و انتخاب یک مورد تحقیق کنید.
در مورد ایجاد دکمه WhatsApp طراحی را باید خودتان به کمک کدهای HTML و CSS انجام دهید، یک نمونه:
https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_social_media_buttons
بری WhatsApp باید کلاس whatsapp تعریف کنید.برای ایجاد لینک هم می توانید با تگ a به صورت نمونه زیر شماره موبایلتان را قرار دهید:
<a target="_blank" href="https://wa.me/09110000000">تماس در واتساپ</a>
m.b
۰۶:۳۸ ۱۴۰۰/۰۷/۰۴
سلام
جهت جمع کردن تعداد ردیف های یک تیبل معمولا از چه سورسی استفاده میشه داخل ردیف ها متن هست.
و اینکه من یک پست دارم که از دیتابیس فراخوانی کردم اگر بخوام ببینم چند بار تا حالا مشاهده شده از چه کدی باید استفاده کنم. ممنون از جوابگویتون.
جهت جمع کردن تعداد ردیف های یک تیبل معمولا از چه سورسی استفاده میشه داخل ردیف ها متن هست.
و اینکه من یک پست دارم که از دیتابیس فراخوانی کردم اگر بخوام ببینم چند بار تا حالا مشاهده شده از چه کدی باید استفاده کنم. ممنون از جوابگویتون.
با روش های مختلفی می توانیم تعداد کل ردیف های جدول را در MySQL به دست آوریم، یک راه استفاده از تابع mysqli_num_rows است به فرض:
در مورد سوال دوم و محاسبه تعداد بازدیدهای یک پست باید چند مرحله کار انجام شود، ابتدا در صفحه ای که پست را نمایش می دهد با هر بار فراخوانی، با دستور UPDATE یک واحد ستون مربوط به بازدیدهای پست را افزایش می دهیم، به فرض:
نکته: ستون مربوط به تعداد بازدیدهای پست باید از نوع داده (Data Type) عددی (INT) باشد.
$sql = "SELECT id FROM tbl_name";
if($result = mysqli_query($conn, $sql)) {
$row_count = mysqli_num_rows($result);
echo "مجموع کل ردیف ها: " . $row_count;
}
راه حل دوم استفاده از تابع تجمیعی COUNT است که آموزش آن در سایت وجود دارد.در مورد سوال دوم و محاسبه تعداد بازدیدهای یک پست باید چند مرحله کار انجام شود، ابتدا در صفحه ای که پست را نمایش می دهد با هر بار فراخوانی، با دستور UPDATE یک واحد ستون مربوط به بازدیدهای پست را افزایش می دهیم، به فرض:
UPDATE tbl_name SET col_name = col_name + 1 WHERE id = '$post_id'
در گام دوم باید دستور SELECT بنویسید و آمار موجود در دیتابیس را استخراج و در خروجی نمایش دهید.نکته: ستون مربوط به تعداد بازدیدهای پست باید از نوع داده (Data Type) عددی (INT) باشد.
Fari
۰۷:۴۷ ۱۴۰۰/۰۴/۰۲
سلام
یک سوال، ممنون میشم کمکم کنید
اگر بخوایم موقع ثبت نام یک کاربر با کد معرفی یک شخص (سرگروه) چک بکنیم که مثلا کاربر a با کد معرفی کاربر b ثبت نام انجام داده وقتی که اطلاعات کاربر b رو اینسرت کردیم در فیلدهای مربوط به کاربر سرگروه یا همون کاربر b فیلد تعداد زیر مجموعه آپدیت بشه و تعداد زیر مجموعه اون رو یک عدد افزایش بده باید چیکار بکنیم؟
یک سوال، ممنون میشم کمکم کنید
اگر بخوایم موقع ثبت نام یک کاربر با کد معرفی یک شخص (سرگروه) چک بکنیم که مثلا کاربر a با کد معرفی کاربر b ثبت نام انجام داده وقتی که اطلاعات کاربر b رو اینسرت کردیم در فیلدهای مربوط به کاربر سرگروه یا همون کاربر b فیلد تعداد زیر مجموعه آپدیت بشه و تعداد زیر مجموعه اون رو یک عدد افزایش بده باید چیکار بکنیم؟
بستگی دارد ساختار کدنویسی برنامه و جداول دیتابیس را به چه نحوی پیاده سازی کرده باشید، یک حالت می تواند به این شکل باشد که در جدول سرگروه اسامی سرگروه ها وجود دارد (به فرض جدول tbl_1 و کاربر b)، جدول tbl_1 ستون هایی به نام col_name از نوع VARCHAR و col_count از نوع INT دارد، اسامی کاربران نیز در جدول دوم به فرض tbl_2 ذخیره می شود و این جدول هم ستونی با نام col_parent از نوع VARCHAR دارد که کاربر سرگروه را در صورت وجود در آن درج می کنیم، برای افزایش یک واحد به ستون col_count اگر در مرحله INSERT اطلاعات کاربر جدید، سرگروه در دسترس باشد (روش بررسی اینکه کاربر سرگروه دارد یا خیر بستگی به برنامه دارد به فرض ممکن است از فرم HTML سرگروهی انتخاب شده باشد یا در جدولی جداگانه اسامی سرگروه و کاربران زیرمجموعه آن از قبل ثبت و SELECT شده باشد) در این حالت می توانیم با اجرای نمونه پرس و جوی زیر مقدار ستون col_count را یک واحد افزایش دهیم:
UPDATE tbl_1 SET col_count = col_count + 1 WHERE col_name = 'b' LIMIT 1
قاعدتا نام سرگروه باید به صورت متغیر در کدها جایگزین و امنیت پرس و جو نیز به روش های ممکن حفظ شود.fahimeh
۱۴:۳۰ ۱۳۹۹/۰۷/۱۲
سلام
من دارم پروژه واسه دانشگاه مینویسم طراحی سایتو کردم
برای کار با پایگاه داده دستور insert و delete کار میکنه ولی دستور update رو نمیدونم چجوری بنویسم؟ برای دستور insert هم موقع نمایش پست ها توی صفحه هر سطر جدول رو 8 بار نشون میده!
میشه لطفا راهنماییم کنید
پروژم و پایگاه داده رو بفرستم؟
من دارم پروژه واسه دانشگاه مینویسم طراحی سایتو کردم
برای کار با پایگاه داده دستور insert و delete کار میکنه ولی دستور update رو نمیدونم چجوری بنویسم؟ برای دستور insert هم موقع نمایش پست ها توی صفحه هر سطر جدول رو 8 بار نشون میده!
میشه لطفا راهنماییم کنید
پروژم و پایگاه داده رو بفرستم؟
می توانید فایل های قابل تست پروژه را به صورت فشرده (فرمت zip) به آدرس ایمیل ما (موجود در بخش تماس) ارسال کنید تا بررسی کنیم.
نکته: تنها در صورتی کدهای برنامه اصلاح می شوند که این کار خیلی زمانبر نباشد.
نکته: تنها در صورتی کدهای برنامه اصلاح می شوند که این کار خیلی زمانبر نباشد.
مصطفی
۱۴:۳۴ ۱۳۹۸/۰۹/۰۶
سلام . وقتی داریم یک رکورد رو آپدیت میکنیم ، چطوری بفهمیم کدوم ستون ها داره آپدیت میشه و اونارو بفرستیم به یک view ؟
منظورتان دقیقا مشخص نیست؟! قاعدتا ستون ها در پرس و جوی UPDATE مشخص هستند اما اگر منظور دریافت آخرین ردیف هایی است که با دستور جاری آپدیت شده اند تا آنجا که اطلاع داریم MySQL متدی برای این منظور در نظر نگرفته و در واقع نتیجه هر پرس و جو به محض اتمام اجرا به مفسر PHP برگردانده می شود و تنها در این لحظه می توانیم تعداد نتیجه را با متدهایی مانند mysqli_affected_rows دریافت و چاپ کنیم، با توجه به این حالت یا باید پرس و جوی آپدیت هر ردیف به صورت جداگانه (به فرض در حلقه for یا foreach) اجرا شود، یا با یک پرس و جوی SELECT دیگر وضعیت آخرین آپدیت ستون ها به فرض با در نظر گرفتن ستون تاریخ و زمان دریافت شود.
om
۱۱:۵۷ ۱۳۹۷/۰۴/۰۳
سلام .
ببخشید من برای طراحی سایت صرافی نیاز دارم تا یک لینکی به یکی از کاربران بدم تا بدون نیاز به وارد شدن در پنل وردپرس و .... این امکان رو داشته باشه تا با وارد کردن پسورد قیمت ارزها رو از طریق اون فرم بتونه تغییر بده.
امکانش هست راهنمایی بفرمایید چگونه این کار ممکنه؟
ببخشید من برای طراحی سایت صرافی نیاز دارم تا یک لینکی به یکی از کاربران بدم تا بدون نیاز به وارد شدن در پنل وردپرس و .... این امکان رو داشته باشه تا با وارد کردن پسورد قیمت ارزها رو از طریق اون فرم بتونه تغییر بده.
امکانش هست راهنمایی بفرمایید چگونه این کار ممکنه؟
قاعدتا برای این کار باید کدنویسی کنید! یعنی یک برنامه کوچک با فایل های جداگانه بنویسید که از دیتابیس وردپرس استفاده کند، اگر کاربر وارد این برنامه نشده باشد، فرم ورود را نمایش دهید و اگر کوکی و سشن معتبر باشد، فرم ویرایش را در خروجی داشته باشید، پس از ارسال فرم نیز ردیف های مد نظر با مقادیر ارسالی کاربر به روز شوند.
کاظم
۱۸:۱۶ ۱۳۹۶/۰۶/۲۳
سلام
ممنون
چطور میشه بعد از ویرایش در صفحه مربوطه کنار رکورد مورد نظر یه دکمه ظاهر بشه و همچنین رنگ رکورد تغییر یافته مثلا قرمز بشه و بعد از ok کردن دکمه رنگ سبز بشه ؟
ممنون
چطور میشه بعد از ویرایش در صفحه مربوطه کنار رکورد مورد نظر یه دکمه ظاهر بشه و همچنین رنگ رکورد تغییر یافته مثلا قرمز بشه و بعد از ok کردن دکمه رنگ سبز بشه ؟
این موارد باید با برنامه نویسی اعمال شوند، متاسفانه توضیح ساده و کوتاهی قابل ارائه نیست!
امیرهادی
۱۴:۵۷ ۱۳۹۶/۰۴/۲۶
سلام به شما
دستوری هست که بعد از هر تغییر (مثلا UPDATE یا INSERT ) یک واحد به فیلد فرضی ID2 اضافه کند؟
مثلا ما یک فیلد ID داریم که بعداز INESERT کردن به صورت اتوماتیک یک واحد بیشتر میشود. ولی موقع UPDAT شدن بدون تغییر باقی میماند. الان میخوام یک فیلدر دیگر داشته باشم (مثلا ID2) که موقع آپدیت کردن هم افزایش پیدا کند. من الان موقع آپدیت سطرها، متغیر ID2 را دریافت میکنم و یک واحد بهش اضافه میکنم و دوباره به دیتابیس وارد میکنم.
دنبال دستورش هستم
دستوری هست که بعد از هر تغییر (مثلا UPDATE یا INSERT ) یک واحد به فیلد فرضی ID2 اضافه کند؟
مثلا ما یک فیلد ID داریم که بعداز INESERT کردن به صورت اتوماتیک یک واحد بیشتر میشود. ولی موقع UPDAT شدن بدون تغییر باقی میماند. الان میخوام یک فیلدر دیگر داشته باشم (مثلا ID2) که موقع آپدیت کردن هم افزایش پیدا کند. من الان موقع آپدیت سطرها، متغیر ID2 را دریافت میکنم و یک واحد بهش اضافه میکنم و دوباره به دیتابیس وارد میکنم.
دنبال دستورش هستم
با توجه به توضیحات باید سورس کدهای برنامه بررسی شوند، به همان صورت که در هنگام INSERT یک واحد به ستون مورد نظر اضافه می شود، می توان همان کد را در قسمت UPDATE نیز قرار داد، در واقع ظاهر کد در برنامه شما وجود دارد منتها باید آن را پیدا کنید و در قسمت UPDATE نیز درج نمائید که مستلزم تسلط بر PHP و MySQL است.
mehdi
۰۳:۰۳ ۱۳۹۴/۰۵/۱۲
سلام
اگر چند تا فیلد داشته باشیم و بخواهیم آنها رو آپدیت کنیم چی ؟
مثلا شما یه پسورد داشتی که آپدیتش کردی حالا من چند تا فیلد نام و نام خانوادگی و . . . دارم که با توجه به کد ملی می خواهم آپدیتشون کنم .
اگر یه راهنمایی کنید ممنون می شم
اگر چند تا فیلد داشته باشیم و بخواهیم آنها رو آپدیت کنیم چی ؟
مثلا شما یه پسورد داشتی که آپدیتش کردی حالا من چند تا فیلد نام و نام خانوادگی و . . . دارم که با توجه به کد ملی می خواهم آپدیتشون کنم .
اگر یه راهنمایی کنید ممنون می شم
سلام
اگر به مثال اول این آموزش دقت کنید، دو فیلد با علامت , از هم تفکیک شده اند، همین روال برای هر تعداد فیلد که داشته باشید می تواند استفاده شود (یعنی با علامت , جداسازی کنید).
اگر به مثال اول این آموزش دقت کنید، دو فیلد با علامت , از هم تفکیک شده اند، همین روال برای هر تعداد فیلد که داشته باشید می تواند استفاده شود (یعنی با علامت , جداسازی کنید).
۱۸:۵۸ ۱۳۹۴/۰۳/۰۹
سلام. اول بگم که شما فوق العاده اید و من قبل از اینکه با وب شما آشنا بشم هیچی بارم نبود اما الان تا حدودی می تونم گلیم خودمو از آب در بیارم :)
-------------------------------------------------------------------------
اما سوال:
من یک دیتابیس دارم که امکان تغییرات به صورت دستی بهم نمیده. این پیغامشه
کد رو تو لینک زیر گذاشتم. ممنون میشم راهنماییم کنید.
-------------------------------------------------------------------------
اما سوال:
من یک دیتابیس دارم که امکان تغییرات به صورت دستی بهم نمیده. این پیغامشه
This table does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.
برای همین تلاش کردم که با این آموزشی که گذاشتید بتونم تغییرات دلخواهم رو توش بدم. اما مشکل اینجاست که من هر کاری می کنم تغییرات برای کل اعضا اعمال میشه.کد رو تو لینک زیر گذاشتم. ممنون میشم راهنماییم کنید.
http://molkaneh.com/f/b.rar
سلام
به نظر ساختار جداول دیتابیس شما به درستی تعریف نشده، همیشه در هنگام ساخت جداول یک ستون ID با ویژگی AUTO_INCREMENT داشته باشید تا هر ردیف اطلاعات، شماره منحصر به فرد خود را داشته باشد یا اینکه یک ستون به صورت Foreign Key (یعنی ستونی که مقدار آن در واقع شماره ID ستونی از جدول دیگر است) تعریف کنید، نکته دیگر اینکه کدهای PHP در فایل html قابل اجرا نیستند (مگر اینکه تنظیمات سرور خود را تغییر دهید).
به نظر ساختار جداول دیتابیس شما به درستی تعریف نشده، همیشه در هنگام ساخت جداول یک ستون ID با ویژگی AUTO_INCREMENT داشته باشید تا هر ردیف اطلاعات، شماره منحصر به فرد خود را داشته باشد یا اینکه یک ستون به صورت Foreign Key (یعنی ستونی که مقدار آن در واقع شماره ID ستونی از جدول دیگر است) تعریف کنید، نکته دیگر اینکه کدهای PHP در فایل html قابل اجرا نیستند (مگر اینکه تنظیمات سرور خود را تغییر دهید).
علی
۲۰:۳۴ ۱۳۹۳/۱۱/۱۱
ببخشید من دستوری که بهتون دادم انجام دادم هم ستون مربوط به `username` تغییر می کنه هم امتیاز چه کارش کنم که فقط امتیاز یوزر انتخابی تغییر کنه آیا در دستور بالا میشه از set و where استفاده کرد آیا راهکاری دارید برای این کار از چه دستوری استفاده کنم؟
مشخص نیست کدهای شما مربوط به چه برنامه ای است، در واقع اینها دستورات عمومی نیستند، بلکه متدهایی هستند که برنامه نویس نوشته است، لذا به آسانی قابل تغییر نیستند مگر اینکه کل برنامه بررسی و مهندسی معکوس شود! در هر صورت اگر امکان بررسی برایتان مقدور نیست، تنها راه تست حالت های مختلف است (به نظر آرگومان سوم همان نقش WHERE را بازی می کند)!
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.