سلام
چطور می شه برای یک دکمه (button) کد نوشت که کاری رو انجام بده. البته این دکمه از نوع submit نیست.
Printable View
سلام
چطور می شه برای یک دکمه (button) کد نوشت که کاری رو انجام بده. البته این دکمه از نوع submit نیست.
این کار مربوط به Php نمیشه! باید با جاوا اسکرپت انجام بشه
باید بری تو بخش طراحی صفحات استاتیک اونجا پست بزنی البته اونجا هم باید بگی چکار میخوای با این دکمه انجام بدی تا بقیه بتونن کمک کنند چون خیلی کارا میشه با یک دکمه انجام داد!
ببینید من می خوام با زدن یک دکمه، یه رکورد از یک دیتابیس حذف بشه.
شما میتونی با ajax این کار و انجام بدی کد آمادش هست اگه بگردی (google(
اگه پیدا نکردین بگین من یه sample بذارم خدتون تغییرش بدین.
شما اين كار رو با دكمه submit هم مي توني انجام بدي.
ببینید اینجا دیگه مسئله دکمه نیست. خود دکمه که نمیتونه یه رکورد از دیتابیسو حذف کنه
دکمه میتونه یه صفحه رو اجرا کنه که کار اون حذف رکورد باشه
این کار رو میشه با یه لینک هم انجام داد یا با یه دکمه سابمیت یا با ریدایرکت کردن کاربر ولی اگه شما می خوای با دکمه انجام بدی باید با جاوا اسکرپت پارامترهای مربوط به رکوردی رو که باید حذف بشه به دکمه بدی تا رکورد مورد نظر مشخص بشه بقیه کار رو باید اسکرپت PHP انجام بده
همونطور که دوستمون گفت با Ajax هم میشه این کار رو انجام داد ولی تو اصل قضیه تفاوتی نداره
برای نمونه به این کد نگاه کن:
[html]
<input type="button" value="somthing" onclivk="window.location='SomeScript.php?recordID= 123'">
[/html]
با کلیک کردن بر روی این دکمه آی دی رکوردی که باید حذف بشه یعنی 123 به اسکرپت مربوط به حذف رکورد ارسال میشه.
البته این فقط یه مثال ساده هست و شاید در عمل هیچ وقت به این سادگی انجام نشه و مخلفات دیگه ای هم داشته باشه
ممنون از پاسختون ولی ببینید :
این کد منه :
اما وقتی صفحه بالا می یاد، تمام رکورد ها رو پاک می کنه. جای اون روکوردی دکمه مقابلش زده شده.کد:<button style="font-family:tahoma" onclick="<?php mysql_query("DELETE FROM test1_table WHERE id='$record['id']'") ?>">Delete</button>
چه کنم؟
سحر گرامی:
ممنون می شم اگه شما هم یه نمونه لطف کنید.
خوب مشخصه که وقتی صفحه باز بشه رکورد پاک میشه
PHP که براش تفاوتی نمیکنه دستور مربوط به حذف رکورد تو کد یه دکمه نوشته شده باشه یا تو یه صفحه جدا!
شما باید کد مربوط به حذف رکورد رو تو یه صفحه جدا بنویسید و دکمه رو طوری طراحی کنید که با کلیک کردن بر روی اون صفحه مربوطه باز بشه تا رکورد رو حذف کنه بعد هم میتونید با استفاده از تابع header کاربر رو به صفحه قبلیش برگردونید.
خوب اول اینکه راجع به کدی که نوشتید onclick یه event طرف client هست ,و php کلا یه زبون serverside پس شما نمیتونید یه همچین کدی داشته باشین اصلا.
و حالا ajax که تلفیقی از serverside و clientside هستش.
نمیدونم تا حالا کار کردین یا نه اگه کار نکردین امیدوارم گیج نشین.
من نمیدونم چه جوی باید یه فایل اینجا attach کنم؟؟؟
ببینید:
table من اینه :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
و کد من هم اینه:
چی کار کنم که با زدن کلید جلوی هر رکورد اون رکورد فقط حذف شه...کد:<?php
$server = "localhost";
$dbname = "test";
$user = "root";
$pass = "";
$link = mysql_connect($server, $user, $pass);
mysql_select_db($dbname, $link);
?>
<table border="1" cellpadding="0" cellspacing="0" class="">
<?php
$dbre = mysql_query("select * from test1", $link);
while($record = mysql_fetch_assoc($dbre))
{
?>
<tr>
<td width="30" align="center" ><?php print($record["id"]) ?> </td>
<td width="100" align="center" ><?php print($record["name"])?> </td>
<td width="100" align="center"><?php print($record["family"]) ?></td>
<td width="100" align="center">
<button style="font-family:tahoma, Arial, Helvetica, sans-serif">حذف</button>
</td>
</tr>
<?php
}
mysql_close();
?>
</table>
کلافه شدم از بس انگولکش کردم...
خیلی از توجهتون ممنونم
@};-
خوب فکر میکنم این کد کارتونو راه بندازه:
[php]
<?php
$server = "localhost";
$dbname = "test";
$user = "root";
$pass = "";
$table = "test1";
$link = mysql_connect($server, $user, $pass);
$db = mysql_select_db($dbname, $link);
if (!empty($_GET['recordId']))
{
$id = (int)$_GET['recordId'];
mysql_query("DELETE FROM `$table` WHERE id = $id LIMIT 1;") or die(mysql_error());
header("location: ".$_SERVER['PHP_SELF']);
exit;
}
?>
<table border="1" cellpadding="0" cellspacing="0" class="">
<?php
$dbre = mysql_query("SELECT * FROM `$table` ORDER BY id ASC;");
while ($record = mysql_fetch_assoc($dbre))
{
?>
<tr>
<td width="30" align="center" ><?php echo $record["id"]; ?> </td>
<td width="100" align="center" ><?php echo $record["name"]; ?> </td>
<td width="100" align="center"><?php echo $record["family"]; ?></td>
<td width="100" align="center">
<button style="font-family:tahoma, Arial, Helvetica, sans-serif" onclick="window.location='<?php echo $_SERVER['PHP_SELF']; ?>?recordId=<?php echo $record["id"]; ?>'">حذف</button>
</td>
</tr>
<?php
}
mysql_close();
?>
</table>
[/php]
این کد از جاوا اسکرپت استفاده میکنه پس اگه جاوا اسکرپت تو مرورگر غیرفعال باشه کار نمیکنه
در ضمن اگه برای یه کار حرفه ای بخوای استفاده کنی باید بیشتر روش کار کنی
خیلی ممنونم.
اگر تشکرم دیر شد حمل بر بی ادبی نباشه.
دوسه روز مسافرت بودم جاتون خالی شمال
ببخشید و سپاسگذارم
سلام
دستوراتی که نوشتید به درستی کار می کنه
اما وقتی حذف می کنه و دوباره می خواد بارگذاری کنه، این خطا رو می ده:
[php]Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\php\vb.php:9) in C:\wamp\www\php\vb.php on line 25[/php]
خط 25 اینه :
[php] header("location: ".$_SERVER['PHP_SELF']);[/php]
قبل از کدی که این خط دستور توشه نباید هیچ کد دیگه ای یا حتی space باشه . شما کد php شامل این خط کد و منتقل کن درست اول صفحه . اول اول . حتما درست میشه .
درسته قبل از این دستور نباید هیچ چیزی به مرورگر فرستاده بشه.
اگه شما خودتون چیزی اضافه کردید باید اونا رو حذف کنید یا طوری جابه جا کنید که با این دستور تداخلی پیدا نکنند. در غیر این صورت ممکنه اشکال از ذخیره کردن BOM در هنگام مشخص کردن انکودینگ صفحه باشه. میتونید صفحه رو با یه هگز ادیتور باز کنید و کاراکترهای اضافی اول صفحه رو که قبل از <?php اومدن حذف کنید مشکل حل میشه
متوجه نمی شم من کجا رو باید پاک کنم؟؟؟
خوب قبل از این خط دستور بقیه چیزهایی که گفتین وجود داره دیگه:
[php]<?php
$server = "localhost";
$dbname = "test";
$user = "root";
$pass = "";
$table = "test1";
$link = mysql_connect($server, $user, $pass);
$db = mysql_select_db($dbname, $link);
if (!empty($_GET['recordId']))
{
$id = (int)$_GET['recordId'];
mysql_query("DELETE FROM `$table` WHERE id = $id LIMIT 1;") or die(mysql_error());
header("location: ".$_SERVER['PHP_SELF']);
exit;
}
?>[/php]
حالا من کجا رو باید پاک کنم؟؟؟
--------
وقتی صفحه رو ذخیره میکنی باید به صورت UTF-8 without BOM ذخیره بشه
حالا اگه با BOM ذخیره بشه چند کاراکتر به اول متن اضافه میشه که البته تو ویرایشگرهای متن معمولی قابل مشاهده نیست.
برای حذف این کاراکترها همونطور که گفتم میتونید از یه هگز ادیتور استفاده کنید یا اصلاً یه فایل جدید بدون BOM ایجاد کنید و کدهای خودتنو تو اون کپی کنید
خیلی ازتون ممنونم
اما اصلا نفهمیدم چی می گین...
بازم سپاسگذارم
نمی خوام به خاطر خنگی من اذیت بشین
یا حق