PDA

View Full Version : راهنمایی توی PHP



SONITAJ
یک شنبه 13 اسفند 1391, 10:40 صبح
سلام
میتونم چیزی شبیه این رو با php بنویسم.بهش چی میگن؟
تالار->زبان های اسکریپتی -> php
من هم میخوام توی وبم یه هم چین قسمتی داشته باشم ولی نمیدونم چیه وچه جوری نوشته میشه.
کسی میتونه کمکم کنه؟یابرام توضیح بده؟

MMSHFE
یک شنبه 13 اسفند 1391, 10:57 صبح
مواد لازم:
1- یک عدد دیتابیس
2- جدول categories با فیلدهای:
id (کلید اصلی و از نوع int)
name (از نوع varchar با طول 255)
parent (از نوع int)
3- وجود فیلد cat_id از نوع int در جدول مربوط به مطالب و ثبت id شاخه مربوط به مطلب در این فیلد
4- ثبت شاخه ها بصورتی که فیلد id هر شاخه والد، در فیلد parent شاخه فرزند ثبت شود و برای شاخه های اصلی فیلد parent برابر با صفر باشد
5- استفاده از تابع زیر برای نمایش مسیر مطلب:


<?php
function DisplayPath($cat_id) {
mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
$cat_id = mysql_real_escape_string($cat_id);
$category = query("SELECT * FROM `categories` WHERE (`id`='{$cat_id}') LIMIT 1");
$nav = '';
if($category && mysql_num_rows($category) > 0) {
$category = mysql_fetch_assoc($category);
do {
$nav = '<a href="' . URL . '/categories/' . $category['id'] . '/' . $category['name'] . '">' . $category['name'] . '</a> -&gt; ' . $nav;
$parent = mysql_real_escape_string($category['parent']);
$category = query("SELECT * FROM `categories` WHERE (`id`='{$parent}') LIMIT 1");
if($category && mysql_num_rows($category) > 0) {
$category = mysql_fetch_assoc($category);
}
} while(is_array($category));
// remove the last ->
$nav = mb_substr($nav, 0, mb_strlen($nav, 'utf-8') - 7, 'utf-8');
}
echo '<b>دسته بندی: </b>' . $nav . PHP_EOL;
}
?>

نکته: وقتی مطلب رو از دیتابیس میخونید، فیلد cat_id اون رو بعنوان پارامتر به این تابع بدین تا مسیر رو براتون نشون بده.

Tarragon
یک شنبه 13 اسفند 1391, 13:56 عصر
اینم شاید بتونه کمک کنه:

function breadcrumbs($separator = ' &raquo; ', $array = array(), $arrayaf = array(), $home = 'صفحه اصلی') {
global $_SERVER;
$breadpath = array_filter(explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)));
$base = (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/';
$breadcrumbs = Array("<a href=\"$base\">$home</a>");
$last = end($breadpath);
foreach ($breadpath AS $x => $crumb) {
$title = str_replace(Array('.php', '_'), Array('', ' '), $crumb);
$title = str_replace($array,$arrayaf, $title);
if ($x != $last)
$breadcrumbs[] = "<a href=\"$base$crumb\">$title</a>";
else
$breadcrumbs[] = $title;
}
return implode($separator, $breadcrumbs);
}

SONITAJ
یک شنبه 13 اسفند 1391, 16:11 عصر
این تابع رو باید توی صفحه MAIN.PHP درج کنم یاتوی فایل ارتباط باپایگاه داده؟

SONITAJ
جمعه 18 اسفند 1391, 22:44 عصر
سلام ببخشید جدول سوال بالا رو با بقیه جداولم توی یک پایگاه داده باشه مشکلی درست نمی کنه؟یا نه باید یک پایگاه داده جدا طراحی کنم؟ درضمن من مقاله ندارم بلکه میخوام صفحات محصولات رو نشون بده؟نیازی هست یه جدول جدا برای نام محصولات وزیر شاخه های اون بافیلد cat_id تعریف کنم؟اگربله چرا واگر خیر چرا؟
ممنونم.

MMSHFE
جمعه 18 اسفند 1391, 23:51 عصر
نه مشکلی پیش نمیاد. فرقی نداره که مقاله دارین یا محصول. من بطور کلی منطق قضیه رو توضیح دادم. شما یک جدول برای شاخه ها دارین و یک جدول هم برای محصولات که یک فیلد برای مشخص کردن شاخه هر محصول داره.