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 trialJulie Dowler
7,851 PointsStill 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!
<?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
Treehouse TeacherHi 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!
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
7,851 PointsThank 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>"; ``