سوال در مورد ویرایش اطّلاعات در PHP
#1
سلام دوستان
یک سوال برام پیش امده من می خوام یک textbox تو برنامه بزارم و بعد وصلش کنم به یه لینک php حالا اینا میدونم که چجور یه چیز را به لینک php بفرستم ولی مشکل اینجاست که هر دفع که می فرستم به فرستاده های قبلی اضافه میشه مثلا: دفعه اول عدد 225 را می فرستم حالا دفعه بعد مثلا 300 میفرستم و جلوی همون اضافه میشه ولی می خوام وقتی عدد 300 را فرستادم جایگزین عدد قبلی بشه یعنی 225 بشه عدد جدید ما (ویرایش اطلاعات php)
آیا به کد جدیدی نیاز دارم؟
  پاسخ


 سپاس شده توسط:
#2
سلام. اگه اطّلاعات رو به وسیله‌ی PHP در دیتابیس ذخیره می‌کنید که فکر کنم همین‌طوره، به این صورت عمل کنید، اگر هم در یک فایل متنی ذخیره می‌کنید بگید تا توضیح بدم.

ساختار اصلی آپدیت دیتابیس به این صورت است:
کد:
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
توضیح:
table_name: نام جدولی که می‌خواهید اطّلاعاتش را در دیتابیس تغییر دهید.
در خطّ دوم می‌گیم، مقدارها به چی تغییر کنند، مثلاً می‌گیم تمام مقادیر موجود ستون column1 رو برابر value قرار بده.
در خطّ سوم شرط می‌ذاریم تا فقط اطّلاعات موجود در اون ردیفی ویرایش بشوند که در اون ردیف مقدار موجود در ستون some_column برابر some_value باشه.

بعد مثلاً کد PHP به این شکل در می‌آید:
کد:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
   die("Connection failed: " . mysqli_connect_error());
}

$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";

if (mysqli_query($conn, $sql)) {
   echo "Record updated successfully";
} else {
   echo "Error updating record: " . mysqli_error($conn);
}

mysqli_close($conn);
?>
معجزات طبیعت هایی هستند که با آن‌ها مأنوس نشده‌ایم
و طبیعت معجزه‌ایست که با آن انس گرفته‌ایم
علی صفایی حائری
  پاسخ


 سپاس شده توسط: mostafanastary
#3
ممنون ولی اینجور من یاد نمیگیرم مفهومش برام خیلی سخته و نمیدونم با این کد چه استفاده ای کنیم
  پاسخ


 سپاس شده توسط:
#4
فکر می‌کنم شما اطّلاعاتی در مورد PHP و SQL ندارید و فقط همون آموزش ایجاد جدول برترین امتیازات رو دیدید. اگه این طوره بذارید اوّل یکم در مورد SQL بگیم تا متوجّه بشید منظورمون از جدول و ستون و ردیف چیه.

در اون آموزش، ما ابتدا دیتابیس (پایگاه داده) ساختیم و از پنل هاست‌مون وارد phpMyAdmin شدیم. وقتی از طریق phpMyAdmin وارد دیتابیس بشید، با چیزی مثل تصویر زیر طرف می‌شوید، همون طور که در عکس می‌بینید، زیر Table تمام جدول‌های دیتابیس ما لیست شده‌اند، در عکس زیر فقط یک جدول به اسم Game_scores داریم. حالا برای این‌که بفهمیم چرا به اینا می‌گیم جدول، کافیه رو اسم جدول (در عکس زیر Game_scores) کلیک کنیم.

[تصویر:  table_list.png]

در صفحه‌ی بعد می‌بینیم که واقعاً با یک جدول طرف هستیم. همون طور که می‌بینید جدول زیر دارای سه ستون هست به اسم‌های id و name و score، این جدول ۴ ردیف هم داره.

[تصویر:  table.png]

همون طور که در عکس می‌بینید، برترین امتیازات در این جدول ذخیره شده‌اند، امتیازها در ستون score قرار دارند و اسم بازی‌کن‌ها در ستون name قرار داره.

حالا برای این‌که امتیاز mojtaba رو از 455 به 700 تغییر بدیم از ساختار زیر استفاده می‌کنیم:
کد:
UPDATE Game_scores
SET score=700
WHERE name='mojtaba'
یعنی در جدولی که اسمش Game_scores هست (در بالا عکسش رو هم دیدیم) برو توی ردیفی که مقدار موجود در ستون name در اون ردیف mojtaba هست، بعد در اون ردیف مقدار موجود در ستون score رو برابر 700 قرار بده. همین.
معجزات طبیعت هایی هستند که با آن‌ها مأنوس نشده‌ایم
و طبیعت معجزه‌ایست که با آن انس گرفته‌ایم
علی صفایی حائری
  پاسخ


 سپاس شده توسط: mostafanastary ، wowxpria ، kamran_cn
#5
الان منظور شما را گرفتم ولی من می خوام همون عدد را 700 را مستقیم بفرستم با textbox به دیتابیس با شئ Ajax نه اینکه وارد هاستم بشم و اون عدد 400 را تغییر بدم.
  پاسخ


 سپاس شده توسط:
#6
ما هم اگه می‌خواستیم از طریق خود هاست این کارو بکنیم این همه به خودمون زحمت نمی‌دادیم، همون اوّل رو Edit کنارش کلیک می‌کردیم و ویرایشش می‌کردیم.

حالا برای خلاصه‌تر شدن در PHP، کلّ اون کد بالا (در اصل کد SQL) رو که تحلیل کردیمش در یک خط، پشت سر هم می‌نویسیم:

کد:
UPDATE Game_scores SET score=700 WHERE name='mojtaba'

اگه در همون فایل‌های برترین امتیازات، محتویات فایل savescores.php رو نگاه کنید، به این صورت هست (اگه یادتون باشه کار این فایل php ارسال امتیازات به دیتابیس بود):

کد:
<?php
$db = "gigfa_15515776_high_score";//Your database name
$dbu = "gigfa_15515776";//Your database username
$dbp = "123456";//Your database users password
$host = "sql212.gigfa.com";//MySQL server - usually localhost
$dblink = mysql_connect($host,$dbu,$dbp);
$seldb = mysql_select_db($db);
If(isset($_GET['name']) && isset($_GET['score'])){
    //Lightly sanitize the GETs To prevent SQL injections and possible XSS attacks
    $name = strip_tags(mysql_real_escape_string($_GET['name']));
    $score = strip_tags(mysql_real_escape_string($_GET['score']));
    $sql = mysql_query("INSERT INTO `$db`.`Game_scores` (`id`,`name`,`score`) VALUES ('','$name','$score');");
    If($sql){
         //The query returned TRUE - now do whatever you like here.
         echo 'Your score was saved. Congrats!';
    }Else{
         //The query returned FALSE - you might want To put some sort of error reporting here…
         echo 'There was a problem saving your score. Please try again later.';
    }
}Else{
    echo 'Your name or score wasnt passed in the request. Make sure you add ?name=NAME_HERE&score=1337 To the tags.';
}
mysql_close($dblink);//Close off the MySQL connection To save resources.
?>

دربین کدهای بالا این خط رو پیدا کنید:

کد:
$sql = mysql_query("INSERT INTO `$db`.`Game_scores` (`id`,`name`,`score`) VALUES ('','$name','$score');");

همون طور که می‌بینید، داخل پرانتز یک کد SQL دیگه‌ست که برای اضافه کردن یک ردیف دیگه به جدول (ثبت امتیاز) استفاده می‌شه. برای آپدیت شدن، فقط کافیه اون کد رو با کد SQL جدیدمون جایگزین کنیم، یعنی این خط رو پاک کنیم و به جاش بنویسیم:

کد:
$sql = mysql_query("UPDATE Game_scores SET score=700 WHERE name='mojtaba'");

ولی توجّه داشته‌باشید در این صورت ما گفتیم که همیشه امتیاز mojtaba رو 700 کنه، یعنی mojtaba و 700 هر دو باید متغیّر باشند، نه اسم و عددی ثابت. در PHP همیشه اسم متغیّرها با علامت دلار ($) شروع می‌شه، در این کد PHP مقدار متغیّرهای name$ و score$ به ترتیب اسم بازی‌کن و امتیاز رو نشون می‌دن (این مقدارها دقیقاً قبل از خطّی که این کد SQL در آن قرار داره داخل این متغیّرها ریخته می‌شود)، بنابراین به جای mojtaba که نشان‌دهنده‌ی اسم بازی‌کن هست می‌نویسیم name$ و به جای 700 که نماینده‌ی امتیاز هست می‌نویسیم score$ . یعنی اون خط رو به این صورت در می‌آوریم:

کد:
$sql = mysql_query("UPDATE Game_scores SET score='$score' WHERE name='$name'");

حالا می‌تونید این فایل PHP جدید رو با یه اسم دیگه ذخیره کنید و برای آپدیت اطّلاعات ازش استفاده کنید.
معجزات طبیعت هایی هستند که با آن‌ها مأنوس نشده‌ایم
و طبیعت معجزه‌ایست که با آن انس گرفته‌ایم
علی صفایی حائری
  پاسخ


 سپاس شده توسط: wowxpria ، kamran_cn


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
Information پرداخت درون برنامه مایکت کوردوا ya mahdi 0 230 1404/1/17، 05:43 عصر
آخرین ارسال: ya mahdi
  نحوه خروجی اندروید کوردوا ya mahdi 0 177 1404/1/11، 04:06 عصر
آخرین ارسال: ya mahdi
Wink حل شده مقادير لازم در environment variable ᔕinaᗪehghani 24 11,596 1403/10/23، 12:10 صبح
آخرین ارسال: Tggi
  تپسل .....فروشگاه Hamidreza 3 1,932 1403/10/22، 11:57 عصر
آخرین ارسال: Tggi
  خروجی اندروید با Intel xdk ya mahdi 0 130 1403/8/25، 02:08 عصر
آخرین ارسال: ya mahdi

پرش به انجمن: