Obtenga todos los favoritos para el usuario actual
-
13-12-2019 - |
Pregunta
Tengo una tabla en la base de datos llamada "Favoritos" con 3 columnas (User_ID, Bookmarked_Song_ID, Bookmark_TAG) y quiero obtener todos los marcadores_song_id para el usuario actual.
$username = $this->session->userdata('username');
$uidq = mysql_query('SELECT user_id FROM users WHERE username="' . $username . '"');
$rq = mysql_fetch_assoc($uidq);
$user_id = $rq['user_id'];
$getfavq = mysql_query("SELECT * FROM favorites WHERE user_id=$user_id");
$favsr = mysql_fetch_array($getfavq); //contains all the information from the favorites database where user_id is the user_of the currently logged-in user
y no sé qué usar a continuación ... quiero tener algo como:
foreach($favsr['bookmarked_song_id'] as $song_id) {
$getsongq = mysql_query("SELECT * FROM songs WHERE song_id=$song_id");
$getsongr = mysql_fetch_assoc($getsongq);
$singer = $getsongr['singer'];
$song_name = $getsongr['song_name'];}
Obviamente, el método es incorrecto porque obtengo: "Argumento no válido suministrado para foreach ()".¿Alguien puede ayudarme con obtener las canciones?Gracias por adelantado.
Solución
Debe ser esto:
$favsr = mysql_fetch_array($getfavq, MYSQL_ASSOC);
foreach($favsr as $row) {
$songid = $row['bookmarked_song_id'];
...
}
Otros consejos
mysql_fetch_array solo carga una fila, Debe ser así
$getfavq = mysql_query("SELECT * FROM favorites WHERE user_id=$user_id");
while $favsr = mysql_fetch_array($getfavq);
{$songid=$favsr['bookmarked_song_id'];
$getsongq = mysql_query("SELECT * FROM songs WHERE song_id=$song_id");
$getsongr = mysql_fetch_array($getsongq);
$singer = $getsongr['singer'];
$song_name = $getsongr['song_name'];}
Usted tiene esto etiquetado con codeigniter
.Si ha construido una aplicación CODIGNITER, probablemente debería usar la Biblioteca de la base de datos de CI:
$username = $this->session->userdata('username');
//Select your user
$this->db->select('user_id');
$this->db->where('username', $username);
$this->db->limit(1);
$user_query = $this->db->get('users');
if($user_query->num_rows() > 0)
{
// We found a user
$user = $user_query->row(); // select a single row
// Grab this user's favorites
$this->db->where('user_id', $user->id);
$favorites_query = $this->db->get('favorites');
$songs = $favorites_query->result();
if($songs)
{
foreach($songs as $song)
{
$song_id = $song->bookmarked_song_id;
$tag = $song->bookmark_tag;
// Do stuff with data.
}
}
else
{
// No songs/favorites found, catch error
}
}
else
{
// No such user found, catch error
}
Por supuesto, la mejor práctica es tener sus datos de usuario y sus datos de favoritos en modelos separados, pero esto debería funcionar por ahora.