Jump to content

[Resolvido] Exibindo dados dos registros da tabela


Recommended Posts

Posted

Antes de postar minha duvida, vou explicar e sem o mais claro possivel para entederem minha aplicação:

Estou montando um sistema de artigos/tutoriais para ser integrado ao sistema de fóruns phpBB3, nesse sistema eu posso ver a lista de artigos, enviar um novo artigo e ver os artigos individualmente.

A parte que envia os artigos para o banco de dados, funciona perfeitamente, também funciona a listagem de todos os registros de artigos na tabela.

A única coisa que não consegui fazer funciona é a exibição individual dos registros. Por exemplo, para ver o artigo de id 1, vou a seguinte url: localhost/page.php?mode=view&id=1

Só que ao ir a essa URL, é exibido todos os registros e não apenas o 1, eu quero ver atraves dos links, cada informação de cada registro individualmente. Deu para entender? A página irá mostrar o titulo do artigo, descrição, categoria, autor e o conteudo do artigo. Segue abaixo o codigo PHP:

<?php
/**
*
* @package phpBB3
* @version $Id$
* @copyright © 2012 Vinny
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
include ($phpbb_root_path . 'includes/message_parser.' . $phpEx);
include ($phpbb_root_path . 'includes/functions_user.' . $phpEx);


// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('mods/kb_mod');

$mode = request_var('mode', '');
$submit = (isset($_POST['submit'])) ? true : false;

$article_id = request_var('article_id', 0);
$article_subject = request_var('article_subject', '', true);
$article_author = request_var('article_author', '', true);
$article_desc = request_var('article_desc', '', true);
$article_cat = request_var('article_cat', '', true);
$article_content = request_var('article_content', '');


$error = $row = array();
$current_time = time();

//Settings
$uid = $bitfield = $options = '';
$allow_bbcode = $allow_urls = $allow_smilies = true;
$article_content = utf8_normalize_nfc(request_var('article_content', '', true));
generate_text_for_storage($article_content, $uid, $bitfield, $options, $allow_bbcode, $allow_urls, $allow_smilies);

$template->assign_vars(array(
'U_KB_SUBMIT' => append_sid("{$phpbb_root_path}kb/artigo.$phpEx", 'mode=submit'),
'U_KB_REPORT' => append_sid("{$phpbb_root_path}kb/artigo.$phpEx", 'mode=report'),
'U_KB_ADM' => append_sid("{$phpbb_root_path}kb/artigo.$phpEx", 'mode=adm'),
));

$sql_ary = array(
'article_id' => $article_id,
'article_subject' => $article_subject,
'article_author' => $article_author,
'article_desc' => $article_desc,
'article_cat' => $article_cat,
'article_content' => $article_content,
'bbcode_uid' => $uid,
'bbcode_bitfield' => $bitfield,
'create_time' => (int) time(),
);


switch ($mode)
{
case 'submit':
$l_title = ($user->lang['KB_SUBMIT']);
$template_html = 'kb/submit_article.html';

$s_action = append_sid("{$phpbb_root_path}kb/artigo.$phpEx", "mode=submit");
$s_hidden_fields = '';
$form_enctype = '';
add_form_key('postform');

//Settings
$uid = $bitfield = $options = '';
$allow_bbcode = $allow_urls = $allow_smilies = true;
$article_content = utf8_normalize_nfc(request_var('article_content', '', true));
generate_text_for_storage($article_content, $uid, $bitfield, $options, $allow_bbcode, $allow_urls, $allow_smilies);

$cat_list = '';
$cat_list .= '<option value="' . $user->lang['KB_CAT_GENERAL'] . '">' . $user->lang['KB_CAT_GENERAL'] . '</option>';
$cat_list .= '<option value="' . $user->lang['KB_CAT_MOD'] . '">' . $user->lang['KB_CAT_MOD'] . '</option>';
$cat_list .= '<option value="' . $user->lang['KB_CAT_STYLE'] . '">' . $user->lang['KB_CAT_STYLE'] . '</option>';
$cat_list .= '<option value="' . $user->lang['KB_CAT_MISC'] . '">' . $user->lang['KB_CAT_MISC'] . '</option>';

// Start assigning vars for main posting page ...
$template->assign_vars(array(
'S_CAT_LIST' => '<select name="article_cat" id="article_cat">' . $cat_list . '</select>',
'S_FORM_ENCTYPE' => $form_enctype,
'S_POST_ACTION' => $s_action,
'S_HIDDEN_FIELDS' => $s_hidden_fields,
'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '',
));

// Request login
if ($user->data['user_id'] == ANONYMOUS)
{
login_box('', $user->lang['LOGIN']);
}

add_form_key('postform');
if ($submit)
{
if (!check_form_key('postform'))
{
trigger_error('FORM_INVALID');
}
}

switch ($submit)
{
case 'add':
if ($article_subject == '' || $article_content == '')
{
if ($article_subject == '' && $article_content == '')
{
$u_action = append_sid("{$phpbb_root_path}kb/artigo.$phpEx", 'mode=submit');
meta_refresh('5', $u_action);
trigger_error($user->lang['KB_NEED_DATA'] . '<BR /><BR /><a href="' . $u_action . '">' . $user->lang['KB_RETURN'] . '</a>');
}
elseif ($article_subject == '')
{
trigger_error($user->lang['KB_NEED_SUBJ'] . back_link($this->u_action));
}
elseif ($article_content == '')
{
trigger_error($user->lang['KB_NEED_CONTENT'] . back_link($this->u_action));
}

}
else
{
$db->sql_query('INSERT INTO ' . ARTICLES_TABLE .' ' . $db->sql_build_array('INSERT', $sql_ary));
trigger_error($user->lang['KB_ARTICLE_CREATED']);
}
break;
}

break;

case 'report':
$l_title = ($user->lang['KB_REPORT']);
$template_html = 'kb/report_article.html';

// Request login
if ($user->data['user_id'] == ANONYMOUS)
{
login_box('', $user->lang['LOGIN']);
}
break;

case 'view':
// Shows the articles in the System
$sql = 'SELECT article_id, article_subject, article_author, article_cat, article_desc, article_content, bbcode_uid, bbcode_bitfield
FROM ' . ARTICLES_TABLE . '
WHERE article_id >= 0
';
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{

$content = nl2br($row['article_content']);
$content = generate_text_for_display($row['article_content'], $row['bbcode_uid'], $row['bbcode_bitfield'], 7);
$content = smiley_text($content);
$page_title = $row['article_subject'];

$template->assign_block_vars('article',array(
'ARTICLE_ID' => censor_text($row['article_id']),
'ARTICLE_SUBJECT' => censor_text($row['article_subject']),
'ARTICLE_AUTHOR' => censor_text($row['article_author']),
'ARTICLE_DESC' => censor_text($row['article_desc']),
'ARTICLE_CAT' => censor_text($row['article_cat']),
'ARTICLE_CONTENT' => censor_text($content),
//'ARTICLE_LINK' => append_sid("{$phpbb_root_path}kb/artigo.$phpEx", 'mode=view&id=' .$row['article_id']),
));
}

$l_title = ($user->lang['VIEW_ARTICLE'] . ' - ' . $page_title);
$template_html = 'kb/article_body.html';

break;

case 'adm':
$l_title = ($user->lang['KB_ADM']);
$template_html = 'kb/adm_kb.html';

break;

default:
$l_title = ($user->lang['KB_INDEX']);
$template_html = 'kb/kb_index.html';

// List all articles in the System
$sql = 'SELECT article_id, article_subject, article_author, article_cat, article_desc, article_content, bbcode_uid, bbcode_bitfield
FROM ' . ARTICLES_TABLE . '
ORDER BY article_subject';
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{

$content = generate_text_for_display($row['article_content'], $row['bbcode_uid'], $row['bbcode_bitfield'], 7);

$template->assign_block_vars('article', array(
'ARTICLE_ID' => censor_text($row['article_id']),
'ARTICLE_SUBJECT' => censor_text($row['article_subject']),
'ARTICLE_AUTHOR' => censor_text($row['article_author']),
'ARTICLE_DESC' => censor_text($row['article_desc']),
'ARTICLE_CAT' => censor_text($row['article_cat']),
'ARTICLE_CONTENT' => $content,
'ARTICLE_LINK' => append_sid("{$phpbb_root_path}kb/artigo.$phpEx", 'mode=view&id=' .$row['article_id']),
));
}

break;
}

$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $l_title,
));

// Output page
page_header($l_title, false);

$template->set_filenames(array(
'body' => $template_html)
);

page_footer();

?>

A parte de exibição dos artigos fica dentro da case view, não sou expert em PHP e vou fazendo tudo no aprendizado, pois não sei se o codigo que pega os registros da tabela esta correto. E neste caso todo o codigo é integrado ao phpBB3. Espero que tenham compreendido a minha duvida.

Posted (edited)
$sql = 'SELECT article_id, article_subject, article_author, article_cat, article_desc, article_content, bbcode_uid, bbcode_bitfield
FROM ' . ARTICLES_TABLE . '
WHERE article_id >= 0
';

tens de filtrar pelo id que pretendes :

$sql = 'SELECT article_id, article_subject, article_author, article_cat, article_desc, article_content, bbcode_uid, bbcode_bitfield
FROM ' . ARTICLES_TABLE . '
WHERE article_id = '.(int)$_GET['id'];

PS : esta é uma dúvida de SQL e não de PHP

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

Tópico movido de PHP para MySQL (para um local que faz mais sentido...)

Edited by brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.