PDA

View Full Version : مبتدی: متن نوار آدرس برای یک پست



tuytoosh
دوشنبه 13 آبان 1392, 02:11 صبح
سلام - عنوانو همینجوری گذاشتم بیخیالش شید
من یه cms ساده با php نوشتم که یک صفحه مثل show_posts.php داره وقتی این صفحه رو باز میکنم و میخوام یه پست خاص رو نشون بدم آدرسی که تو نوار آدرس مرورگر هست اینه مثلا
site/show_posts.php

ولی اکثر سایتا اینجورین...

mysite/show_posts.php?id=17
یه چیزی تو این مایه ها

چطوری اینکارو بکنم؟

چون اگه اینکارو نکنم عملا نمیتونم به پستام لینک بدم....
ممنون

saeidpsl
دوشنبه 13 آبان 1392, 02:26 صبح
بفرما:چشمک:



if (isset($_REQUEST['id'])) {

echo $_REQUEST['id'];


}

tuytoosh
دوشنبه 13 آبان 1392, 02:58 صبح
اینی که گفتیدو چیکارش کنم؟

کجا بنویسمش؟

چیکار کنم که هر پستم یه آدرس جداگانه داشته باشه؟

saeidpsl
دوشنبه 13 آبان 1392, 03:19 صبح
میزای تو صفحه show_posts.php (http://site/show_posts.php)



if (isset($_REQUEST['id'])) {

$id=$_REQUEST['id'];

$sth = $conn->prepare('SELECT * FROM posts WHERE id=:id');
$sth->execute(array(':id'=>$id));
$row = $sth->fetchObject();
echo $row->post_name;

}



نیازی به آدرس جداگانه نداره فقط اون ایدی پست رو عوض کن

"اگه تازه واردید این روش برای شما سخته"

ابوذر محمودی
دوشنبه 13 آبان 1392, 08:53 صبح
اون id=17? یعنی اینکه شما مقداری رو توسط متد GET دارین به صفحه show_posts.php ارسال میکنین که در اینجا شما مقدار 17 رو در id قرار دادین و به صفحه show_posts.php ارسال کردین.
برای دریافت مقدار id که ارسال میکنین تو صفحه show_posts.php میتونین از دستور زیر استفاده کنین.

$id=$_GET['id'];
یا
$id=$_REQUEST['id'];

مثلا من میخوام به صفحه خودم چند تا مقدار بدم (name=ali و id=20)و سپس اونارو دریافت و نمایش بدم.
نوار آدرس باید به این شکل باشه

mysite/show_posts.php?id=20&name=ali
اگه چند تا مقدار میخوان ارسال کنین باید با & اونارو از هم جدا کنین.
حالا تو صفحه show_posts.php برای دریافت این مقادیر و نمایش اونها به صورت زیر عمل میکنیم.

<?php
$user_id=$_GET['id'];
$user_name=$_GET['name'];
echo $user_id;
echo $user_name;
?>
تو این مثال شما مقداری که با id به صفحه فرستادین رو در user_id$ ذخیره کردین حالا میشه این مقدار رو در جدول جستجو کرد و اطلاعاتشو نمایش داد.

نکته ای که باید بگم اینه که اگه شما آدرس صفحه رو وارد کنین و هیچ مقداری به اون ارسال نکنین حتما ابتدای صفحتون خطا میده که با دستور isset میتونین بفهمین که آیا مقداری به صفحه ارسال شده یا نه.
یعنی کد بالا به صورت زیر میشه :


<?php
if (isset($_GET['id']) && isset($_GET['name']) )
{
$user_id=$_GET['id'];
$user_name=$_GET['name'];

echo $user_id;
echo $user_name;
}
?>

حالا اینکه چه اطلاعاتی باید به صفحه مربوطه فرستاده شه بسته به ساختار دیتابیستون داره ، که معمولا برای دسترسی به پست خاصی فیلد کلید یا فیلدی که مقدار یکتایی تو جدول داره رو ارسال میکنن ، بعد توسط دستورات بالا مقدار ارسالی رو دریافت و در جدول جستجو میکنن و وقتی پیدا شد اطلاعات مربوط به اون پست رو نمایش میدن.

برای جستجو در جدول هم اگه آشنایی کافی ندارین بهتره آموزش های PDO یا mysqli رو جستجو کنید.