Система за новини + достъп как предлагате да я направя

NoName

Registered
правя една система за Статии но проблема е че не всеки потребител ще има право до дадена статия а щя трябва да си я праща
мислех да направя следното
в една таблица да запиша следното
ид-на-статията | ид на потребителя
и така когато потребителя Иван иска да види статията се проверява дали
статия с ИД 11 има достап потребител Иван с ид 23 промерно

така ли да го направя някак ви идеи
 
А по какво разбираш, че Иван има право да разглежда статията?
И най важното кой и как определя кой коя статия има паво да вижда.
Защо Иван има право пък Драган няма?
 
правя си една форма с която въвеждам в БД ид на потребителя и ид на статията
така когато потребителя иска да влезе в статията скрипта проверява дали ИД-то на потребителя е записано за ИД-то на статията
надявам се ме разбра
 
Ми да..
Така става но пак не ми е ясно защо ще ограничаваш потребителите.

Така само ще се измъчиш да даваш права на всеки по отделно за
най различни статии.
Имаш 100 статии и 100 потребителя.
Това прави няколко хиляди възможности дали потребител x има право да гледа статия y.
Това ми е интересно.
Трябва да има причина някаква оради която еди кой си да може да разглежда или да не разглежда статията.

Така ще може скрипта да решава сам дали даден потребител
да гледа дадена статия.
Примерно статия 15 може да се разглежда от група"Новини" .
Група "Новини" е от 50 усер-а примерно.
Срещу ID на статията задаваш кои групи могат да я гледат.
Нещо такова.
Не мисля, че е удачно за всеки user по отделно да попълваш какво има и какво няма право да гледа.

Може докато пишеш скриптовете да ти дойде някаква друга идея.
Трябва да намалиш писането в базата данни (ръчно) до минимум.
 
и аз първоначално мислех да е от определена група но човка за които правя сайт иска някои статии да са платени и така за всяка статия да се плаща ако направя група примерно ще вижда всичките статии които са платени и нестава
а потербителите ще са много статите също да речем 2-3 хиляди и още 400 500 статии ще имали проблем с БД ?
 
преработих един твои скрипт ама нещо неми дава резултати

Код:
<?

$newsid=$_GET['artikle'];
if ($newsid=='')
{exit;}
$user="root";
$password="";
$database="mynews";
mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");

$query="SELECT * from news where id like '$newsid'";
$result=mysql_query($query);


$num=mysql_numrows($result);
mysql_close();
$i=0;
while ($i < $num) {
$title=mysql_result($result,$i,"title");
$heading=mysql_result($result,$i,"heading");
$img=mysql_result($result,$i,"img");
$content=mysql_result($result,$i,"content");
$avtor=mysql_result($result,$i,"avtor");
$data=mysql_result($result,$i,"data");
$plat=mysql_result($result,$i,"plat");
?>
<div>
<div><?php $title ; ?></div>
<div><?php $heading; ?></div>
<div><?php $title ; ?></div>
</div>
<?
$i++;
}
?>

ето http://212.56.3.67/news/news.php?artikle=23
ако имаш време хвърли един поглед, никакви резултати неми изважда
 
Да мерси така стана
сега имам още няколко въпроса
защо така неми излиза картинката
http://212.56.3.67/news/news.php?art=26

код
Код:
<?

$newsid=$_GET['art'];
if ($newsid=='')
{exit;}
$user="root";
$password="";
$database="mynews";
mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");

$query="SELECT * from news where id like '$newsid'";
$result=mysql_query($query);


$num=mysql_numrows($result);
mysql_close();
$i=0;
while ($i < $num) {
$title=mysql_result($result,$i,"title");
$heading=mysql_result($result,$i,"heading");
$img=mysql_result($result,$i,"img");
$content=mysql_result($result,$i,"content");
$avtor=mysql_result($result,$i,"avtor");
$data=mysql_result($result,$i,"data");
$plat=mysql_result($result,$i,"plat");
?>
<div class="contect">
  <h1><?php echo $title ; ?></h1>
  <div class="divimg"><a href="<?php echo $img;?>" ><img src="<?php echo $img;?>" border="0"  style="width:120px; height:120px"/></a></div>
  <?php echo $content ?>
</div>
<div class="foot">Публикувано на <?php echo $data;?> от <?php echo $avtor; ?></div>
<?
$i++;
}
?>

и втория ми въпрос е как да направя така че след като на една страница изкарам 20 статии искам да има бутон "страница 2" кадето да са статии от 20 до 40 и т.н.т
предполагам че се прави заявка limit 20,40
но как ще се направи само да се появява линк към страниците в зависимост от броя на новините така след време може да станат 50 страници :)
 
ам за втория въпрос прегледай тази тема:
http://www.web-tourist.net/forum/viewtopic.php?t=1496
малко по-надолу.
даже има 2 кода.
В момента немога да видя за 1вия проблема ама провери какво съдържа $img
дали пътя е правилен и тн.
 
да и с това горното се оправих сега пак друг въпрос опитвам се да сложа това за ковто говорих в първите постове
скрипта да проверява дали Потребителя има достъп до дадената стария
етого скрипта
<?
$newsid=$_GET['art'];
if ($newsid=='')
{exit;}

#заявка за намеране ИД на потребителя
$user1="root";
$password1="";
$database1="phpbb";
$link1=mysql_connect(localhost,$user1,$password1);
$db1=mysql_select_db($database1) or die( "Unable to select database");
$query1="SELECT user_id FROM phpbb_user where username like '$potrebitel'";
$userid=mysql_query($query1);

mysql_close();

#извличане на съдарцанието на новината
$user="root";
$password="";
$database="mynews";
$link=mysql_connect(localhost,$user,$password);
$db=mysql_select_db($database) or die( "Unable to select database");
$query="SELECT id, title, heading, img,content, avtor, data, plat FROM news where id like '$newsid'";
$result=mysql_query($query);
$row=mysql_fetch_row($result);

$n_id=$row[0];
$title=$row[1];
$heading=$row[2];
$img=$row[3];
$content=$row[4];
$avtor=$row[5];
$data=$row[6];
$plat=$row[7];


$query3 = mysql_query("SELECT * FROM dostap where user_id like '$userid' and news_id like '$n_id'", $link);
$stoinost = mysql_num_rows($query3);





mysql_close();


#резултати
if ($plat== ne )
echo ("<div class='contect'>
<h1>$title</h1>
<div class='divimg'><a href='$img' ><img src='$img' border='0' style='width:120px; height:120px'/></a></div>
$content
</div>
<div class='foot'>Публикувано на $data от $avtor</div>");


else
if ($plat=="da" and $stoinost > 0 )
echo("<div class='contect'>
<h1>$title</h1>
<div class='divimg'><a href='$img' ><img src='$img' border='0' style='width:120px; height:120px'/></a></div>
$content
</div>
<div class='foot'>Публикувано на $data от $avtor</div>");


else
if($plat=="da" and $stoinost == 0 )
echo("нямате достъп до тази страница");
?>

<?
if (isset($HTTP_SESSION_VARS['potrebitel']))
{
$potrebitel=$HTTP_SESSION_VARS['potrebitel'];

}
else
{
echo " GO GO";
}
?>
</div>

<div class="right">
<?
if (isset($HTTP_SESSION_VARS['potrebitel']))
{
$potrebitel=$HTTP_SESSION_VARS['potrebitel'];

if (isset($HTTP_SESSION_VARS['vip']))
{
$potrebitel=$HTTP_SESSION_VARS['vip'];

echo "<br /><a href='form.php'>Добави Статия</a><br/>"; }

else { echo ""; }

echo "<br /><a href='logout.php'>Изход [ $potrebitel ]</a>";
}
else
{

echo "
<FORM ACTION='login.php' METHOD=POST>
Потребител:

<INPUT TYPE='text' NAME='potrebitel' value=''><br>


Парола:

<INPUT TYPE='password' NAME='pas'><br>




<INPUT TYPE=submit VALUE='ВХОД'>
</FORM>";
echo"<a href='http://212.56.3.67/phpBB2/profile.php?mode=register'>Регистрация</a><br>";
echo"<a href='http://212.56.3.67/phpBB2/profile.php?mode=sendpassword'>Забравена парола</a>";
}
?>

обаче вмомента ми дава че нямам достъп до тази страница
http://212.56.3.67/news/art.php?art=28

поребителя mute е аднат в таблицата dostap
user_id news_id
2 28
 
Добре ако направя още едно поле в таблицата с Статиите

примерно полетат стават:

ИД , ЗАГЛАВИЕ , ТЕКСТ , ДАТА , ПЛАТЕНА , АВТОР , ПРАВА

в това ПОЛЕ записвам Номерата на потребителите които са си платили за статиите

обаче тук изниква въпросът дали може да стане следната заявка
select * from tablica where $USERID like 'ПРАВА' "
$userid е номера на потребителя примерно 25
но ако в полето са записани номерата по следния начин
23 342 43 90 3432 25
ще дадели някакъв резулат , аз си мисля че няма , имали начин да проверява по този метод
 
Трябва да потърсиш литература за релационни бази данни.
Как се използват.
Това не е просто база в която има данни.
Не си го представяй като една таблица в която се съхраняват данни и
ти само трябва да ги извлечеш.


Нямам време да напиша един урок за за
да схванеш идеята НО...

Имаш две или три таблици (или 100) .
В едната таблица име user имаш полета:

user_id -
user_name
user_mail
user_pass
и т.н.


таблица statia:
statia_id - (1,2,3,4,5,6...)
statia_status - платена ли е или не (стойност 1 или 2)
statia_avtor - id на автора (1,2,3,4,5,6...)
statia_data - дата на публикуване
statia_zaglavie - заглавие


таблица vip_user:
id - (1,2,3,4,5,6...)
statia_id - id на статията
user_id -ид на usera който може да я чете.

Интересна е 3-тата таблица.
ТАм се съхраняват данните за това "кой коя статия има право да чете".

Тя ще изглежда така:
id --- statia_id----user_id
1 --- 11 --- 3
2 --- 11 --- 4
3 --- 12 --- 3
4 --- 15 --- 3
5 --- 11 --- 6


Както виждаш статия с id 11 могат да я четат трима user-a (усер-и с
id-ta 3,4,6).
Отделно пък се вижда, че user с id=3 меже да чете статии с id-ta
11,12 и 15) .

Може да сверяваш по всякакъв начин.
Нали разбираш каква е разликата между твоята таблица и тези три таблици.
Достатъчно е да добавиш в таблицата vip_user следното:
statia_id----user_id
16 --- 6

и веднага ще стане ясно че статия с id-16 може да се чете от усер с ID 6.

Може да направиш проверка примерно :
колко user-a имат право да четат статия ид=222.
Или усер ид=45 колко и кои статии има право да чете.





Това е само примерно...

И какво следва.

В първата таблица са данните за user-a.
Във втората данните за статията.
В третата данните за "коя статия от кои усер може да се чете".


За да извличаш данни от тези таблици ще се наложи да ги обединяваш.
Може да обединиш 2,3, 4 и т.н. броя таблици.

И примерно искаш да разбереш дали потребител с user_id=6 има право да чете статия с statia_id=12.

Заявка:
mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$query = "SELECT * from user,vip_user where user.user_id=vip_user.user_id and vip_user.statia_id like '12' and user.user_id like '6' ";
$result=mysql_query($query);
$num=mysql_num_rows($result);

if ($num>0)
{echo "user_id=6 има право да чете статията statia_id=12";}



Може и така:
mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$query = "SELECT * from user,vip_user where user.user_id=vip_user.user_id and vip_user.statia_id like '12' and user.user_name like 'bobi' ";
$result=mysql_query($query);
$num=mysql_num_rows($result);

if ($num>0)
{echo "user_name=bobi има право да чете статията statia_id=12";}




Ако можеш направи трите таблици както съм показал.
Направи подобни полета и аз ще помагам със заявките.
 
ами аз съм ги направил :)
ето ги
таблица NEWS
таблица DOSTAP

а таблицата с Усери е тази от пхпбб2 phpbb_users

горе долу разбрах за какво става въпрос в горния ти пост
 
mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$query = "SELECT * from phpbb_users,DOSTAP,NEWS where phpbb_users.user_id=DOSTAP.user_id and DOSTAP.news_id=NEWS.id and
DOSTAP.news_id like '28' and phpbb_users.user_id like '2' ";
$result=mysql_query($query);
$num=mysql_num_rows($result);

if ($num>0)
{
$potrebitel =mysql_result($result,0,"phpbb_users.username");
$novina=mysql_result($result,0,"NEWS.title");

echo "$potrebitel има право да чете статията $novina";


}



Моля те пробвай този код.
Кажи какво ти дава, защото е много дълъг и може да съм омазал нещо
като пиша наизуст без да пробвам.
 
Казаха ми и друг начин
В таблицата Статии се прави още едно поле в което се записват ИД-на потребителя които има право да чете статията

и после
$query = mysql_query("SELECT * FROM statii WHERE id like $id )
$row = mysql_fetch_array($query)

$users = explode( " ", $row['users']);

if (in_array( $USERID , $users)) { "Имате права" }
else { echo "Нямате Права"; }

според теб кое ще е по добре да се ползва

ЕДИТ: сега ще пробвам горния код, само да преместя таблиците в базатаданни на пхпбб защото сам ги направил в отделни БД
 
mute каза:
Казаха ми и друг начин
В таблицата Статии се прави още едно поле в което се записват ИД-на потребителя които има право да чете статията

Твърдо не.
Не се прави така.
Много потребители може да имат право да четат тази статия.
Нали това обяснявам.
Ако имаш поле:
id-----title-----potrebitelisprava
1 ----загл.---- 2,3,4,5,6,7,8,9,11

това как ще стане.
Не.
Може 50000 потребителя да имат право да я четат тази статия и да са си платили.
Как си представяш полето potrebitelisprava. :)
 
И друго.
Ми ако искаш да разбереш поребител с id 15 колко статии има право да чете?
Точно това е грешно ползване на база данни.
Недей да тръгваш така, защото аз още си патя от лошо проектиране на базата данни на този сайт.
 
Да стана това което трябваше
сега мисля че ще мога да си дообработя скрипта и сам мерси много
и наистина тряя да оправя тея БД че правя по 213 завки след като моеж само 1 ;)
 
Проработи ли заявката?
Това ще е чудо.
БЕз тест да не допусна грешка. :shock:
 
admin каза:
Проработи ли заявката?
Това ще е чудо.
БЕз тест да не допусна грешка. :shock:
Работи ;)
сега е мои ред да го довърша мисля че няма да имам проблеми ако има нещо ще питам и пак благодаря
 

Back
Горе