entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Combobox php y mysql

Buenos Dias Compañeros
tengo un problema al momento de realizar un combobox para traer unos datos de la bd

este es mi combo

<?php
$sql = "SELECT * FROM perfil ORDER BY perfil";
$selectPerfiles = $cnx->ejecutarConsulta($sql, $cnx->consultar);
$comboPerfiles = "<select name='perfil' class='form-select' required>";
$comboPerfiles.= "<option value=''>Seleccione Perfil</option>";
if(!isset($selectPerfiles["msg"])){
    foreach ($selectPerfiles as $key => $valor) {
        $comboPerfiles.= "<option value='{$selectPerfiles[$key]["id_perfil"]}'>{$selectPerfiles[$key]["perfil"]}</option>";
    }
}
$comboPerfiles.= "</select>";
?>

estoy usando una plantilla que venia ya lista para su edicion y trae las consultas de la siguiente manera

$sql = "SELECT * FROM usuario u INNER JOIN perfil p ON u.id_perfil=p.id_perfil ORDER BY nombre";
            $stmt = $conn->prepare($sql);
            $result = $stmt->execute();
            $rows = $stmt->fetchAll(\PDO::FETCH_OBJ);
            foreach($rows as $row){

entonces yo cambie mi combo para intentar que se ejecutara correcto en esta plantilla

<?php
$sql = "SELECT * FROM perfil ORDER BY perfil";
 $stmt = $conn->prepare($sql);
$result = $stmt->execute();
            $rows = $stmt->fetchAll(\PDO::FETCH_OBJ);
$comboPerfiles = "<select name='perfil' class='form-select' required>";
$comboPerfiles.= "<option value=''>Seleccione Perfil</option>";
 foreach($rows as $row){
    foreach ($selectPerfiles as $key => $valor) {
        $comboPerfiles.= "<option value='{$selectPerfiles[$key]["id_perfil"]}'>{$selectPerfiles[$key]["perfil"]}</option>";
    }
}
?>

pero solo trae campos vacios y revise y si tiene registros

$comboPerfiles.= "</select>";
?>

la conexion con la bd esta bien, aca es donde intento hacer el combo

<div class="form-group">
                  <label>Perfil :</label>

                  <<?=$comboPerfiles;?>
                </div>

1 Respuesta

4votos

Leonardo-Tadei Puntos227320

Hola @zenosama,

estás ejecutando mal el bucle con las respuestas de PDO.

Hacés bien foreach($rows as $row) pero adentro hacés otro bucle para recorrer la variable $selectPerfiles que en ninguna parte del código que mostrás está tomando ningún valor.

Como en el parámetro del fetchAll() le estás diciendo a PDO que devuelva Objetos, el bucle debería quedar:

foreach($rows as $obj){
        $comboPerfiles.= "<option value='{$obj->id_perfil}'>{$obj->perfil}</option>";
}

Si tenés dudas del valor de los atributos autogenerados por PDO, hacé un:

foreach($rows as $obj){
   var_dump($obj);
}

y fijate la estructura de la respuesta.

Saludos cordiales

2votos

zenosama comentado

Gracias amigo lo saque como me dijo y a bien

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta