Word Activity Application

------=_NextPart_000_0031_01CBAAA6.265BE200
Content-Type: text/plain;
charset="UTF-8"
Content-Transfer-Encoding: quoted-printable


I am working on a word activity --- matching words and their =
definitions.

I want to display 5 words on the left hand side and the 5 definitions on =
the right hand side. But I want the definitions displayed in a =
different order than the words so the user submits their answer.

Should I use PHP to display the definitions in random order? OR Is =
there a way do this in mySQL that would mix and match results from =
different rows? This is the query gives me the 5 results

SELECT `reference` , `word` , `explanation`
FROM `Bible_dictionary`
WHERE `live` =3D1
ORDER BY RAND( )
LIMIT 5

Ron

The Verse of the Day
=E2=80=9CEncouragement from God=E2=80=99s Word=E2=80=9D
http://www.TheVerseOfTheDay.info

------=_NextPart_000_0031_01CBAAA6.265BE200--
ron.piggott [ So, 02 Januar 2011 23:54 ] [ ID #2052337 ]

Re: Word Activity Application

------=_NextPart_000_0046_01CBAABF.98832C80
Content-Type: text/plain;
charset="UTF-8"
Content-Transfer-Encoding: quoted-printable


The FOREACH below is giving me the error:
Invalid argument supplied for foreach()

Does anyone understand what I have done to cause this error?

#query for words

$query =3D "
SELECT `reference` , `word` , `explanation`
FROM `Bible_dictionary`
WHERE `live` =3D1
ORDER BY RAND( )
LIMIT 5
";
$words_match_up_result=3Dmysql_query($query);
$records_found=3Dmysql_numrows($words_match_up_result);

echo $records_found . "<br>"; # output is 5

#create array from mySQL query

$words =3D array();
$explanations =3D array();

$i=3D1;
while ( $i <=3D $records_found ) {

$words[$i] =3D stripslashes( mysql_result($words_match_up_result,($i =
-1),"word") );
$explanations[$i] =3D stripslashes( =
mysql_result($words_match_up_result,($i -1),"explanation") );

++$i;
}

#shuffle arrays

$match_words =3D shuffle ( $words );
$match_explanations =3D shuffle ( $explanations );

#display words on the screen

foreach($match_words as $word) {

echo $word . "
\r\n";

}

The Verse of the Day
=E2=80=9CEncouragement from God=E2=80=99s Word=E2=80=9D
http://www.TheVerseOfTheDay.info


From: Ron Piggott
Sent: Sunday, January 02, 2011 5:54 PM
To: php-db [at] lists.php.net
Subject: Word Activity Application


I am working on a word activity --- matching words and their =
definitions.

I want to display 5 words on the left hand side and the 5 definitions on =
the right hand side. But I want the definitions displayed in a =
different order than the words so the user submits their answer.

Should I use PHP to display the definitions in random order? OR Is =
there a way do this in mySQL that would mix and match results from =
different rows? This is the query gives me the 5 results

SELECT `reference` , `word` , `explanation`
FROM `Bible_dictionary`
WHERE `live` =3D1
ORDER BY RAND( )
LIMIT 5

Ron

The Verse of the Day
=E2=80=9CEncouragement from God=E2=80=99s Word=E2=80=9D
http://www.TheVerseOfTheDay.info

------=_NextPart_000_0046_01CBAABF.98832C80--
ron.piggott [ Mo, 03 Januar 2011 02:56 ] [ ID #2052405 ]

Re: Re: Word Activity Application

>
> The FOREACH below is giving me the error:
> Invalid argument supplied for foreach()

Not surprising as the $match_words will contain a boolean result from
shuffle. Shuffle works directly on the variable it is given and returns
true or false, depending on success. rtfm ;-)

> Does anyone understand what I have done to cause this error?
>
> #query for words
>
> $query =3D "
> SELECT `reference` , `word` , `explanation`
> FROM `Bible_dictionary`
> WHERE `live` =3D1
> ORDER BY RAND( )
> LIMIT 5
> ";
> $words_match_up_result=3Dmysql_query($query);
> $records_found=3Dmysql_numrows($words_match_up_result);
>
> echo $records_found . "<br>"; # output is 5
>
> #create array from mySQL query
>
> $words =3D array();
> $explanations =3D array();
>
> $i=3D1;
> while ( $i <=3D $records_found ) {
>
> $words[$i] =3D stripslashes( mysql_result($words_match_up_result,($i =
-1),"word") );
> $explanations[$i] =3D stripslashes( mysql_result($words_match_up_resu=
lt,($i -1),"explanation") );
>
> ++$i;
> }
>
> #shuffle arrays
>
> $match_words =3D shuffle ( $words );
> $match_explanations =3D shuffle ( $explanations );

change to:
$match_words =3D $words;
shuffle($match_words);
$match_explanations =3D $explanations;
shuffle($match_explanations);

However if these need to stay in sync this will not work. i.e if a
explanation's index needs to match the corresponding word's index, then
you'll have to do this another way. But as I understand your need here,
this isn't a problem?

> #display words on the screen
>
> foreach($match_words as $word) {
>
> echo $word . "
\r\n";
>
> }
>
> The Verse of the Day
> =93Encouragement from God=92s Word=94
> http://www.TheVerseOfTheDay.info
>
>
> From: Ron Piggott
> Sent: Sunday, January 02, 2011 5:54 PM
> To: php-db [at] lists.php.net
> Subject: Word Activity Application
>
>
> I am working on a word activity --- matching words and their definitions.=

>
> I want to display 5 words on the left hand side and the 5 definitions on =
the right hand side. But I want the definitions displayed in a different o=
rder than the words so the user submits their answer.
>
> Should I use PHP to display the definitions in random order? OR Is there=
a way do this in mySQL that would mix and match results from different row=
s? This is the query gives me the 5 results
>
> SELECT `reference` , `word` , `explanation`
> FROM `Bible_dictionary`
> WHERE `live` =3D1
> ORDER BY RAND( )
> LIMIT 5
>
> Ron
>
> The Verse of the Day
> =93Encouragement from God=92s Word=94
> http://www.TheVerseOfTheDay.info

--
Niel Archer
niel.archer (at) blueyonder.co.uk



--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Niel Archer [ Mo, 03 Januar 2011 15:10 ] [ ID #2052406 ]
PHP » gmane.comp.php.database » Word Activity Application

Vorheriges Thema: Two forms on one page
Nächstes Thema: Regex for telephone numbers