Одобрение на запис

iCreatives

Registered
Здравейте,
От сега искам да се извиня, че не съм от най-компетентните!

В момента в сайта имам admin панел и мога да добавям уроци. За да имам достъп level трябва да ми е 3. Всичко е точно и си работи, но сега реших да дам право и на потребителите да могат да качват такива, естествено след одобрение от моя страна. Искам потребителите да имат форма като тази, която ще дам по-долу и в нея да записват урока. Урока да се запазва в DB, но само ако аз от admin панела съм цъккнал да се одобри той да се показва. Предполагам, че ще трябва да направя още един ред approved в таблицата tuts, но не притеснявам дали така ще трябва да одобрявам и уроците, които са добавени от мен (admin).

С този код добавям урока от админ панела:
PHP:
<?php 
include "../includes/config.php"; 
if($_POST['send']) 
{

$title = nl2br(addslashes(htmlspecialchars($_POST['title'])));
$text = nl2br(addslashes(htmlspecialchars($_POST['text'])));
$author = (htmlspecialchars($_POST['author']));

if($title == null || $text == null || $author == null)
    {
$error = "Попълнете всички полета!";
    }
else
    {
 $query = "INSERT INTO `tuts` SET `title`='$title', `text`='$text', author='$author'";
 mysql_query($query) or die(mysql_error()); 
    $check = "Урока е добавен, може да го прегледате.";
    }
}
else
{
}

?>
<form method='POST' action=''>
Заглавие:<br />
<input type='text' name='title' /><br/>
Урок: 
<br />
<textarea style="width:360px; height:200px;"  name='text'></textarea><br />
Автор:<br /><input type='text' name='author'/><br /><br />
<input type='submit' value='Добави' name='send'/>
</form>
<?php
if($error)
{
    print $error;
}
else
{
    print $check;
}
?>


При изкарването уроците минавт през един js скрипт и става така:

PHP:
<?php
include 'includes/config.php';
if(!session_is_registered(username))
{
echo "Трябва да си регистриран, за да видиш уроците!<div id='center_down'></div>";
}
else {
$query = mysql_query("SELECT * FROM `tuts` ORDER BY `id` ASC") or die(mysql_error());
while($row = mysql_fetch_assoc($query))
{   
    print "<div><div style=\"font-style: italic;\"><a href=\"#\" class=\"tut-preview\">".$row['title']."</a></div>";
    print "<div class=\"tutorial-cont\"> ".stripcslashes($row['text']) ;
    print "<br/><br/><strong> Автор: ".$row['author']."</strong><hr></div></div>";
	
}
mysql_free_result($query);
}
?>

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

Благодаря!
 
iCreatives каза:
Ако ми покажете и как мога да направя така, че потребителя да може да напише каквото си поиска на автор, но при клик на името да изпраща в неговия профил ще бъде супер.

Благодаря!

За автора там където въвеждаш урока него правиш така
$author = (htmlspecialchars($_POST['author']));

Ами така

$author = $_SESSION['username'];

А за одобряването правилно си помислил правиш си едно поле в таблицата tuts направимер с име active и когато се добави урока, урока да е active = 'ne' и когато го одобриш от админ панела полето да става на da и вече ще си извеждаш одобрените уроци така
PHP:
$sql = mysql_query("SELECT * FROM tuts WHERE active = 'da'") or die (mysql_error());
Надявам се си схванал горе доло това което се опитах да то обясня тъй като не съм много по обясненията :D
 
Явно не си ме разбрал правилно.... Аз искам да се пише име, но при клик после да води към профила на този, който го е качил.

Сега как ще стане добавянето в DB? Аз си мислех да го направя с INT стойности и примерно ако е 1 да се добавя, но и da или ne пак става. :)
 
кода за показване на уроците;
PHP:
<?php
include 'includes/config.php';
if(!session_is_registered(username)){
echo "Трябва да си регистриран, за да видиш уроците!<div id='center_down'></div>";
} else {
$query = mysql_query("SELECT * FROM `tuts` WHERE active='1' ORDER BY `id` ASC") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {   
    print "<div><div style=\"font-style: italic;\"><a href=\"#\" class=\"tut-preview\">".$row['title']."</a></div>";
    print "<div class=\"tutorial-cont\"> ".stripcslashes($row['text']) ;
    print "<br/><br/><strong> Автор: ".$row['author']."</strong><hr></div></div>";
        
}
mysql_free_result($query);
}
?>

кода за добавяне
PHP:
<?php 
include "../includes/config.php"; 
if($_POST['send']) {
$title = nl2br(addslashes(htmlspecialchars($_POST['title'])));
$text = nl2br(addslashes(htmlspecialchars($_POST['text'])));
$author = (htmlspecialchars($_POST['author']));
if($title == null || $text == null || $author == null) {
$error = "Попълнете всички полета!";
} else {
$query = mysql_query("INSERT INTO `tuts` SET `title`='$title', `text`='$text', author='$author', active='0'") or die(mysql_error()); 
$check = "Урока е добавен, може да го прегледате.";
}
} else {
}
?>
<form method='POST' action=''>
Заглавие:<br />
<input type='text' name='title' /><br/>
Урок: 
<br />
<textarea style="width:360px; height:200px;"  name='text'></textarea><br />
Автор:<br /><input type='text' name='author'/><br /><br />
<input type='submit' value='Добави' name='send'/>
</form>
<?php
if($error) {
    print $error;
} else {
    print $check;
}
?>

добави едно поле в tuts
[sql]
`active` int(100) NOT NULL DEFAULT '0',
[/sql]

След, което в админ панела си добави един файл за редактиране и от там прави update на полето active!
0 - урока е видим само за администратора
1 - урока е видим за всички

В админ панела ще изкараш неактивните уроци с тази заявка
PHP:
$query = mysql_query("SELECT * FROM `tuts` WHERE active='0' ORDER BY `id` ASC") or die(mysql_error());

Аз искам да се пише име, но при клик после да води към профила на този, който го е качил.
А, ако този потребител не съществува? Какво правим по въпроса?
 
Еми има лесно правят се всички нужни проверки.
Нека проверява дали въведеното име е същото като името, което се пази в сесията(това може да се премахне и направо вместо поле да се слага сесията с името на самия потребител)
Нека проверява дали съществува потребителя. Взима името му от сесията и прави проверка в главната таблица дали съществува такова име.

Други важни проверки не мисля, че има...
 
relax15pyt каза:
Еми има лесно правят се всички нужни проверки.
Нека проверява дали въведеното име е същото като името, което се пази в сесията(това може да се премахне и направо вместо поле да се слага сесията с името на самия потребител)
Нека проверява дали съществува потребителя. Взима името му от сесията и прави проверка в главната таблица дали съществува такова име.

Други важни проверки не мисля, че има...

Точно заради това е най-добре да се махне полето "потребител" и да се използва само сесията т.е. но автора на темата си знае най-добре как иска да му изглежда кода!

PHP:
<?php 
include "../includes/config.php"; 
if($_POST['send']) {
$title = nl2br(addslashes(htmlspecialchars($_POST['title'])));
$text = nl2br(addslashes(htmlspecialchars($_POST['text'])));
$author = $_SESSION['username'];
if($title == null || $text == null || $author == null) {
$error = "Попълнете всички полета!";
} else {
$query = mysql_query("INSERT INTO `tuts` SET `title`='$title', `text`='$text', author='$author', active='0'") or die(mysql_error()); 
$check = "Урока е добавен, може да го прегледате. ";
echo = "<script type='text/javascript'>document.location.href='profile.php?author=$author'</script>";
}
} else {
}
?>
<form method='POST' action=''>
Заглавие:<br />
<input type='text' name='title' /><br/>
Урок: 
<br />
<textarea style="width:360px; height:200px;"  name='text'></textarea><br /><br />
<input type='submit' value='Добави' name='send'/>
</form>
<?php
if($error) {
    print $error;
} else {
    print $check;
}
?>
 
А как точно ще стане това за одобряване и триене?
Мисля, че одобряването ще е с UPDATE и после му задавам SET
Триенето май беше с DELETE или?

Уча се... :oops:
 

Back
Горе