PDA

View Full Version : این کد چکار میکنه ؟



ali_ahr7
پنج شنبه 16 شهریور 1391, 15:02 عصر
سلام لطفا بگید این کد چکار میکنه ؟

متشکرم




echo "<div><a href=\"display.php?id=$posts[ID]\">" . $posts['Post_Position'] . "</a></div>";



صادقانه بگم اصلا جستجو نکردم چون نمیدونستم این چی هست که اصلا بخوام دربارش جستجو کنم.
متشکر

AbiriAmir
پنج شنبه 16 شهریور 1391, 16:41 عصر
توی کد بالا $posts یک آرایه هست (که میتونه از هرجایی اومده باشه. مثلا دیتابیس)

فرض میکنیم مقدار $posts['Post_Position'] عدد 12345 باشه

اونوقت میاد مقدار زیر رو چاپ میکنه:

<div><a href="display.php?id=$posts[ID]">12345</a></div>

که شامل 1 لینک به نام 12345 به صفحه ( display.php?id=$posts[ID] ) هست

میتونید کد بالا (کد HTML) رو توی 1 فایل html بنویسید و خروجیش رو خودتون ببینید

ali_ahr7
پنج شنبه 16 شهریور 1391, 19:07 عصر
حالا چطور امکان داره که بوسیله یه دکمه مقادیری رو به یه صفحه فرستاد در صورتی که اون دکمه حالت داینامیک داشته باشه و با حلقه for تولید شده باشه.

به عنوان مثال یک دکمه رو به وسیله حلقه for در یک جدول قرار بدیم و وظیفه اون دکمه این باشه که وقتی دکمه فشار داده میشه مقادیری از همون ردیف به صفحه دیگه ای مثلا (result.php) ارسال بشه.


متشکرم

Yuness Mehdian
پنج شنبه 16 شهریور 1391, 23:02 عصر
فرقی نمیکنه که یه دکمه تو یه حلقه تو php تولید بشه یا تو یه فایل html معمولی باشه مهم اینه که یه وظیفه یا همون event براش تعریف کنیم . اگه دکمه تو یه فرم باشه و خصوصیت action اکشن فرم برابر result.php باشه دکمه رو باید از نوع submit تعریف کنیم . چون شما برای هر سطر یه دکمه قرار میدین من پیشنهاد میکنم برای هر سطر یه فرم قرار بدین که خصوصیت action همه فرم ها برابر result.php باشه و تو هر فرم فیلد کلید اون سطر رو به صورت hidden قرار بدین اینطوری رو هر دکمه ای از هر سطری که کلیک کنید مقدار hidden ی که برابر فیلد کلید اون سطر هست به result.php ارسال میشه یه همچین چیزی :


<table>
<?php for($i=0; $i<=10; $i++) : ?>
<tr>
<td><!-- custom value/input element/any html elemen 1 --></td>
<td><!-- custom value/input element/any html elemen 2 --></td>
<td><!-- custom value/input element/any html elemen 3 --></td>
<td>
<form method="get" action="result.php">
<input type="hidden" name="id" value="<?php /* print key of this row here */ ?>" />
<input type="submit" name="row_Key" value="send" />
</form>
</td>
</tr>
<?php endfor; ?>
</table>



و سمت سرور هم به راحتی فیلد کلید ارسال شده رو می گیرید و تو جدول مربوطه جستجو می کنید و هر بلایی بخواین سر اون رکورد میارید مثلا یه همچین کدی برای حذف خوبه :





<?php
if (!isset($_GET["row_Key"]))
exit();

$mysqli = new mysqli("host", "username","pass", "dbname");
$key = $_GET["row_Key"];
$resul = $mysqli->query("delete from table_Name where key_Field=$key");
$mysqli->close();
?>


اگه بخواین این کار رو به صورت ajax انجام بدین مراحل یه کم فرق میکنه
موفق باشید

ali_ahr7
جمعه 17 شهریور 1391, 09:55 صبح
واقعا پاسخ خوب و کاملی ارائه دادید فقط یه سوال باقی می مونه : با چه کدی میشه مثلا سلول اول از ردیفی که کاربر روی دکمه کلیک کرده رو به صفحه مقصد ارسال نمود؟

در واقع اگه زحمتی نیست درباره این کد توضیح بدید.قکر کنم توضیح شما جواب این سوال من باشه.



<input type="hidden" name="id" value="<?php /* print key of this row here */ ?>" />





من هر چی سرچ کردم کسی جواب این یکی رو نمیدونست.

Yuness Mehdian
جمعه 17 شهریور 1391, 11:15 صبح
با چه کدی میشه مثلا سلول اول از ردیفی که کاربر روی دکمه کلیک کرده رو به صفحه مقصد ارسال نمود؟اگه اون سلول یه textbox باشه و تو فرم باشه با submit شدن فرم خود به خود ارسال میشه .

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




<?php
$mysqli = new mysqli("host", "username", "password", "dbname");
$sql = "select id, name, family, phone_Number from table1"; // id is primary key of table1
$result = $mysqli->query($sql);
?>

<?php if ($result) : ?>

<table>

<tr>
<td>Name</td> <td>Family</td> <td>Phone number</td>
</tr>

<?php while( $row = $result->fetch_assoc() ) : ?>

<tr>
<form action="result.php" method="get">
<input type="hiddden" name="id" value="<?=$row["id"];?> />
<td><?=$row["name"];?>></td>
<td><?=$row["family"];?>></td>
<td><?=$row["phone_Number"];?>></td>
<td><input type="submit" value="delete" /></td>
</form>
</tr>

<?php endwhile; ?>

</table>

<?php endif; ?>

<?php $mysqli->close(); ?>

تو این حالت ما یه جدول رو از بانک چاپ میکنیم(در اینجا table1) و کلید هر سطر رو به صورت hidden تو همون سطر چاپ میکنیم و بقیه فیلد ها رو فقط جهت بازدید مدیر یا کاربر نشون میدیم و واسه حذف فقط به فیلد کلید نیاز داریم . اگه بخوایم دکمه update هم بذاریم باید تو هر سطر به ازای فیلد هایی که میخوایم قابلیت update شدن رو داشته باشن یه textbox بذاریم و در ابتدا مقدار فعلی اون فیلد رو تو جدول چاپ کنیم و در صورت تغییر با زدن دکمه update مقادیر textbox های همون سطر به result.php ارسال میشن (در واقع هر input ای که خصوصیت name ش مقدار گرفته باشه به فرم ارسال میشه) حالا شاید ما بخوایم مثلا کاربر نتونه username رو عوض کنه خوب معلومه که مثل بالا فیلد username رو بصورت متن معمولی چاپ میکنیم که تغییر نکنه و ارسال نشه. واسه اضافه کردن دکمه update به سطر باید به جای این سطرها :





<td><?=$row["name"];?>></td>
<td><?=$row["family"];?>></td>
<td><?=$row["phone_Number"];?>></td>
<td><input type="submit" value="delete" /></td>


اینا رو بنویسیم :





<td><input type="text" value="<?=$row["name"];?>" name="name"/></td>
<td><input type="text" value="<?=$row["family"];?>" name="family"/></td>
<td><input type="text" value="<?=$row["phone_Number"];?>" name="phone_Number"/></td>
<td><input type="submit" value="update" name="update" /></td>
<td><input type="submit" value="delete" name="delete" /></td>



در کل منظور اینه که اگه سلول های سطر ماله یه سطر تو یه جدول تو بانک باشن نیازی نیست واسه کار های غیر update سلول ها رو بفرستیم و فقط با داشتن فیلد کلید اون سطر به راحتی سمت سرور بقیه فیلد ها رو از جدول میخونیم اصلا شاید یه فیلدی تو جدول چاپ نشده باشه ولی تو عملیات مورد نظر حضورش لازم باشه در اینصورت اگه از این روش استفاده کنیم از دوباره کاری جلوگیری میکنیم.
هر کاربرد دیگه ای رو میشه به این شکل پیاده کرد بستگی داره که دقیقا چه کاری رو میخواید انجام بدید . البته این یه مثال ساده است تو نسخه release باید بیشتر بررسی بشه و کنترل خطا و خیلی موارد دیگه .


موفق باشید