PDA

View Full Version : سوال: نمایش اطلاعات از بانک روی صفحه با کلیک روی یک شیء



mortezahbh
پنج شنبه 30 مرداد 1393, 21:44 عصر
با سلام خدمت دوستان عزیز

من میخوام توی صفحه اول سایتم وقتی روی یک متن (تیتر خبر) کلیک میکنم

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

لطفا راهنمایی کنید که این کار به چه شکل باید انجام بشه

لطفا درصورت امکان با java script - php راهنمایی کنید

با تشکر

فرزند کوروش
پنج شنبه 30 مرداد 1393, 22:01 عصر
سرچ کوچولو میکردی به جوابت میرسیدی.
باید ای دی مطلب رو با روش GET ارسال کنی به صفحه مقصد
در صفحه مقصد با کويری دیتابیس اون مطلبی ک ای دیش برابر با ای دی ارسال شده هست واکشی کنی
اینجوری

mysql_query("SELECT FROM table_name WHERE id='".intval($_GET['id'])."' ")

mortezahbh
پنج شنبه 30 مرداد 1393, 23:04 عصر
خب من نمی خوام واسه هر خبرم یک صفحه لود بشه

می خوام وقتی روی تیتر خبر کلیک میکنم در قسمت میانی پیجم متن کامل خبر رو نشون بده

اصلا این کار امکان پذیره؟

باتشکر از شما دوست عزیز

Mori Bone
پنج شنبه 30 مرداد 1393, 23:16 عصر
لینک عنوان خبر رو اینجوری بنویس:

news.php?newsid = 123
بعد توی صفحه news.php اینو بنویس

mysql_query("SELECT FROM table_name WHERE id='".intval($_GET['newsid'])."' ")

hamedarian2009
جمعه 31 مرداد 1393, 00:23 صبح
خب من نمی خوام واسه هر خبرم یک صفحه لود بشه

می خوام وقتی روی تیتر خبر کلیک میکنم در قسمت میانی پیجم متن کامل خبر رو نشون بده

اصلا این کار امکان پذیره؟

باتشکر از شما دوست عزیز

چرا نشه با جی کوئری ای جکس انجامش بدین عالی میشه
مثلا news.php?id=15 که شما با کلیک بر روی اون همون خبر با آیدی 15 کاملش در یک Div در همون صفحه بدون رفرش صفحه برات لود بشه

mortezahbh
جمعه 31 مرداد 1393, 21:03 عصر
چرا نشه با جی کوئری ای جکس انجامش بدین عالی میشه
مثلا news.php?id=15 که شما با کلیک بر روی اون همون خبر با آیدی 15 کاملش در یک Div در همون صفحه بدون رفرش صفحه برات لود بشه

ممنون از جواب 2 دوست عزیز:قلب:

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

فقط لطف کنید کدها و طرز استفادشون رو آموزش بدید

ممنون میشم:لبخندساده:

Mori Bone
جمعه 31 مرداد 1393, 21:48 عصر
پس یعنی شما روش ایجکس رو انتخاب کردین. چون خوبی ایجکس اینه از رفرش شدن صفخه جلوگیری می کنه.
اینو سرچ کن. send data to php file with ajax

hamedarian2009
جمعه 31 مرداد 1393, 22:14 عصر
فرض یک صفحه داری به نام news.php که تیتر اخبار رو از دیتابیس میگیری و در اون نمایش میدی مثلا شبیه مثالی که من برات نوشتم :


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>News</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<?php
$link = mysql_connect('localhost','root','');
mysql_select_db('daneshjoonews');
mysql_query('set names utf8');
$result =mysql_query("SELECT `id`,`title` FROM `tbl_news`");
while ($row = mysql_fetch_assoc($result)) {
echo '<a href="#" data-id="'.$row['id'].'">'.$row['title'].'</a><br />'.PHP_EOL;
}

?>
<br><br>
<div id="content"></div>

<script type="text/javascript">
(function(){
$('a').click(function(){
$.get('fetch_news.php',{'newsid':$(this).data('id' )},function(data){
$('#content').html(data);
});
return false;
});

})();
</script>
</body>
</html>

یک صفحه هم در کنارش بساز به نام fetch_news.php و کدهای زیر رو داخلش می نویسی :


$id =$_GET['newsid'];

$link = mysql_connect('localhost','root','');
mysql_select_db('daneshjoonews');
mysql_query('set names utf8');
$result =mysql_query("SELECT `title`,`long_text` FROM `tbl_news` WHERE id='$id'");
$row = mysql_fetch_assoc($result);
echo $row['title'].'<br />';
echo $row['long_text'];


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

ABZiko
جمعه 31 مرداد 1393, 23:35 عصر
لینک عنوان خبر رو اینجوری بنویس:

news.php?newsid = 123
بعد توی صفحه news.php اینو بنویس

mysql_query("SELECT FROM table_name WHERE id='".intval($_GET['newsid'])."' ")

ببخشید که وسط تاپیک دوستمون صحبت می کنم ولی یک سوال داشتم، آقای Mori Bone این کدی که شما نوشتین برای اینه که به هر خبر یک لینک خاص بدیم تا اخبار کامل مربوط به همون Title رو بیاره، درسته؟ اگر منظورتون همینه می خواستم بدونم اون قسمتی که نوشتین news.php?newsid=123 بر چه اساس نوشتین؟ ممنون

hamedarian2009
شنبه 01 شهریور 1393, 14:31 عصر
ببخشید که وسط تاپیک دوستمون صحبت می کنم ولی یک سوال داشتم، آقای Mori Bone این کدی که شما نوشتین برای اینه که به هر خبر یک لینک خاص بدیم تا اخبار کامل مربوط به همون Title رو بیاره، درسته؟ اگر منظورتون همینه می خواستم بدونم اون قسمتی که نوشتین news.php?newsid=123 بر چه اساس نوشتین؟ ممنون

تو url ها بعد از علامت سوال رو بهش میگن کوئری استرینگ که یک روش برای انتقال اطلاعات از یک صفحه به صفحه دیگر هست حالا ایشون آیدی خبر رو به یه صفحه دیگه ارسال کردن و اونجا با $_GET['newsid'] قابل دریافت هست و میتونن اون خبرو چاپ کنن

Mori Bone
شنبه 01 شهریور 1393, 15:10 عصر
ببخشید که وسط تاپیک دوستمون صحبت می کنم ولی یک سوال داشتم، آقای Mori Bone این کدی که شما نوشتین برای اینه که به هر خبر یک لینک خاص بدیم تا اخبار کامل مربوط به همون Title رو بیاره، درسته؟ اگر منظورتون همینه می خواستم بدونم اون قسمتی که نوشتین news.php?newsid=123 بر چه اساس نوشتین؟ ممنون

پاسخ:


تو url ها بعد از علامت سوال رو بهش میگن کوئری استرینگ که یک روش برای انتقال اطلاعات از یک صفحه به صفحه دیگر هست حالا ایشون آیدی خبر رو به یه صفحه دیگه ارسال کردن و اونجا با $_GET['newsid'] قابل دریافت هست و میتونن اون خبرو چاپ کنن
این که من نوشتم که خیلی مشخصه یه روش ارسال اطلاعاته که بهش میگن get. روش زیاده مثله post و ajax

mortezahbh
شنبه 01 شهریور 1393, 17:42 عصر
فرض یک صفحه داری به نام news.php که تیتر اخبار رو از دیتابیس میگیری و در اون نمایش میدی مثلا شبیه مثالی که من برات نوشتم :


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>News</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<?php
$link = mysql_connect('localhost','root','');
mysql_select_db('daneshjoonews');
mysql_query('set names utf8');
$result =mysql_query("SELECT `id`,`title` FROM `tbl_news`");
while ($row = mysql_fetch_assoc($result)) {
echo '<a href="#" data-id="'.$row['id'].'">'.$row['title'].'</a><br />'.PHP_EOL;
}

?>
<br><br>
<div id="content"></div>

<script type="text/javascript">
(function(){
$('a').click(function(){
$.get('fetch_news.php',{'newsid':$(this).data('id' )},function(data){
$('#content').html(data);
});
return false;
});

})();
</script>
</body>
</html>

یک صفحه هم در کنارش بساز به نام fetch_news.php و کدهای زیر رو داخلش می نویسی :


$id =$_GET['newsid'];

$link = mysql_connect('localhost','root','');
mysql_select_db('daneshjoonews');
mysql_query('set names utf8');
$result =mysql_query("SELECT `title`,`long_text` FROM `tbl_news` WHERE id='$id'");
$row = mysql_fetch_assoc($result);
echo $row['title'].'<br />';
echo $row['long_text'];


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

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




while ($row = mysql_fetch_assoc($result)) {
echo '<a href="#" data-id="'.$row['id'].'">'.$row['title'].'</a><br />'.PHP_EOL;
}


و همچنین این قسمت




(function(){
$('a').click(function(){
$.get('fetch_news.php',{'newsid':$(this).data('id' )},function(data){
$('#content').html(data);
});
return false;
});

})();


درصورت امکان توضیح بدید که چطوری کار میکنه -- ممنون:لبخندساده:

درضمن وقتی تغییری در فایل fetch_news.php میدم و صفحه رو رفرش میکنم تغییرات اعمال نمیشه و

باید همین فایل رو (fetch_news.php) با یک نام دیگه ذخیره کنم و

بعد در فایل news.php نیز لینک اون رو به همین نام تغییر بدم تا تغییرات اعمال شه

مشکل از چیه؟

باتشکر فراوان از تمامی دو3تان:قلب:

hamedarian2009
شنبه 01 شهریور 1393, 18:26 عصر
1-یه حلقه هست که با دستور mysql_fetch_assoc در هر بار اجرا یک رکورد رو از جدول مورد نظرتون از دیتابیس میخونه تا زمانی که رکوردی وجود نداشته باشه و هر بار هم بیاد تیتر اخبار را در قالب یک لینک چاپ کنه و این لینک چون در اصل قرار نیست به جایی هدایتتون کنه فاقد آدرس هست و فقط یک خصوصیت جدید با نام data-id براش تعریف کردم که بتونیم با جی کوئری مقدارشو بگیریم و مقدارش هم id خبر مورد نظرتون هست (توی html5 میشه برای تگ خصوصیت دلخواه ایجاد کرد با پیشوند -data)

2-یه کد جی کوئری هست که داره میگه وقتی روی لینک کلیک شد بیا این مقدار که در خصوصیت data-id تعریف شده رو بفرست به صفحه fetch_news.php و بعدش خروجی اون صفحه رو برام توی تگ div با آیدی content درج کن (روش ارسال آن get هست و میتونید از post هم استفاده کنید)

3- شما هر تغییری توی صفحه fetch_news.php بدین توی صفحه دیگه باید اعمال بشه قطعا یک اشکالی در کارتون هست

mortezahbh
دوشنبه 03 شهریور 1393, 15:25 عصر
ممنون آقا حامد :لبخندساده: خیلی کمکم کردید

فقط یک مشکل دیگه هم دارم:

برای اینکه اطلاعات خبر رو بصورت جدا جدا داشته باشم باید چیکار کنم؟

مثلا میخوام تیتر خبر رو توی تگ <h2> بذارم و تاریخ و ساعت اون رو توی یک <div> جدا و متن اون روهم با <p> نمایش بدم و همه اینها استایل خاص خودشو داشته باشه

میشه در این مورد هم راهنماییم کنید ؟

با تشکر :قلب:

mortezahbh
دوشنبه 03 شهریور 1393, 16:08 عصر
و یک مورد دیگر :

در این قسمت


$('a').click(function(){

داره میگه که وقتی روی تگ a کلیک شده دستورات بعدش رو اجرا کن

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

لطفا در این خصوص هم راهنمایی بفرمایید

با تشکر

Mori Bone
دوشنبه 03 شهریور 1393, 16:12 عصر
و یک مورد دیگر :

در این قسمت


$('a').click(function(){

داره میگه که وقتی روی تگ a کلیک شده دستورات بعدش رو اجرا کن

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

لطفا در این خصوص هم راهنمایی بفرمایید

با تشکر
به خبر هات کلاس بده یعنی

<a class='news'.....
بعدشم اینجوری میشه:
$('a.news').click(function(){

Mori Bone
دوشنبه 03 شهریور 1393, 16:16 عصر
ممنون آقا حامد :لبخندساده: خیلی کمکم کردید

فقط یک مشکل دیگه هم دارم:

برای اینکه اطلاعات خبر رو بصورت جدا جدا داشته باشم باید چیکار کنم؟

مثلا میخوام تیتر خبر رو توی تگ <h2> بذارم و تاریخ و ساعت اون رو توی یک <div> جدا و متن اون روهم با <p> نمایش بدم و همه اینها استایل خاص خودشو داشته باشه

میشه در این مورد هم راهنماییم کنید ؟

با تشکر :قلب:
حتما از دیتابیس مب خونید دگ؟
اگه آره به روش زیر عمل کن:
while($row = mysql_fetch_assoc($sql) {
echo '<a class="news" ...>';
echo "<h1>" . $row['sarmenu'] . '</h1>';
echo "<h1>" . $row['date'] . '</h1>';
echo '</a>';
}