Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

PHP CRUD Operations with PHP Creating Records Reading Data

Julie Dowler
Julie Dowler
7,851 Points

Still need help, please!

Here is the challenge:

https://teamtreehouse.com/library/crud-operations-with-php/creating-records/reading-data

Challenge Task 2 of 2

Loop through the PDOStatement Object returned by the function and display both the podcast 'title' and podcast 'website'.

And my code:
`` <?php function get_podcasts() { include 'connection.php'; try { return $db->query("SELECT * FROM podcasts"); } catch (Exception $e) { echo "Error: ".$e->getMessage()."</br>"; return false; }

$podcasts = new get_podcasts(); $pod_array = $podcasts->fetchAll(PDO::FETCH_ASSOC); foreach ($pod_array as $podcast) { echo "<li>".$podcast['title']. " " . $podcast['website']."</li>"; } //add code here

} ``

I keep getting this error: Bummer! I do not see all the podcasts!

index.php
<?php
function get_podcasts() {
    include 'connection.php';https://teamtreehouse.com/library/crud-operations-with-php/creating-records/reading-data
    try  {
       return $db->query("SELECT * FROM podcasts");
    }  catch (Exception $e)  {
      echo  "Error:  ".$e->getMessage()."</br>";
      return false;
    }

$podcasts = new get_podcasts();
$pod_array = $podcasts->fetchAll(PDO::FETCH_ASSOC);
  foreach ($pod_array as $podcast)  {
    echo  "<li>".$podcast['title']. " " . $podcast['website']."</li>";
  }
    //add code here

}






















    //add code here

}

2 Answers

Jennifer Nordell
seal-mask
STAFF
.a{fill-rule:evenodd;}techdegree
Jennifer Nordell
Treehouse Teacher

Hi there! I think you're doing really well. Kudos on even getting past the first step! This is definitely into the intermediate level PHP.

First, your function is not closed correctly. It is missing a close curly brace. Also, there happens to be an extraneous closed curly braces at the end of your code. It feels like you did your coding inside the function, but this was not what was intended. Your code is meant to call the function.

Because the function returns a PDO you do not need to try to get the PDO again. You are also trying to use the word new as if you were creating a new object. But we want just a simple call to a function. So, if I fix the curly braces and then erase the lines starting with $podcasts and $pod_array and combine them...

$pod_array = get_podcasts();  // note that no "new" is needed here

... your code passes! Hope this helps! :sparkles:

edited for additional information

Also note that since these are list items they will need to be printed out inside of one set of either <ul> or <ol> tags. The HTML should end up looking like:

<ul>
  <li> </li>
  <li> </li>
</ul>
Julie Dowler
Julie Dowler
7,851 Points

Thank you! I think I got confused when they wanted me to use a function without having it inside of a class. I started thinking the function was a class. After making the changes you suggested, it passed. Here's what I entered:

`` <?php function get_podcasts() { include 'connection.php'; try { return $db->query("SELECT * FROM podcasts"); } catch (Exception $e) { echo "Error: ".$e->getMessage()."</br>"; return false; } }

$podcasts = get_podcasts(); $pod_array = $podcasts->fetchAll(PDO::FETCH_ASSOC); echo "<ul>"; foreach ($pod_array as $podcast) { echo "<li>".$podcast['title']. " " . $podcast['website']."</li>"; } echo "</ul>"; ``