Re: Re: Word Activity Application
| From: | Niel Archer | Date: | Mon, 03 Jan 2011 14:10:38 +0000 |
| Subject: | Re: Re: Word Activity Application | ||
| References: | 1 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-47595@lists.php.net to get a copy of this message | ||
>
> 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 = "
> SELECT
reference , word ,
> explanation
> FROM Bible_dictionary
> WHERE live =1
> ORDER BY RAND( )
> LIMIT 5
> ";
> $words_match_up_result=mysql_query($query);
> $records_found=mysql_numrows($words_match_up_result);
>
> echo $records_found . "<br>"; # output is 5
>
> #create array from mySQL query
>
> $words = array();
> $explanations = array();
>
> $i=1;
> while ( $i <= $records_found ) {
>
> $words[$i] = stripslashes( mysql_result($words_match_up_result,($i -1),"word") );
> $explanations[$i] = stripslashes( mysql_result($words_match_up_result,($i
> -1),"explanation") );
>
> ++$i;
> }
>
> #shuffle arrays
>
> $match_words = shuffle ( $words );
> $match_explanations = shuffle ( $explanations );
change to:
$match_words = $words;
shuffle($match_words);
$match_explanations = $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 . "<br />\r\n";
>
> }
>
> The Verse of the Day
> Encouragement from Gods Word
> http://www.TheVerseOfTheDay.info
>
>
> From: Ron Piggott
> Sent: Sunday, January 02, 2011 5:54 PM
> To: php-db@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 =1
> ORDER BY RAND( )
> LIMIT 5
>
> Ron
>
> The Verse of the Day
> Encouragement from Gods Word
> http://www.TheVerseOfTheDay.info
--
Niel Archer
niel.archer (at) blueyonder.co.uk