PDA

View Full Version : مبتدی: مشكل در حذف اطلاعات ديتابيس



mirzajavad
چهارشنبه 17 شهریور 1389, 22:50 عصر
سلام
راستش من دارم يك لينك باكس درست ميكنم
تا جاهايي رو به كمك دوستان درست كردم
ولي الان ميخواهم هر كار بتونه از پنل مديريتيش لينك خودشو حذف كنه
بعضي جاها خودنوم اين روش رو گفته بودن


<a href="delete.php?linkid=21">حذف اين لينك</a>

ولي مشكل اينه كه من نميتونم اينو پياده كنم

يك كوئري هم براي حذف لينك نوشتم ولي در بخش ارسال دستور از طريق لينك به اين كوئري در قسمت html مشكل دارم
كد رو ميذارم دوستان راهنمايي كنيد يا روي كد پياده كنيد



<?php
session_start();
include('config/config.php');
include('config/Template.php');
if(isset($_SESSION['username']))
{
$username=$_SESSION['username'];
}
$MyTpl = new Template();
$MyTpl -> load_file( 'temp/user.htm' );
// get link from user
$res = mysql_query("select * from `sendlink` where username='$username'");
while($link = mysql_fetch_array($res)){
$MyTpl->add_block('Links',array(
'link_title'=>$link['link_title'],
'link_url'=>$link['link_url'],
'username'=>$link['username'],
));
}

$del="DELETE FROM `sendlink` where $link[0] AND username='$username' LIMIT 1 ";
$MyTpl -> print_template();



?>

sama01
چهارشنبه 17 شهریور 1389, 23:11 عصر
$MyTpl->add_block('Links',array(
'link_title'=>$link['link_title'],
'link_url'=>$link['link_url'],
'username'=>$link['username'],
));
ببینید.
شما دارید از یک سیستم template استفاده می‌کنید که طبق تعریفی خاص، می‌آد و لینک می‌سازه.
باید ببینید نحوه‌ی عمل این سیستم چگونه است.
یعنی $MyTpl->add_block را بررسی کنید و ببیند که چگونه کار می‌کند و شما چگونه می‌توانید لینک مورد نظر خودتون رو بهش بفهمونید.

mirzajavad
چهارشنبه 17 شهریور 1389, 23:16 عصر
كار با اين سيستم رو بلد هستم
يعني با آموزشي كه داده شده بود ياد گرفتم
ولي اصلآ نميتونم در بخش ارسال آيدي لينك به فايل php براي حذف چگونه بايد عمل كرد
در اينجا نمونه كلاس تمپلت آمده است http://forum.rightclick.ir/topic-847.html

Hell Lord
چهارشنبه 17 شهریور 1389, 23:47 عصر
:متفکر:

یعنی نمیتونید بعد از حذف اون لینک ، صفحه را نمایش دهید؟
--------------------
شما که نوشتیدش که :
delete.php?linkid=21
توسط یک تابع $_GET میتونید ای دی را بگیرید :

$del="DELETE FROM `sendlink` where link_id=\"$_GET['linkid']\" ";

sama01
چهارشنبه 17 شهریور 1389, 23:55 عصر
البته توجه داشته باشید که این منطق کاره.
حتما موارد امنیتی را هم در نظر بگیرید. هرگز یک متغیر را مستقیم وارد query نکنید.

mirzajavad
پنج شنبه 18 شهریور 1389, 00:02 صبح
راستش درست متوجه نشدم
ميشه كمي عملي تر بگين
اينجا شما گفتين حذف كن از جدول sendlink در جايي كه آيدي لينك برابر لينك ارسال شده از طريق دستور get باشد
اينو متوجه شدم
ولي نتونستم پيادش كنم
اون كلاسي هم كه لينكش رو دادم ممنون ميشم اگر كسي بررسي كند

sama01
پنج شنبه 18 شهریور 1389, 00:26 صبح
خوب شما چه کار کرده‌اید که نشده؟
اصولا شما اگر این کدها رو متوجه می‌شید که دیگه نباید مشکلی وجود داشته باشه.

mirzajavad
پنج شنبه 18 شهریور 1389, 00:53 صبح
خوب من از اون كلاس تمپلت استفاده كرده
به اين روش



<!-- BEGIN BLOCK Links -->
<a target="_blank" href="{link_url}">{link_title}</a></font>
<!-- END BLOCK Links -->


بعدش اومدم توي اون بخش افزودن بلوك در فايل php از $link استفاده كردم كه قبلش در يك حلقه قرار گرفته است با اين ترتيب در بخش صفحه كاربر لينكها قرار ميگيره
حالا بايد از چه طريق دكمه حذف لينك را قرار بدم
اميدوارم متوجه منظورم شده باشين

sama01
پنج شنبه 18 شهریور 1389, 01:35 صبح
ببین
شما با این کار، داری یه لینک می‌سازی که کاربر را به یک صفحه هدایت می‌کنه و داخل اون صفحه، فایل شما باید پاک بشه.
دکمه‌ی چی؟ این لینک خودش یه جور دکمه است دیگه.

mirzajavad
پنج شنبه 18 شهریور 1389, 02:02 صبح
راستش متوجه نميشم
اگر ميتونستم مينوشتمش
اگر امكانش هست مستقيم بگين چون من الان دو روزه كل نت رو گشتم ولي نتونستم بفهمم
البته شايد اشكال كار استفاده از كلاس تمپلت هم باشه كه كار منو پيچيده ميكنه ولي اگر راه و روشش رو براي حذف يك لينك ياد بگيرم ديگه هيچ كجا مشكلي نخواهم داشت

Hell Lord
پنج شنبه 18 شهریور 1389, 02:25 صبح
فکر میکنم بدون مطالعه میخواهید یک تکه کد را بنویسید.
اول با $_GET و $_POST اشنا شوید ، بعد با query در php . تمام مشکل در همین 2 مبحث خلاصه میشود که باید بدانید!

mirzajavad
پنج شنبه 18 شهریور 1389, 02:40 صبح
فكر كنم من نتونستم منظور رو برسونم
اينايي رو كه گفتين بلدم
من نميدونم چطوري بايد لينك حذف رو با اون لينك تطابق بدم
الان شما يك لينك داري و ميخواي اونو حذف كني چي در مقابلش ميذاري
خوب يك كلمه مينويسي به نام حذف بعدش چطوري بايد با اون لينك در ارتباط باشه
بذارمشون داخل يك فرم ؟
چون شما گفتي بايد از طريق GET يا POST ارسالشون كنم
ميشه مثال بزنين يا روي كدهاي خودم پيادش مني

sama01
پنج شنبه 18 شهریور 1389, 02:48 صبح
اگر امكانش هست مستقيم بگين چون من الان دو روزه كل نت رو گشتم ولي نتونستم بفهمم
به نظر شما اگر من را ببرند در دل نیروگاه هسته‌ای بوشهر، همه چیز را هم به من نشان بدهند، می‌توانم خودم یک نیروگاه اتمی جدید بسازم؟
مسلما نه.
چرا؟
زیرا دانش، با داشتن اطلاعات متفاوته.
شما برای یک بچه‌ی اول دبستانی، اگر بیای تمام کتابهای انتگرال رو در اختیارش بذاری هم نمی‌تونه یک انتگرال ساده بگیره. چون درسته که همه‌ی اطلاعات در اختیارش هست؛ ولی مقدمات را بلد نیست.

مثال‌ها کمی اغراق‌آمیز بودند که مساله به‌تر روشن بشه.

شما اگر مسائل پایه‌ای php را ندانید، به‌ترین کد دنیا را هم جلوی شما بگذارند، چیزی بیش از یک سری نوشته و کد بی معنی برای شما چیزی دیگری نخواهد داشت.

شما الآن مشکل الگوریتم دارید. یعنی نمی‌دانید باید این مساله چگونه حل شود.
شما دارید برنامه نویسی می‌کنید. برنامه‌نویسی یعنی شما باید به کامپوتر بگید که چگونه فلان کار را انجام بدهد.

همان‌طور Hell Lord (http://www.barnamenevis.org/forum/member.php?u=139576) اشاره کرد، مسائل فنی گفته شده. شما هم به جای این سوالات، کمی دایره‌ی اطلاعات خود از مباحث اولیه‌ی php و به طوری کلی طراحی وب گسترش دهید.

امیدوارم سمءتفاهمی پیش‌نیاد. به هر حال باید بدانید مشکل‌تان کجا است. اگر هم با خودتان رو راست نباشید، فقط وقت تلف خواهید کرد.

mirzajavad
پنج شنبه 18 شهریور 1389, 03:02 صبح
نمي دونم شايد اين چنين كه شما ميگن باشه
منظور شما رو از مسائل پايه متوجه نشدم
مشكل من اين هستش كه نتونستم سوالم رو درست بپرسم و شما هم متوجه منظور من نشدين
از همگيتون ممنونم
با تشكر

sama01
پنج شنبه 18 شهریور 1389, 03:23 صبح
دوست عزیز؛
راه حل همانی است که خودتان در پست اول به آن اشاره کردید:

<a href="delete.php?linkid=21">حذف اين لينك</a>

من یه سوال دارم.
آیا شما مفهوم این خط کد را متوجه می‌شوید؟

AbiriAmir
پنج شنبه 18 شهریور 1389, 15:29 عصر
آقا مساله رو بزارین به عهده من
من با این کلاس تمپلیت آشنا هستم
پس...
شروع میکنیم:

ببینید، شما برای این که بتونید یک رکورد رو حذف کنید نیاز به یک کوئری دارید که اجرا بشه که همونه که نوشتید
اما باید بدونید کی اجراش کنید مثلا فرض کنید میخوایم در این کلاس تمپلیت لیست کاربران را نمایش دهیم و هر کدام رو که خواستیم حذف کنیم
برای این کار 3 فایل نیاز داریم:
1- فایل قالب:


<html>
<body>
<table>
<tr>
<td> نام </td>
<td> نام خانوادگی </td>
</tr>
<!-- BEGIN BLOCK list -->
<tr>
<td> {name} </td>
<td> {lname} </td>
<td> <a href="delete.php?id={id}">حذف</a> </td>
</tr>
<!-- END BLOCK list -->
</table>
</body>
</html>
خب تا این جا شما یک قالب دارین که به ازای هر نفر، یک لینک حذف میاد جلوشون و 3 تا متغیر name، lname و id
درسته؟

خب حالا فایل پی اچ پی که اطلاعات رو نشون میده:


<?php
session_start();
include('config/config.php');
include('config/Template.php');
if(isset($_SESSION['username']))
{
$username=$_SESSION['username'];
}
$MyTpl = new Template();
$MyTpl -> load_file( 'temp/user.htm' );
// get link from user
$res = mysql_query("select * from `sendlink` where username='$username'");
while($link = mysql_fetch_array($res)){
$MyTpl->add_block('list',array(
'id'=>$link['id'],
'name'=>$link['name'],
'lname'=>$link['lname'],
));
}


$MyTpl -> print_template();



?>
و فایل آخری هم برای حذف رکورد:


<?php
session_start();
include('config/config.php');
include('config/Template.php');
if(isset($_SESSION['username']))
{
$username=$_SESSION['username'];
}
$id = @$_GET['id'];
@mysql_query("DELETE FROM `sendlink` where id='$id' LIMIT 0,1 ");
?>
امیدوارم مطلب مفید واقع شده باشه

----------------------------------------------
اگه مشکل حل شده تشکر فراموش نشه.........
:لبخند: :لبخند: :لبخند: :لبخند: :لبخند: :لبخند: :لبخند: :لبخند: :لبخند: :لبخند: :لبخند: :لبخند:

mirzajavad
پنج شنبه 18 شهریور 1389, 16:23 عصر
آقاي AmirBeginner (http://barnamenevis.org/forum/member.php?u=113758) واقعآ ممنون
نميدونم چطوري از شما تشكر كنم
از ديگر دوستان هم كه منو همراهي كردن كمال تشكر رو دارم
فقط يك مشكل بود اونم در كوئري limit 0,1 چون اين به منظور اين بودش كه فقط يك لينك ميتونه حذف بشه
هر كار ميكردم جواب نميداد ولي صفر رو حذف كردم درست شد
فقط ديگه مونده UPDATE رو ياد بگيرم
چون INSERT , SELECT , DELETE رو ياد گرفتم اون بخش رو هم ياد بگيرم فكر كنم بخش كوئري ها تموم شه
چون اصلش همين 4 حالت هستش

فقط ميشه بگين كه @ قبل $_GET و كوئري چه كاري انجام ميده ؟

AbiriAmir
پنج شنبه 18 شهریور 1389, 18:28 عصر
آقاي AmirBeginner (http://barnamenevis.org/forum/member.php?u=113758) واقعآ ممنون
نميدونم چطوري از شما تشكر كنم
از ديگر دوستان هم كه منو همراهي كردن كمال تشكر رو دارم
فقط يك مشكل بود اونم در كوئري limit 0,1 چون اين به منظور اين بودش كه فقط يك لينك ميتونه حذف بشه
هر كار ميكردم جواب نميداد ولي صفر رو حذف كردم درست شد
فقط ديگه مونده UPDATE رو ياد بگيرم
چون INSERT , SELECT , DELETE رو ياد گرفتم اون بخش رو هم ياد بگيرم فكر كنم بخش كوئري ها تموم شه
چون اصلش همين 4 حالت هستش

فقط ميشه بگين كه @ قبل $_GET و كوئري چه كاري انجام ميده ؟

خواهش میکنم دوست عزیز
انجمن همینش خوبه دیگه
یه روزم من یه سوال میکنم شما جواب میدین
راجع به update هم سرچ کنید قبلا یک مقاله در مورد دستورات اس کیو ال رو همین سایت گذاشته بودم
البته فکر کنم تو بخش اس کیو ال سرور یا دلفی بود
البته اون موقع اسمم AbiriAmir بود
در هر صورت سرچ کنید حتما پیدا میکنید
حالا یا مقاله منو یا صحبت های اساتید انجمن رو

و راجع به علامت @ باید بگم که این علامت جلوی نوشتن ارور رو میگیره یعنی اگر برنامه با ارور مواجه شد ارور رو نشون نمیده که البته بهتره تو پروژه نهایی از این استفاده کنید و در طول کار نباشه تا ارورهاشو متوجه بشین
آخه ارورها واسه هکرها خیلی کاربرد دارن!!!