PDA

View Full Version : Using vb to pull information from the database.


BBR-APBT
12-07-2009, 11:06 PM
Ohh Lynne ohh Lynne where could you be I need help with my PHP. LMAO

I am trying to pull information from the database using vBulletin's existing structure.

My only problem is it only pulls one result.


// ###### Check query returns result #####
$result = $db->query("
SELECT *
FROM " . TABLE_PREFIX . "glossary
WHERE LEFT(word,1)='$letter' ORDER BY word
");

// ##### Check if empty result #####
if (empty($result)) {
$dataresult = "1";
}
else {
$dataresult = "2";
}

// ##### Display by-letter #####
while ($row = $db->fetch_array($result,MYSQL_NUM)) {
$result .= "<tr><td class=\"dbtext\"><b>$row[1]</b></td><td class=\"dbtext\">$row[2]</td></tr>";
}


How would I put that into an array to show all?

I am using this to pull it in the template.
{vb:raw result}


Sorry for all the questions and thanks for any help.

winstone
12-07-2009, 11:23 PM
try:

// ##### Display by-letter #####
$i = 0;
while ($row = $db->fetch_array($result,MYSQL_NUM)) {
$result .= "<tr><td class=\"dbtext\"><b>$row[$i]</b></td><td class=\"dbtext\">$row[$i]</td></tr>";
$i++;
}

BBR-APBT
12-07-2009, 11:32 PM
That returned the number 30

winstone
12-08-2009, 12:04 AM
looking at your line again, it should be:
$output .= "<td class=\"dbtext\"><b>$row[$i]</b></td>";

don't use $result again there

and then you probably need to put <tr> tags in your templates

or you can do following

$output .= "<tr> <td class=\"dbtext\"><b>$row[$i]</b></td>"; //$i is 0 here
$i++;
$output .= "<td class=\"dbtext\"><b>$row[$i]</b></td> </tr>"; //$i is 1 here
$i++;

just so you know, the $output is not array and doesn't need to be one, additionally arrays start from 0 and not 1
if you want to declare something as an array, you can use $blabla = array(); see http://php.net/manual/en/language.types.array.php for details

also do some reading on php while loop and php operators

BBR-APBT
12-08-2009, 12:40 AM
I have two columns so yes the line is correct. One is the word one is the description. Currently it works just with only one line.

--------------- Added 1260241182 at 1260241182 ---------------

I figured it out I had the same var name used twice.