I'm trying to extend the script(s) provided at
www.phpriot.com/d/articles/client-side/sortable-lists-with-p hp-and-ajax/.
I'm struggling with the foreach syntax - I guess I'm just a dummy. I
still don't get it despite reading through http://uk.php.net/foreach.
Basically, there's a movie table (`movie_id`, `title`, `description`,
`ranking`).
and a function that gets the movies:
function getMovies()
{
$query = 'select movie_id, title, description from movies order
by ranking, lower(title)';
$result = mysql_query($query);
and here's where the titles are displayed on the page:
$title) { ?>
= $title ?>
For each movie what do I need to do to echo the movie description -
within the
statement for instance.
Hope that makes sense. Any help appreciated.
Re: foreach woes
am 07.06.2006 19:33:17 von zeldorblat
strawberry wrote:
> I'm trying to extend the script(s) provided at
> www.phpriot.com/d/articles/client-side/sortable-lists-with-p hp-and-ajax/.
> I'm struggling with the foreach syntax - I guess I'm just a dummy. I
> still don't get it despite reading through http://uk.php.net/foreach.
>
> Basically, there's a movie table (`movie_id`, `title`, `description`,
> `ranking`).
>
> and a function that gets the movies:
>
> function getMovies()
> {
> $query = 'select movie_id, title, description from movies order
> by ranking, lower(title)';
> $result = mysql_query($query);
>
> $movies = array();
> while ($row = mysql_fetch_object($result)) {
> $movies[$row->movie_id] = $row->title;
> }
>
> return $movies;
> }
>
>
> and here's where the titles are displayed on the page:
>
>
> $title) { ?>
>
= $title ?>
>
>
>
> For each movie what do I need to do to echo the movie description -
> within the
statement for instance.
>
> Hope that makes sense. Any help appreciated.
In the getMovies() function, change the while loop to something like
this:
while ($row = mysql_fetch_object($result)) {
$movies[] = $row;
}
And when you display them:
foreach($movies as $movie) {
//$movie->movie_id is the movie_id
//$movie->title is the title
//$movie->description is the description
}
Re: foreach woes
am 07.06.2006 19:56:50 von zac.carey
Perfect. Thank you very much.
ZeldorBlat wrote:
> strawberry wrote:
> > I'm trying to extend the script(s) provided at
> > www.phpriot.com/d/articles/client-side/sortable-lists-with-p hp-and-ajax/.
> > I'm struggling with the foreach syntax - I guess I'm just a dummy. I
> > still don't get it despite reading through http://uk.php.net/foreach.
> >
> > Basically, there's a movie table (`movie_id`, `title`, `description`,
> > `ranking`).
> >
> > and a function that gets the movies:
> >
> > function getMovies()
> > {
> > $query = 'select movie_id, title, description from movies order
> > by ranking, lower(title)';
> > $result = mysql_query($query);
> >
> > $movies = array();
> > while ($row = mysql_fetch_object($result)) {
> > $movies[$row->movie_id] = $row->title;
> > }
> >
> > return $movies;
> > }
> >
> >
> > and here's where the titles are displayed on the page:
> >
> >
> > $title) { ?>
> >
= $title ?>
> >
> >
> >
> > For each movie what do I need to do to echo the movie description -
> > within the
statement for instance.
> >
> > Hope that makes sense. Any help appreciated.
>
> In the getMovies() function, change the while loop to something like
> this:
>
> while ($row = mysql_fetch_object($result)) {
> $movies[] = $row;
> }
>
> And when you display them:
>
> foreach($movies as $movie) {
> //$movie->movie_id is the movie_id
> //$movie->title is the title
> //$movie->description is the description
> }
Re: foreach woes
am 08.06.2006 14:39:48 von zac.carey
Curiously, the last movie (movie_id 7) now always appears at the bottom
of the ranked list. Have I done something wrong or is my computer just
exercising some form of editorial control - after all, it is a Nicholas
Cage movie!?!
The rank order processing function looks like this:
function processMoviesOrder($key)
{
if (!isset($_POST[$key]) || !is_array($_POST[$key]))
return;
foreach($movies as $movie) {
//$movie->movie_id is the movie_id
//$movie->title is the title
//$movie->description is the description
?>
=
$movie->title.$movie->description ?>
the javascripts referred to come from the scriptaculous website
strawberry wrote:
> Perfect. Thank you very much.
>
> ZeldorBlat wrote:
> > strawberry wrote:
> > > I'm trying to extend the script(s) provided at
> > > www.phpriot.com/d/articles/client-side/sortable-lists-with-p hp-and-ajax/.
> > > I'm struggling with the foreach syntax - I guess I'm just a dummy. I
> > > still don't get it despite reading through http://uk.php.net/foreach.
> > >
> > > Basically, there's a movie table (`movie_id`, `title`, `description`,
> > > `ranking`).
> > >
> > > and a function that gets the movies:
> > >
> > > function getMovies()
> > > {
> > > $query = 'select movie_id, title, description from movies order
> > > by ranking, lower(title)';
> > > $result = mysql_query($query);
> > >
> > > $movies = array();
> > > while ($row = mysql_fetch_object($result)) {
> > > $movies[$row->movie_id] = $row->title;
> > > }
> > >
> > > return $movies;
> > > }
> > >
> > >
> > > and here's where the titles are displayed on the page:
> > >
> > >
> > > $title) { ?>
> > >
= $title ?>
> > >
> > >
> > >
> > > For each movie what do I need to do to echo the movie description -
> > > within the
statement for instance.
> > >
> > > Hope that makes sense. Any help appreciated.
> >
> > In the getMovies() function, change the while loop to something like
> > this:
> >
> > while ($row = mysql_fetch_object($result)) {
> > $movies[] = $row;
> > }
> >
> > And when you display them:
> >
> > foreach($movies as $movie) {
> > //$movie->movie_id is the movie_id
> > //$movie->title is the title
> > //$movie->description is the description
> > }
Re: foreach woes
am 08.06.2006 19:40:04 von zeldorblat
strawberry wrote:
> Curiously, the last movie (movie_id 7) now always appears at the bottom
> of the ranked list. Have I done something wrong or is my computer just
> exercising some form of editorial control - after all, it is a Nicholas
> Cage movie!?!
>
> The rank order processing function looks like this:
>
> function processMoviesOrder($key)
> {
> if (!isset($_POST[$key]) || !is_array($_POST[$key]))
> return;
>
> $movies = getMovies();
> $queries = array();
> $ranking = 1;
>
> foreach ($_POST[$key] as $movie_id) {
> if (!array_key_exists($movie_id, $movies))
> continue;
>
> $query = sprintf('update movies set ranking = %d where movie_id =
> %d',
> $ranking,
> $movie_id);
>
> mysql_query($query);
> $ranking++;
> }
>
> and the complete presentation page now looks like this;
>
>
> require_once('database.php');
> require_once('movies.php');
>
> if (!dbConnect()) {
> echo 'Error connecting to database';
> exit;
> }
>
> $movies = getMovies();
> ?>
>
> "DTD/xhtml1-strict.dtd">
>
>
>
>
> foreach($movies as $movie) {
> //$movie->movie_id is the movie_id
> //$movie->title is the title
> //$movie->description is the description
> ?>
>
=
> $movie->title.$movie->description ?>
>
>
>
>
>
>
>
> the javascripts referred to come from the scriptaculous website
>
> strawberry wrote:
> > Perfect. Thank you very much.
> >
> > ZeldorBlat wrote:
> > > strawberry wrote:
> > > > I'm trying to extend the script(s) provided at
> > > > www.phpriot.com/d/articles/client-side/sortable-lists-with-p hp-and-ajax/.
> > > > I'm struggling with the foreach syntax - I guess I'm just a dummy. I
> > > > still don't get it despite reading through http://uk.php.net/foreach.
> > > >
> > > > Basically, there's a movie table (`movie_id`, `title`, `description`,
> > > > `ranking`).
> > > >
> > > > and a function that gets the movies:
> > > >
> > > > function getMovies()
> > > > {
> > > > $query = 'select movie_id, title, description from movies order
> > > > by ranking, lower(title)';
> > > > $result = mysql_query($query);
> > > >
> > > > $movies = array();
> > > > while ($row = mysql_fetch_object($result)) {
> > > > $movies[$row->movie_id] = $row->title;
> > > > }
> > > >
> > > > return $movies;
> > > > }
> > > >
> > > >
> > > > and here's where the titles are displayed on the page:
> > > >
> > > >
> > > > $title) { ?>
> > > >
= $title ?>
> > > >
> > > >
> > > >
> > > > For each movie what do I need to do to echo the movie description -
> > > > within the
statement for instance.
> > > >
> > > > Hope that makes sense. Any help appreciated.
> > >
> > > In the getMovies() function, change the while loop to something like
> > > this:
> > >
> > > while ($row = mysql_fetch_object($result)) {
> > > $movies[] = $row;
> > > }
> > >
> > > And when you display them:
> > >
> > > foreach($movies as $movie) {
> > > //$movie->movie_id is the movie_id
> > > //$movie->title is the title
> > > //$movie->description is the description
> > > }
Look at your new version of getMovies() and consider what the keys of
the array are.
Re: foreach woes
am 09.06.2006 13:05:53 von zac.carey
Thanks,
But I'm going to have to have a bit of a think about that. I may be
some time...
I'll let you know when I've figured it out.
Cheers :-)
ZeldorBlat wrote:
> strawberry wrote:
> > Curiously, the last movie (movie_id 7) now always appears at the bottom
> > of the ranked list. Have I done something wrong or is my computer just
> > exercising some form of editorial control - after all, it is a Nicholas
> > Cage movie!?!
> >
> > The rank order processing function looks like this:
> >
> > function processMoviesOrder($key)
> > {
> > if (!isset($_POST[$key]) || !is_array($_POST[$key]))
> > return;
> >
> > $movies = getMovies();
> > $queries = array();
> > $ranking = 1;
> >
> > foreach ($_POST[$key] as $movie_id) {
> > if (!array_key_exists($movie_id, $movies))
> > continue;
> >
> > $query = sprintf('update movies set ranking = %d where movie_id =
> > %d',
> > $ranking,
> > $movie_id);
> >
> > mysql_query($query);
> > $ranking++;
> > }
> >
> > and the complete presentation page now looks like this;
> >
> >
> > require_once('database.php');
> > require_once('movies.php');
> >
> > if (!dbConnect()) {
> > echo 'Error connecting to database';
> > exit;
> > }
> >
> > $movies = getMovies();
> > ?>
> >
> > "DTD/xhtml1-strict.dtd">
> >
> >
> >
> >
> > foreach($movies as $movie) {
> > //$movie->movie_id is the movie_id
> > //$movie->title is the title
> > //$movie->description is the description
> > ?>
> >
=
> > $movie->title.$movie->description ?>
> >
> >
> >
> >
> >
> >
> >
> > the javascripts referred to come from the scriptaculous website
> >
> > strawberry wrote:
> > > Perfect. Thank you very much.
> > >
> > > ZeldorBlat wrote:
> > > > strawberry wrote:
> > > > > I'm trying to extend the script(s) provided at
> > > > > www.phpriot.com/d/articles/client-side/sortable-lists-with-p hp-and-ajax/.
> > > > > I'm struggling with the foreach syntax - I guess I'm just a dummy. I
> > > > > still don't get it despite reading through http://uk.php.net/foreach.
> > > > >
> > > > > Basically, there's a movie table (`movie_id`, `title`, `description`,
> > > > > `ranking`).
> > > > >
> > > > > and a function that gets the movies:
> > > > >
> > > > > function getMovies()
> > > > > {
> > > > > $query = 'select movie_id, title, description from movies order
> > > > > by ranking, lower(title)';
> > > > > $result = mysql_query($query);
> > > > >
> > > > > $movies = array();
> > > > > while ($row = mysql_fetch_object($result)) {
> > > > > $movies[$row->movie_id] = $row->title;
> > > > > }
> > > > >
> > > > > return $movies;
> > > > > }
> > > > >
> > > > >
> > > > > and here's where the titles are displayed on the page:
> > > > >
> > > > >
> > > > > $title) { ?>
> > > > >
= $title ?>
> > > > >
> > > > >
> > > > >
> > > > > For each movie what do I need to do to echo the movie description -
> > > > > within the
statement for instance.
> > > > >
> > > > > Hope that makes sense. Any help appreciated.
> > > >
> > > > In the getMovies() function, change the while loop to something like
> > > > this:
> > > >
> > > > while ($row = mysql_fetch_object($result)) {
> > > > $movies[] = $row;
> > > > }
> > > >
> > > > And when you display them:
> > > >
> > > > foreach($movies as $movie) {
> > > > //$movie->movie_id is the movie_id
> > > > //$movie->title is the title
> > > > //$movie->description is the description
> > > > }
>
> Look at your new version of getMovies() and consider what the keys of
> the array are.