PDA

View Full Version : Showing data from the database


HMBeaty
12-22-2011, 02:14 AM
So, I've spent the last 5 hours rewriting an old modification, making something new out of it, and I am now stuck at a point where I don't know what to do next lol

Basically, I made a random quote database (and it works too :D (I think)), I just need to find out how to show the quote and the author on the forum side now. This is actually my first time making something this extensive in the AdminCP :eek:

Anyway, upon installation, I've made it so it'll add predefined quotes to the database, which looks something like:
$db->hide_errors();

$db->query_write("CREATE TABLE IF NOT EXISTS `" . TABLE_PREFIX . "usml_quotesdb` (
`quoteid` int(10) NOT NULL auto_increment,
`author` varchar(50) NOT NULL,
`quote` varchar(350) NOT NULL,
PRIMARY KEY (`quoteid`)
)");

$db->query_write("INSERT INTO `" . TABLE_PREFIX . "usml_quotesdb` (`quoteid`, `author`, `quote`) VALUES
(1, 'Author1', 'Quote1'),
(2, 'Author2', 'Quote2'),
(3, 'Author3', 'Quote3')
");

$db->show_errors();
Now, back to my original question. How do I display the quotes and the authors? I'm actually going to be showing these randomly (which I can figure out how to do), I just need the help to actually start getting them to display lol

Thanks in advance :D

HMBeaty
12-22-2011, 02:20 AM
Here's the screenshot of what I have so far :D

https://vborg.vbsupport.ru/attachment.php?attachmentid=135216&stc=1&d=1324523992

Lynne
12-22-2011, 02:52 AM
Are you asking for help displaying these on the forums and are wondering how to put them there?

HMBeaty
12-22-2011, 03:03 AM
Are you asking for help displaying these on the forums and are wondering how to put them there?
Yes. Not sure exactly where I'm going to put this yet, (probably above the forums in forumhome) but I'd like to show it like this...

If the id = 1, then it shows "Quote 1 - Author 1", if the id = 2, then it shows "Quote 2 - Author 2", etc, etc.

Lynne
12-22-2011, 05:01 PM
So you do the query for the quote..
$myquote = $db->query_first("SELECT quote, author FROM " . TABLE_PREFIX . "usml_quotesdb WHERE quoteid = '" . $somevar . "'");

Do a query_first and then you can use the variables directly...
$newTemplate = vB_Template::create('quotetemplate);
$newTemplate->register('myquote', $myquote);
$newTemplate->render();

Now in the quotetemplate, you may use:

{vb:raw myquote.quote}
{vb:raw myquote.author}


Is that what you were asking?

HMBeaty
12-22-2011, 06:25 PM
I think so. I've attached the file to show the contents of what I currently have. Now my question is, if I use:
$myquote = $db->query_first("SELECT quote, author FROM " . TABLE_PREFIX . "usml_quotesdb WHERE quoteid = '" . $somevar . "'");is that going to show the quotes one at a time, randomly?

(I'm not too experienced with queries at all :o. Just trying re-create a different mod to do what I want :D)

EDIT: oops, forgot to attach the file lol. Anyway, this is going to be located at /admincp/quotesdb.php

<?php
/*================================================= =====================*\
|| ################################################## ################## ||
|| # U.S. Military Life # ||
|| # Random Quotes 1.0.0 # ||
|| # ---------------------------------------------------------------- # ||
|| # Copyright ? U.S. Military Life 2011 # ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------------------------------------------------------- # ||
|| # http://www.USMilitaryLife.com # ||
|| ################################################## ################## ||
\*================================================ ======================*/

// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### PRE-CACHE TEMPLATES AND DATA ######################
$phrasegroups = array();

$specialtemplates = array();

$globaltemplates = array();

$actiontemplates = array();

// ########################## REQUIRE BACK-END ############################
require_once('./global.php');
require_once(DIR . '/includes/adminfunctions_template.php');

if (empty($_REQUEST['do']))
{
$_REQUEST['do'] = 'main';
}

if ($_REQUEST['do'] == 'main')
{
print_cp_header("[USML] Random Quotes");

print_form_header('quotesdb', 'manage');
print_table_start();
print_table_header("Quotes", 4);
print_cells_row(array("ID", "Author", "Quote", "Action"),1,0,1);

$quotes = $vbulletin->db->query("SELECT * FROM ".TABLE_PREFIX."usml_quotesdb ORDER BY quoteid ASC");
while ($row = $vbulletin->db->fetch_array($quotes))
{
$row[quoteid] = htmlspecialchars_uni($row['quoteid']);
$row[author] = htmlspecialchars_uni($row['author']);
$row[quote] = htmlspecialchars_uni($row['quote']);

print_cells_row(array("$row[quoteid]","$row[author]","$row[quote]","<a href='?do=editquote&quoteid={$row['quoteid']}'>Edit</a>&nbsp;&nbsp;<a href='?do=quotedel&quoteid={$row['quoteid']}'>Delete</a>"),0,0,1);
}

print_table_footer();

print_table_footer();
print_form_header('quotesdb', 'newquote');
print_table_header("Add a new quote", 2);
print_input_row("Author", 'newqdbauthor');
print_textarea_row("Quote", 'newqdbquote');
print_submit_row("$vbphrase[save]");
print_table_footer();

print_cp_footer();
}

if($_POST['do']=="newquote")
{
$newauthor = $vbulletin->input->clean_GPC('p', 'newqdbauthor', TYPE_STR);
$newauthor =& $db->escape_string($vbulletin->GPC['newqdbauthor']);

$newquote = $vbulletin->input->clean_GPC('p', 'newqdbquote', TYPE_STR);
$newquote =& $db->escape_string($vbulletin->GPC['newqdbquote']);

$db->query_write("INSERT INTO `" . TABLE_PREFIX . "usml_quotesdb` VALUES('','".$newauthor."','".$newquote."')");
define('CP_REDIRECT', 'quotesdb.php?do=main');
print_stop_message('egr_succces');
}

if ($_REQUEST['do'] == 'quotedel')
{
$quoteid = $vbulletin->input->clean_GPC('g', 'quoteid', TYPE_UINT);

$db->query_write("DELETE FROM `" . TABLE_PREFIX . "usml_quotesdb` WHERE quoteid=$quoteid");
define('CP_REDIRECT', 'quotesdb.php?do=main');
print_stop_message('egr_succes');
}

if ($_REQUEST['do'] == 'editquote')
{
$rowid = $vbulletin->input->clean_GPC('g', 'quoteid', TYPE_UINT);
$rowid =& $db->escape_string($vbulletin->GPC['quoteid']);

$quotedata = $vbulletin->db->query("SELECT * FROM `" . TABLE_PREFIX . "usml_quotesdb` WHERE quoteid='".$rowid."'");
$nu = $db->fetch_array($quotedata);

$quoteid[data] = htmlspecialchars_uni($nu['quoteid']);
$author[data] = htmlspecialchars_uni($nu['author']);
$quote[data] = htmlspecialchars_uni($nu['quote']);

print_cp_header("Edit Quote");
print_table_start();
print_form_header('quotesdb', 'editsave');
print_table_header("Edit Quote (id:$quoteid[data])", 2);

echo "<input type='hidden' name='quoteid' value='".$quoteid['data']."'>";

print_input_row("Author", 'newauthor', "$author[data]");
print_textarea_row("Quote", 'newquote', "$quote[data]");

print_submit_row("$vbphrase[save]");

print_table_footer();
print_cp_footer();

define('CP_REDIRECT', 'quotesdb.php?do=main');
print_stop_message('egr_succes');
}

if ($_REQUEST['do'] == 'editsave')
{
$newqdbid = $vbulletin->input->clean_GPC('p', 'quoteid', TYPE_UINT);
$newqdbauthor = $vbulletin->input->clean_GPC('p', 'newauthor', TYPE_STR);
$newqdbquote = $vbulletin->input->clean_GPC('p', 'newquote', TYPE_STR);

$newqdbid =& $db->escape_string($vbulletin->GPC['quoteid']);
$newqdbauthor =& $db->escape_string($vbulletin->GPC['newauthor']);
$newqdbquote =& $db->escape_string($vbulletin->GPC['newquote']);

$db->query_write("UPDATE `" . TABLE_PREFIX . "usml_quotesdb` SET author='".$newqdbauthor."', quote='".$newqdbquote."' WHERE quoteid='".$newqdbid."'");

define('CP_REDIRECT', 'quotesdb.php?do=main');
print_stop_message('egr_succes');
}
?>

HMBeaty
12-22-2011, 10:43 PM
I think I found something that would work how I need.....
$myquote = $db->query_first("SELECT quote, author FROM `" . TABLE_PREFIX . "usml_quotesdb` ORDER BY rand() LIMIT 1");Although I'm not sure if
quoteidneeds to be in there as well or not...

--------------- Added 1324604070 at 1324604070 ---------------

Woohoo! I've got it working (I think)! Now to tidy everything up :D

One more question....the columns in the admincp (ID, Author, Quote, Action), is it possible to make those a fixed width?

Lynne
12-23-2011, 02:46 AM
The text areas are the size that you define for the <input> area.

Glad you got it working. :)

HMBeaty
12-23-2011, 02:53 AM
I mean the column width for the columns in the top table. Like, for example, maybe make the ID column 10px wide and the other Action column around 200px wide and I guess the others would expand with what room is left :)

--------------- Added 1324623736 at 1324623736 ---------------

Figured that out as well. Got the code from admincp/block.php :)

What I did was, above:
print_table_header("Quotes", 4);
I added:
print_column_style_code(array('width:50px', '', '', 'width:100px'));
Looks better now :D