es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Generación dinámica de listas desordenadas desde una base de datos con PHP y SQL.

Empecé a programar en abril de 2021, así que soy muy nueva en esto. Para mi examen final, ¡necesito de su valiosa ayuda! Quiero generar una lista dinámica desde una base de datos, que contenga 2 tablas unidas (usuarios e intereses). Ambas tablas contienen “ID_user”, que las vincula como clave externa. La idea es que una vez que el usuario inicie sesión, la página de perfil muestre todos los intereses seleccionados en el registro. En este momento, solo puedo mostrar el último interés seleccionado y no todos.

Aquí está mi código en PHP:

$request2 = “SELECT interest.name_Interest
FROM interest
INNER JOIN users
ON interest.ID_user = users.ID_user
WHERE pseudo = ‘”.$url_pseudo.”‘;”;

$resultat2 = mysqli_query($connexion, $request2) or die (mysqli_error($connexion));

$nb_resultat2 = mysqli_num_rows($resultat2);

if ($nb_resultat2 > 0) {

while ($row = mysqli_fetch_array($resultat2)){

    $name_Interest = $row["name_Interest"];

}

}

Aquí está el HTML que muestra la respuesta:

(ver imagen en el enlace)

Aquí está mi base de datos:

(ver imagen en el enlace)

¿Alguna idea de por qué solo puedo obtener un valor?

(gracias de antemano)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución

    La razón por la cual solo puedes mostrar el último interés seleccionado por el usuario es porque estás sobrescribiendo el valor de $name_Interest en cada iteración del bucle while. En su lugar, debes concatenar los valores en una variable de tipo string. Así es como puedes modificar tu código para lograr esto:

    $request2 = "SELECT `interest`.`name_Interest` 
                FROM `interest` 
                INNER JOIN `users` 
                    ON `interest`.`ID_user` = `users`.`ID_user` 
                WHERE `pseudo` = '".$url_pseudo."'";
    
    $resultat2 = mysqli_query($connexion, $request2) or die(mysqli_error($connexion));
    
    $nb_resultat2 = mysqli_num_rows($resultat2);
    $interests = ''; // Inicializa una variable de tipo string vacía
    
    if ($nb_resultat2 > 0) {
        while ($row = mysqli_fetch_array($resultat2)){
            $name_Interest = $row["name_Interest"];
            $interests .= $name_Interest . ', '; // Concatena cada interés en la variable de tipo string
        }
        $interests = rtrim($interests, ', '); // Elimina la última coma y el espacio del final de la cadena
    }
    
    echo '<div class="container">';
    echo '<h2>'.stripslashes($pseudo).'</h2>';
    echo '<h4>Intereses:</h4>';
    echo '<p>'.$interests.'</p>'; // Muestra los intereses concatenados
    echo '</div>';
    

    Con esta modificación, deberías ser capaz de mostrar todos los intereses seleccionados por el usuario en la lista dinámica.

Comments are closed.