You are here: Re: PHP MYSQL QUESTION « All PHP « IT news, forums, messages
Re: PHP MYSQL QUESTION

Posted by Norman Peelman on 07/22/07 12:20

zach wrote:
> Rik wrote:
>> On Sun, 22 Jul 2007 07:46:10 +0200, zach <wackzingo@gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I'm struggling to figure something out. What I have are thousands of
>>> questions from 5 books of the bible in a database. The questions are
>>> labeled with the book name, chapter, verse and type of question as
>>> follows: X, B, G, A, M, R. I need to be able to select 11 questions
>>> of the G type, 5 of A, 1 M, 1 R, 1 X, AND 1 B. I need to select them
>>> all randomly and display them randomly. I want to give user the
>>> option to change the range of books and chapter from which the
>>> questions are drawn from and the number of each type they want.
>>>
>>>
>>> I have this mysql code:
>>>
>>> "SELECT * FROM questions WHERE book IN ('Galatians',
>>> 'Ephesians','Philippians') AND chapters IN ('G1', 'G2', 'G3', 'E1',
>>> 'E5', 'P1') type='G' ORDER BY RAND() LIMIT 11)"
>>
>>
>> Are you sure? I miss an ' AND ' before 'type'?
>> It should work IMHO, if it doesn't, ask in comp.databases.<name of
>> your db>
>> --Rik Wasmus
>
> Rick, your right, I should have copy and pasted but I was didn't feel
> like opening the document again.
>
> I added the 'AND' in there but notice how I run the same query but
> change the "type='G'" to "type='A'" and I change the number "LIMIT" to
> 5. I then use a 'while loop' with 'mysql_fetch_array() to print out the
> results to the screen. The problem I have is that I use a loop for each
> query run and the result is 11 of type='G' printed followed by 5 of
> type='A' printed to the screen, all in a row. I want the final result
> from all the six queries to be printed to the screen in random order.
>
>
> $sql = "SELECT * FROM questions WHERE book IN ('Galatians',
> 'Ephesians','Philippians') AND chapters IN ('G1', 'G2', 'G3', 'E1','E5',
> 'P1') AND type='G' ORDER BY RAND() LIMIT 11)"
>
> $sql2 = "SELECT * FROM questions WHERE book IN ('Galatians',
> 'Ephesians','Philippians') AND chapters IN ('G1', 'G2', 'G3', 'E1','E5',
> 'P1') AND type='A' ORDER BY RAND() LIMIT 5)"

If you use:

while ($query_1_data[] = mysql_fetch_arrray(...))
{
}
while ($query_2_data[] = mysql_fetch_arrray(...))
{
}
while ($query_3_data[] = mysql_fetch_arrray(...))
{
}

// you now have three arrays like: $query_?_data[0]...[n]
// merge the arrays together to form one big array
// then shuffle (randomize) them

$questions = array_merge($query_1_data, $query_2_data, $query_3_data);
shuffle($questions);

// now you can loop through them to display them

for ($loop = 0; $loop <= count($questions)-1; $loop++)
{
echo $question[$loop][...]; // add your necessary keys here
}

Norm

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация