PDA

View Full Version : ایجاد لینک به یک رکورد بانک اطلاعاتی



behnam shamlo
چهارشنبه 25 آبان 1390, 20:44 عصر
دوستان عزیز 2 تا سئوال دارم اگه ممکنه راهنمایی کنید:
ا) من در یک صفحه وب توسط php میخوام یک صفحه خبر بسازم .برای اینکار میام و فیلد عنوان خبر را به شکل لینک در صفحه نمایش میدم.حالا میخوام وقتی روی این لینک که یک فیلد از رکوردم میشه ، کلیک میکنم در صفحه جدید ، فیلد متن خبر نمایش داده بشه . حالا برای اینکار چه کار باید بکنم که وقتی کلیک میکنم شماره رکورد به صفحه جدید ارسال بشه تا بتونم در صفح جدید رکوردی را که انتخاب شده محتویاتش رو نشون بدم.
2) چطور میشه در php ، وقتی یک فرم جدید پر میشه (مثلا یک فرم که شامل عنوان خبر، متن خبر ) بجای اینکه عنوان خبر و متن خبر در دیتابیس ذخیره بشه ، یک صفحه جدید مثلا (khabar1.php یا khabar1.html ) ساخته بشه و این اطلاعات که متنی هستم در یک صفحه جدید که ساخته میشه اضافه بشه؟ در کل دستور ساخت صفحه جدید در php چی هست؟؟؟
ممنون میشم کمک کنید

pejman_view
چهارشنبه 25 آبان 1390, 22:00 عصر
سلام

تو دیتابیس باید یک جدول برای خبر بسازید که این چندتا فیلد رو پیش نیاز داشته باشه: 1- ID
2- Content
3- headline

سپس یک فایل فرضاً news_reader.php می سازید و کد زیر رو وارد می کنید:



<?php

$q = "SELECT * FROM NEWS WHERE id='".$_GET['id']."'";
$r = mysqli_query($r,$q);

if (mysqli_num_rows($r) == 1){//if find the the ID
$row = mysqli_fetch_assoc($r);
echo "<div class='headline'>$row['headline']</div>";
echo "<div class='content'>$row['content']</div>";

}else{
echo "Sorry the news not found.";
}

?>



البته کد بصورت خیلی ساده است و باید خودتان به مرور زمان با یادگیری PHP این کد رو بسط بدید و فقط برای آگاهی شما این کد رو نوشتم.

behnam shamlo
پنج شنبه 26 آبان 1390, 01:18 صبح
منظورم این نبود
دوستان اگه میشه راهنمایی کنید

aghasoroush
پنج شنبه 26 آبان 1390, 01:48 صبح
با سلام خدمت شما دوست عزیزم
ببینید شما چند تا سوال پرسیدید که یکی یکی بهسون جواب میدم تا واضح تر باشن جوابا

ببینید دوست من, شما برای اینکه اطلاعات را بین صفحات منتقل کنید 2 راه دارید که البته منظورم دو راه متعارف هستش وگرنه چندین راه هست که اگه خواستین براتون میگم و در این بحث نمیگنجه
راه اول اینکه شما با استفاده از متد get مقادیرتون رو بین صفحات جا بجا کنید
متد get رو اگه میخواین بدونین چیه به نوار آدرس توی مرور گر نگاه کنین یه همچین چیزایی میبینین:
barnamenevis.org/register.php?id=25
این یک مثال بود
شما برای اینکه بخواین از طریق متد get و بهتر بگم از ریق لینک اطلاعاتتون رو به یک صفحه ی دیگه منتفل کنین باید یک لینک بسازین که حاوی اطلاعاتتون باشه و در صفحه ی دیگه اون اطلاعات رو ودریافت کنین

یه مثال براتون میزنم دقت کنین:
شما میخواین اسم یک کاربر رو ببرین به یک صفحه ی دیگه و بهش پیغام خوش آمد بگین

برای این کار باید اینطوری عمل کنید


<a href='welcome.php?name=soroush'>click to see the message!</a>

این میشه لینک شما که دارین متغیر name رو بهش مقدار میدین و میبرینش به صفحه ی welcome.php

خب حالا باید بریم توی welcome.php و برنامه ای بنویسیم که مقدار مربوط به متغیر name رو بگیره
به این صورت عمل میکنیم:


<?php
if (isset($_GET['name']) && $_GET['name'] !="" )
echo "Welcome " . $_GET['name'];
?>


دوست خوبمون یه مثال براتون زدن که اگه دقت کنین داره ID مربوط به خبر رو میگیره و متنشو وچاپ میکنه
که دستشم درد نکنه مثال خوبیه
من زیاد علمی نگفتم که شما ساده تر متوجه بشین
باز سوالی بود در خدمتم
این از سوال اول
و اما سوال دوم
در php تا این ورژنی که الان هست دستوری نداریم که صفحه ی جدید بسازه
در کل بذارین اول یه نکته رو بهتون بگم
امکان نداره که یه کد php رو با فرمت html ذخیره کنین و بتونین اجراش کنین مگر اینکه از ماژول rewrite آپاچی استفاده کنین
اطلاعات بیشتر خواستین در خدمتم

در بسیاری ا سایت ها دارین میبینین که فرمت صفحات html هستش ولی دایم دارن تغییر میکنن
در اصل اینا html نیستن و به صورت دروغیی این نام گذاری ها انجام میشه

بگذریم...

برای این کاری که شما میخوایین انجام بدین باید با php یک فایل رو باز کنین و متون مورد نظر رو توش بنویسین و اون رو با فرمت html ذخیره کنین که کار عذاب آور و خطر ناکیه چون باید
در سرورتون اجازه ی ایجاد فایل رو در پوشه ی اصلی بدین و این خیلی خطرناکه اما حالا من یه مثال براتون میزنم:




<?php

if (isset($_GET['head']) && $_GET['head'] != "" && isset($_GET['body']) && $_GET['body'] != "" )
{
$FileName = $_GET['head'] . ".html";
$Content = $_GET['body'];
if (!file_exists($FileName) && $fh = fopen($FileName,'w') )
{
fwrite($fh, $Content );
fclose($fh);
echo "File $FileName created successfully! Click <a href='$FileName'> here </a> to see it";
}
else
echo "The file $FileName cannot be created!";

}
else
echo "Your request is wrong!";

?>


خب حالا باید اطلاعات رو بفرستیم سمت این صفحه تا برامون یه فایل HTML بسازه که اسمش برابره با عنوان خبر
ایشالا که کار با فرم ها رو بلدین ولی اگه سوالی بود من در خدمتم

یه نکته رو هم بگم که من در این کد فرض کردم که شما از متد GET برای ارسال اطلاعات استفاده کردین که البته کار اشتباهیه و میتونین خودتون متد رو عوض کنید
اگه سوالی در باره ی اون if های اول کد داشتین بپرسین تا براتون بگم

این کد خیلی از نظر فنی ایراد داره و من برای سادگی اینجوری نوشتم ولی اشکال امنیتی خاصی نداره
البته داره اما اگه بخوام توضیح بدم از این بحث خارجه
هر جایی از این کد یا توضیحاتم ایرادی یا کمبودی یا ابهامی دیدین بگین تا روشنش کنم براتون
موفق باشین

aghasoroush
پنج شنبه 26 آبان 1390, 01:52 صبح
با سلام دوست من هیچ وقت دستور SQL رو برابر با یک متغیر ورفای نشده نمیدن که به راحتی آب خوردن اینجکت بشه
جسارتا خدمتتون عرض کردم و شما استاد بنده هستین
فقط یاداوری کردم که مشکلی براتون پیش نیاد

موفق باشین

behnam shamlo
پنج شنبه 26 آبان 1390, 03:21 صبح
واقعا ممنونم از این توضیح خو ب و عالیتان باید ده بار تشکر کنم. شرمنده کردی دوست عزیز

aghasoroush
پنج شنبه 26 آبان 1390, 03:40 صبح
خواهش میکنم دوست عزیزم فقط و فقط وظیفه بود
سوالی اگه داشتی بپرس در خدمتم

behnam shamlo
پنج شنبه 26 آبان 1390, 03:52 صبح
for($i=0;$i < $num;$i ++)
{
$row=mysql_fetch_row($result);
/*echo $row[0]."-".$row[1]."_".$row[2]."<br>";*/
echo "<a href='khabar.php?name='".$row[0]."' class='khabarlink' >".$row[1]."</a><br>";
}
ولی نمی دونم چرا مقدار این متغیر $row را ارسال نمی کنه برام

aghasoroush
پنج شنبه 26 آبان 1390, 04:02 صبح
دوست من شما دارین انتهای لینک رو میبندین
به دستور لینکتون دقت کنید
درضمن من از بانک اطلاعاتیتوم بی خبرم
لطف کنین اونم بگین تا راهنماییتون کنم

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