категории в система за страници

dunix

Registered
Как да добавя категорий към система за страници и след като избереш категория страницата да се показва единствено там?
 
Създаваш още едно поле в таблицата която записваш страниците като го озаглавяваш Category в него определяш от коя категория е.

След това създаваш таблица за категории, ID, Name.

Код:
CREATE TABLE `category` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM;

като зададеш категориите на всички страници извеждаш една заявка

Код:
mysql_query("SELECT * from STRANICI WHERE category="$_GET['cat']");

като ще извикваш категорията с ГЕТ линка трябва да бъде нещо от сорта на.

sajtati.com/stranici.php?cat=izvikanata kategoriq .

П.С.

Можеш да ползваш и този урок за да си защитиш GET от хакване.
 
До тук го направих. Сега искам да попитам как да го направя да изкарва от една категория всичките страници?

Премерно имам категория Игри и под нея да изкарва всички страници (като имена)
 
Колегата ти го е дал горе.
mysql_query("SELECT * from STRANICI WHERE category="$_GET['cat']");
 
Ами със заявката която ти дадох ще стане нещо такова.

$server = "localhost";
$dbuseraname = "username";
$dbpassword = "password";
$db_name = "dbname";
mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни");
@mysql_select_db($db_name) or die("Грешна база данни");

$result = mysql_query("SELECT * from ТАБЛИЦА WHERE category="$_GET['cat']");

while($row = mysql_fetch_array($result))
{
$id=$row['id'];
echp " ID na stranicata $id";
}

Всеки ред от таблицата извикваш със $row[името]; както е написано на примера.

За по-удобно избягваш echo и правиш следното :

<?
$server = "localhost";
$dbuseraname = "username";
$dbpassword = "password";
$db_name = "dbname";
mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни");
@mysql_select_db($db_name) or die("Грешна база данни");

$result = mysql_query("SELECT * from ТАБЛИЦА WHERE category='$_GET['cat']'");

while($row = mysql_fetch_array($result))
{
$id = $row['id'];
$ime = $row['ime'];
$stranica = $row['stranica'];
?>
ID - <? $id; ?>
Ime - <? $ime; ?>
Stranica - <? $stranica; ?>
<? } ?>

Обърни внимание на одебелените в червен цвят елементи.
По този начин можеш да си направиш HTML кода и стила на страницата както намериш за добре без да се притесняваш че ще ти излезе грешка от пхп при добавена кавичка по погрешка.

Ето ти го и комбинирано с функцията за защита на GET

<?
function str_check($str)
{
$check=(ereg("^([a-zA-Z0-9_]{1,100})$", $str)) ? TRUE : FALSE;
return $check;
}
if(str_check($_GET['cat']))
{
$server = "localhost";
$dbuseraname = "username";
$dbpassword = "password";
$db_name = "dbname";
mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни");
@mysql_select_db($db_name) or die("Грешна база данни");

$result = mysql_query("SELECT * from ТАБЛИЦА WHERE category='$_GET['cat']'");

while($row = mysql_fetch_array($result))
{
$id = $row['id'];
$ime = $row['ime'];
$stranica = $row['stranica'];
?>
ID - <? $id; ?>
Ime - <? $ime; ?>
Stranica - <? $stranica; ?>
<?
}
}
else
{
echo "hakerska namesa za stringa";
echo "<br>";
}
?>

А можеш да го направиш и по следния начин :

<?
function str_check($str)
{
$check=(ereg("^([a-zA-Z0-9_]{1,100})$", $str)) ? TRUE : FALSE;
return $check;
}
if(str_check($_GET['cat']))
{
$cat = $_GET['cat'];
$server = "localhost";
$dbuseraname = "username";
$dbpassword = "password";
$db_name = "dbname";
mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни");
@mysql_select_db($db_name) or die("Грешна база данни");

$result = mysql_query("SELECT * from ТАБЛИЦА WHERE category='$cat'");

while($row = mysql_fetch_array($result))
{
$id = $row['id'];
$ime = $row['ime'];
$stranica = $row['stranica'];
?>
ID - <? $id; ?>
Ime - <? $ime; ?>
Stranica - <? $stranica; ?>
<?
}
}
else
{
echo "hakerska namesa za stringa";
echo "<br>";
}
?>

Погледни пак удебелените елементи в червен цвят.
Правим $cat да е равно на $_GET['cat'] и вместо да поставяме ГЕТ в заявката просто поставяме $cat .

надявам се да съм ти бил полезен.
 
Аз успях да го направя така:

PHP:
<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />
<?php
include("config.php");
$category = 1;
if(isset($_GET['category']) and is_numeric($_GET['category'])) {
$category = intval($_GET['category']);
}
$result = mysql_query("SELECT c.name, n.name FROM news as n LEFT OUTER JOIN category as c ON n.category = c.id WHERE n.category = '".$category."'")
or die("Не може да изпълни заявката");
if(mysql_num_rows($result) > 0) {
while($row = mysql_fetch_array($result)) {
echo $row['title']. " в категорията: ". $row['name']."<br />";
}
} else {
echo "Няма резултати в тази категория.";
}
?>

но не ми трябва да ми излизат така.

Ето така искам да излизат категорийте:

92bdc4c9dfa28816.png

"име на категорията" - това са категорийте
"игра Х" - това са страниците към категорията
 
Ами от тук вече ще играеш със редовете и със стила на сайта примерно

<h1>$row[igra]</h1>
<div>$row[tekst]</div>

Аз ти дадох възможно най-простия код. от тук нататък трябва да експериментираш с кода. правиш един демо файл и започваш да пишеш.

Спрямо дизайна на сайта ти и спрямо редовете които имаш в таблицата.

Бих ти помогнал на драго сърце но за съжаление времето ме притиска.
Нека някой да помогне на момчето ако се затруднява.
 
на мен ми е трудно да изкарам менюто.

Като добавя страница към категорията от админ панела, тя да се добавя автоматично в категорията в менюто
 
Ами според мен за менюто е по-добре да си направиш една заявка която да ти извежда само резултатите от таблицата с категориите извикваш ги със $name = $row['name'];

и си правиш един линк
Код:
<a href="http://sajta.com/cat.php?cat=<? $name; ?>"><? $name; ?></a>
 
Ето това ми трябваше:

Код:
<?php
include "config.php";
$rs=mysql_query('SELECT * FROM category');
while($row=mysql_fetch_assoc($rs))
{
 echo $row['catname'].'<br/>';
 $id=$row['id'];
 $rs=mysql_query('SELECT * FROM news WHERE category='.$id);
 while($row2=mysql_fetch_assoc($rs))
 {
  echo '-' .$row2['name'].'<br/>';
 }
}
?>

но, нещо ми изкарва само от една категория страниците, а от другите не. Някой да има някакъв алтернативен варянт или да ми каже къде ми е грешката, че изкрва само от една категория (id=1 категорията)?
 
Код:
<?php
include "config.php";
$cname = null;
$rs=mysql_query('SELECT c.catname,n.name FROM news as n LEFT JOIN category AS c ON c.id=n.category order by c.catname');
while($row=mysql_fetch_assoc($rs))
{
    if($cname != $row['catname']){
        echo $row['catname'].'<br/>';
    }
    $cname = $row['catname'];
    echo "-" .$row['name']. "<br />";
}

Ето така става. :)
 

Back
Горе