PDA

View Full Version : سوال: مشکل در ساخت cms



yasin5
چهارشنبه 04 دی 1392, 11:59 صبح
با سلام من سایتی طراحی کردم که مدیر سایت پست که در سایت قرار میده و گفتم بیشتر از 5تا پست در صفحه قرار نگیره و ادامه پست ها به صفحه بعد بره حالا مشکل اینجاست که پست های بعدی را چطور به صفحه های دیگر لینک بدم و میخوام با توجه به عکسی که در زیر میزارم اگر کاربر روی اموزش php کلیک کرد پست های مربوط به php بیاید
114394


<?php
session_start();
?>


<?php
require_once 'config/database.php';

include ("config/config.php");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php
mysql_query("set names 'UTF8'");
$cms=mysql_query("select * from config");

$k=mysql_fetch_assoc($cms);
echo $k["title"];

?></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link rel="stylesheet" type="text/css" href="css/style2.css" />
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/ajaxreq.js"></script>
<p id="demo"></p>
<script>
function myFunction1()
{
var x;
var r=confirm("آیا مطمئن هستید که می خواهید خارج شوید؟");
if (r==true)
{
window.location.assign("login/log_out.php")
}
else
{
x="You pressed Cancel!";
}
document.getElementById("demo").innerHTML=x;
}
</script>
</head>
<body>
<?php
include ("config/config.php");
mysql_query("set names 'UTF8'");
$sel=mysql_query("SELECT *FROM `posts` where onoff=1 limit 5,0 " );

?>
<?php include ('header.php'); ?>
<?php include ('sidebarr.php'); ?>

<div id="content">
<?php
if(isset ($_GET['psid']))
{
$ptsel=mysql_query("SELECT *FROM `posts` where postid='".$_GET["psid"]."'");
$pst=mysql_fetch_assoc($ptsel);
?>
<div class="content">
<div class="content_title">
<h3> <?php echo $pst["title"] ?> </h3>
</div>
<div class="content_m"><?php echo $pst["text"] ?>

</div>
</div>
<div class="content">
<div class="content_title">
<h3> ارسال نظرات </h3>
</div>
<div class="content_m">
<?php
include('config/config.php');
include ("shamsi.php");
mysql_query("set names 'UTF8'");



if(isset($_POST['captcha'])){


if ($userCaptcha = strtoupper($_POST['captcha']))
{
if( $_SESSION['captcha'] !== $userCaptcha )

echo '<font color="#FF0000" size="+1">کد امنیتی را صحیح وارد نمایید</font>';


else {




$query= "insert into nazar (name,email ,site, payam,date)values('".$_POST['name']."','".$_POST['email']."','".$_POST['site']."','".$_POST['payam']."','".shamsi()."')";

$result=mysql_query($query) or die(mysql_error());
if($result)
{


echo '<font color="#FF0000" size="+1" >پیام شما ارسال شد</font>';




}
}
}
}


?>



<form id="form2" name="form2" method="post" action="" >
<p align="right">نام


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
<input name="name" type="text" id="name" size="30" />
&nbsp;<font color="#FF0000">* </font> </p>
<p align="right">ایمیل



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input name="email" type="text" id="email" size="30" />
<font color="#FF0000">*</font> </p>
<p align="right">وب سایت


&nbsp;&nbsp;&nbsp;
<input name="site" type="text" id="site" size="30"/>
</p>
<?php
if(isset($_POST['site']))
{
$site=$_POST['site'];

if(!preg_match("|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i", $site))
{
echo '<font color="#FF0000" size="3">آدرس وب سایت شما معتبر نمی باشد</font>';
}
}
?>
<br />
<p align="right">
<textarea name="payam" cols="50" rows="10" id="payam"></textarea>
&nbsp;<font color="#FF0000">*</font> </p>
<p align="right">
<p> <img src="ap-catpcha/ap-captcha.php" /> <br />
<p>کد امنیتی نمایش داده شده در تصویر فوق را در فیلد زیر وارد نمایید</p>
<input name="captcha" type="text" size="30" />
&nbsp;<font color="#FF0000">*</font> <br />
<input type="submit" name="button" id="button" value="ثبت نظر" onclick="myFunction()" />
</p>
</form>
</div>
</div>
<?php
}
else{
while($pst=mysql_fetch_assoc($sel)){


?>
<div class="content">
<div class="content_title">
<h3> <?php echo $pst["title"] ?> </h3>
</div>
<div class="content_m"> <?php echo $pst["onetext"] ?>
<?php
if($pst["text"]!=''){

echo '<a href="?psid='.$pst["postid"].'"><div class="continue" >مطالعه بیشتر</div></a>';
}

?>
</div>
</div>
<?php

}}
if(isset($_GET['cat']))
{
$p=sprintf("select * from cat where catid=%s",intval($_GET['cat']));
}

else
$p="select * from posts";
$r=mysql_query($p);
$n=mysql_num_rows($r);
$k=2;
$z=ceil($n/$k);
if($z>5)
{
for($i=0;$i<3;$i++)
if(isset($_GET['cat']))

echo '<a href=?cat='.$_GET['cat'].'&at='.$i*$k.'>'.($i+1).'</a> |';
else
echo '<a href=?at='.$i*$k.'>'.($i+1).'</a> |';

echo '...';


if(isset($_GET['cat']))

echo '<a href=?cat='.$_GET['cat'].'&at='.$z*$k.'>'.($z+1).'</a> |';
else
echo '<a href=?at='.$z*$k.'>'.($z+1).'</a> |';

}
else
{

for($i=0;$i<3;$i++)
if(isset($_GET['cat']))

echo '<a href=?cat='.$_GET['cat'].'&at='.$i*$k.'>'.($i+1).'</a> |';
else
echo '<a href=?at='.$i*$k.'>'.($i+1).'</a> |';

}

?>
</div>
<?php include ('sidebarl.php'); ?>

<?php include ('footer.php'); ?>


کد مربوط به لیست موضوعات


<?php
mysql_query("set names utf-8");
$p="select * from cat";
$r=mysql_query($p);
while($row=mysql_fetch_assoc($r))
echo '<li><a href="?at=0&cat='.$row['catid'].'">'.$row['name'].'</a></li>';

?>

omidabedi
چهارشنبه 04 دی 1392, 12:47 عصر
ببین کلیت کارت باید اینجوری باشه.
هر محتوای جدیدی که ایجاد میکنی باید یک فیلد جدا براش بزاری بعنوان متن کوتاه یا بریده یا هرچی که قرار هست اونو در صفحه ی اول قرار بدی یا نه اصلا بیای با php مثلا 200 کارکتر اول رو برداری نمایش بدی.
بعدش در صفحه ای که قرار هست پستهارو نمایش بدی میخوای اگر بیشتر از 5تا شد قدیمی ترها برن به صفحه ی 2 و ادامه
خب شما نیاز به یک pagination داری
میتونی سرچ کنی هم اماده هست هم اموزشش

yasin5
چهارشنبه 04 دی 1392, 18:10 عصر
با تشکر از راهنمایی شما کد بالا اصلاح شد و دارای صفحه بندی شد فقط مشکل اینه برای ادامه مطلب کد چه تغییری باید بکنه و نیز اینکه با توجه به عکس بالا اگر کاربر از منوی لیست موضوعات موردی را انتخاب کرد فقط پست های مربوط به ان را نمایش دهد

<?php
session_start();
?>


<?php
require_once 'config/database.php';

include ("config/config.php");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php
mysql_query("set names 'UTF8'");
$cms=mysql_query("select * from config");

$k=mysql_fetch_assoc($cms);
echo $k["title"];

?></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link rel="stylesheet" type="text/css" href="css/style2.css" />
<link rel="stylesheet" href="paged_style.css">
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/ajaxreq.js"></script>
<p id="demo"></p>
<script>
function myFunction1()
{
var x;
var r=confirm("آیا مطمئن هستید که می خواهید خارج شوید؟");
if (r==true)
{
window.location.assign("login/log_out.php")
}
else
{
x="You pressed Cancel!";
}
document.getElementById("demo").innerHTML=x;
}
</script>
</head>
<body>

<?php
include ("config/config.php");
mysql_query("set names 'UTF8'");

$sel=mysql_query("SELECT *FROM `posts` where onoff=1 limit 0,5" );

?>
<?php include ('header.php'); ?>
<?php include ('sidebarr.php'); ?>


<div id="content">

<?php


//تعداد آیتم در هر صفحه
include_once('paged_setting.php');

//نام میزبان
$db_host = "localhost";
//MySQL نام کاربری
$db_user = "root";
//MySQL کلمه عبور
$db_password = "";
//نام پایگاه داده
$db_name = "cms";
//نام جدول
$tb_name = "posts";

//اتصال به سرور و پایگاه داده
$connect = mysql_connect("$db_host", "$db_user", "$db_password")
or die(mysql_error());

//انتخاب دیتابیس
mysql_select_db("$db_name")
or die(mysql_error());

//تنظیم کاراکترها سازگار با فارسی
$set = mysql_query("SET NAMES 'utf8'")
or die(mysql_error());

//دریافت صفحه درخواستی
@$page = mysql_real_escape_string($_GET['page']);

//محاسبه شروع انتخاب نتایج
if(empty($page)){
//پیش فرض
$page = 1;
}
$start = ($page - 1) * $setting['paged_item'];

//اجرای پرس و جوی داینامیک و دریافت مقادیر
$query = mysql_query("SELECT * FROM ".$tb_name." ORDER BY postid desc LIMIT $start, ".$setting['paged_item']."")
or die(mysql_error());

//چاپ خروجی

while($row = mysql_fetch_array($query)){
$postid = $row['postid'];
$title = $row['title'];
$onetext = $row['onetext'];
?>
<div class="content">
<div class="content_title">
<h3> <?php echo $row["title"] ?> </h3>
</div>
<div class="content_m"> <?php echo $row["onetext"] ?>
<?php
if($row["text"]!=''){

echo '<a href="?psid='.$row["postid"].'"><div class="continue" >مطالعه بیشتر</div></a>';
}

?>
</div>
</div>

<?php
}
//پرس و جوی تعداد کل ردیف ها
$total = mysql_query("SELECT postid FROM ".$tb_name."")
or die(mysql_error());
//مجموع
$count = mysql_num_rows($total);

//بررسی نیاز به صفحه بندی
if($count - $setting['paged_item'] > 0){
//تعداد صفحات
$paged_total = ceil($count / $setting['paged_item']);
//صفحه آخر
$paged_last = $paged_total;
//صفحات میانی
$paged_middle = $page + 4;
//شروع صفحه بندی
$paged_start = $paged_middle - 4;

//ایجاد لینک صفحه نخست
if($page > 1){
//اگر صفحه درخواستی بزرگتر از 1 بود
$paged_result = '<div class="paged-link"><a href="index.php?page=1" title="صفحه نخست">نخست</a></div>'."\n";
}
//غیر فعال کردن لینک صفحه نخست اگر صفحه درخواستی برابر 1 بود
else{
$paged_result = '<div class="paged-link-off">نخست</div>'."\n";
}

//ایجاد لینک صفحه قبلی
if($page > 1){
//محاسبه لینک صفحه قبلی
$paged_perv = $page - 1;
//ایجاد لینک صفحه قبلی
$paged_result .= '<div class="paged-link"><a href="index.php?page='.$paged_perv.'" title="صفحه قبلی">قبلی</a></div>'."\n";
}
//غیر فعال کردن لینک صفحه قبلی اگر صفحه انتخابی برابر 1 بود
else{
$paged_result .= '<div class="paged-link-off">قبلی</div>'."\n";
}

//ایجاد لینک صفحات میانی، شروع از دو شماره قبل
for ($i=$paged_start-2; $i<=$paged_middle; $i++){
//ایجاد لینک در صورتی که صفر، منفی یا از آخرین صفحه بیشتر نباشد
if ($i > 0 && $i <= $paged_last){
//در حالت انتخاب شده
if($i == $page){
$paged_result .= '<div class="paged-link-selected"><a href="index.php?page='.$i.'" title="صفحه '.$i.'">'.$i.'</a></div>'."\n";
}
//در حالت عادی
else{
$paged_result .= '<div class="paged-link"><a href="index.php?page='.$i.'" title="صفحه '.$i.'">'.$i.'</a></div>'."\n";
}
}
}

//نمایش لینک صفحات بعدی
if($page <= $paged_last - 1){
//محاسبه لینک صفحه بعدی
$paged_next = $page + 1;
//ایجاد لینک صفحه بعدی
$paged_result .= '<div class="paged-link"><a href="index.php?page='.$paged_next.'" title="صفحه بعدی">بعدی</a></div>'."\n";
}
//غیر فعال کردن لینک صفحه بعدی اگر صفحه انتخابی برابر صفحه آخر بود
else{
$paged_result .= '<div class="paged-link-off">بعدی</div>'."\n";
}

//لینک صفحه آخر
if($page <= $paged_last - 1){
$paged_result .= '<div class="paged-link"><a href="index.php?page='.$paged_last.'" title="صفحه آخر">آخر</a></div>'."\n";
}
//غیر فعال کردن لینک صفحه آخر اگر صفحه انتخابی برابر صفحه آخر بود
else{
$paged_result .= '<div class="paged-link-off">آخر</div>'."\n";
}

//اطلاعات صفحات
$paged_result .= '<div class="paged-link-info">&raquo; صفحه: '.$page.' از '.$paged_total.'</div>'."\n";
//خروجی
echo $paged_result;
}
else{
echo 'صفحه ای وجود ندارد!'."\n";
}

//پایان اتصال
$close = mysql_close($connect);
?>

</div>




<?php include ('sidebarl.php'); ?>



<?php include ('footer.php'); ?>

omidabedi
چهارشنبه 04 دی 1392, 18:18 عصر
کد رو نخوندم
اما برای مطالب باید دسته بندی ایجاد کنی
و هر مطلبی رو به یک دسته بندی اختصاص بدی اینجوری وقتی روی هر دسته بندی کلیک کردی باید مطلب مربوط رو بیاره.
در دیتابیس باید یه جدول برای دسته بندی ها ایجاد کنی (ای دی مهم است)
و جدول دیگر برای نگهداری موضوعات مرتبط با دسته بندی (ای دی محتوا + ای دی دسته بندی)
و بعد کوئری رو مینویسی مثلا c# ای دی 5 هست
تو هم توی کوئریت از جدول نگهداری موضوعات هرچی ای دی محتوا که دسته بندی 5 هستن رو میکشی بیرون محتواشونو از جدول محتوا میکشی بیرون و نمایش میدی
یکم گیج میشی اما خوب بخون میفهمی
اگر نگرفتی بگو تا با مثال بگم اما اول خودت بخون خوب

yasin5
چهارشنبه 04 دی 1392, 18:24 عصر
ممنون میشم اگر با مثال توضیح بدید اگر در مورد ادامه مطلب پست هایی که گذاشته می شوند هم راهنمایی بفرمایید

omidabedi
چهارشنبه 04 دی 1392, 18:36 عصر
ممنون میشم اگر با مثال توضیح بدید اگر در مورد ادامه مطلب پست هایی که گذاشته می شوند هم راهنمایی بفرمایید

مشکلت بیشتر بر میگرده به طراحی db


content ///name of the table
id content
40 اشنايي با سي شارپ
41 اشنايي با پي اچ پي
42 اشنايي با سي
43 توابع مهم پي اچ پي
category ///name of the table
cat_id cat_name
1 سي شارپ
2 پي اچ پي
3 سي

category_index ///name of table
cid(has relation with cat_id) pid(has relation witg content id)
1 40
2 41
3 42
2 43




این یک شمای ساده ای از دیتابیست

کوئری هاتو بر اساس جدول category_index مینویسی و بر اساس pid جدول محتواهایی رو با دسته بندی یکسان پیدا مکنی
///////
برای ادامه ی مطلب هم توی گوگل permalink رو سرچ کن