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

AYUDA!! COMO REALIZAR UNA CONSULTA CON UN LISTA/SELECT PHP

Hola amigos mi problema es que no puedo realizar una consulta mediante un lista /select este es mi codigo no encuentro el error si me pueden ayudar que estoy asiendo mal: mi base de datos se llama proyecto y cuento solo con 1 tabla llamada mes con 3 campos nombre apellido y año donde mi idea es seleccionar un nombre del lista selct donde los registros vienen desde la base de datos y con un boton html me muestra la consulta de ese nombre seleccionado la consulta debe ser el apellido y el año eso seria todo espero me puedan ayudar amigos saludos!

<!--    
<form method="post" action="consult.php">
<select name="select">
<option value="0">Seleccione</option>

<?php 

$sql = mysql_connect('localhost', 'prueba', '');
mysql_select_db('proyecto', $sql);
$sql=mysql_query("SELECT  DISTINCT nombre FROM mes");

//se obtiene los datos
$total = mysql_num_rows($sql);
while($row=mysql_fetch_array($sql)){
echo '<option value="'.$row['nombre'].'">'.$row['nombre'].'</option>';
}

?></select>

<input type="submit" name="mostrar" value="Mostrar">

-->
<?php
/* -- CONECTANDO A LA BD -- */
$sql = mysql_connect('localhost', 'prueba', '');
mysql_select_db('proyecto', $sql);

if(isset($_POST['select']) && !empty($_POST['select'])){
    $select = $_POST['select'];

$sql="select *from mes";
$resultado=mysql_query($sql);
$total=mysql_num_rows($resultado);
echo"<table><tr><td>NOMBRE</td<td>MES</td</tr>";
while($row=mysql_fetch_array($resultado)){
echo"<tr>";
echo "<td>".$row['nombre']."</td>"; 
echo "<td>".$row['direccion']."</td>";
echo "<td>".$row['año']."</td>";
echo"</tr>";
}
    echo"</table>";

}
?>

Leonardo-Tadei comentado Ene 12, 2015

Por favor Alan:

  • no comiences tus preguntas con la palabra "ayuda": se sobreentiende que si alguien hace una pregunta es porque necesita ayuda con algo que no sabe o que no le sale.
  • no escribas todo con mayúsculas. En la jerga escrita, eso equivale a gritar y se obtienen menos respuestas y ganas de aprticipar a los gritos que de buena manera.
  • marcá el código como tal. Al poner código en una pregunta, seleccionalo y marcalo con la herramienta {}. De esta forma podremos ver bien tu código y que partes no sean reemplazadas por el navegador.
  • sé prolijo con los signos de puntuación: se entiene mejor lo que quieres decir y no quedan frases ambiguas.

Ayudanos a que entreDesarrolladores sea un mejor lugar para todos!

Alan comentado Ene 13, 2015

ok leonardo no te preocupes ya no escribire en mayusculas disculpame !!saludos

1 Respuesta

6votos

Gust4v0x Puntos910

Aquí tienes un ejemplo de lo que quieres. He comentado el código para que se pueda entender. Aquí hago uso de AJAX, para mostrar los datos en tiempo real. Sería mucho mejor que en vez de actualizar los datos por medio del botón se haga por evento de cambio de la lista.

Como consejo:

  • No usar mysql (me refiero a la clase PHP), ha quedado obsoleto. Más provecho le puedes sacar a mysqli.

Tabla 'usuarios'

id: 1 | nombre: Guillermo | apellidos: García | anyo: 25-05-1995
id: 2 | nombre: Rodolfo | apellidos: Mogollón | anyo: 30-06-1985


select.html

<!doctype html>
<html lang="es">
    <head>
        <title>Prueba select</title>
    </head>
    <body>
        <select id="select">
            <option value="Guillermo">Guillermo</option>
            <option value="Rodolfo">Rodolfo</option>
        </select>
        <button id="submit" type="submit">Mostrar</button>
        <br>
        <p id="apellidos"></p>
        <p id="anyo"></p>

        <!-- jQuery -->
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script src="ajax.js"></script>
    </body>
</html>

ajax.js

$(document).on("ready", function() {

// evento click del botón 'Mostrar'
$("#submit").on("click", function(e) {
    e.preventDefault();
    var option = $("#select").val(); // guarda el nombre seleccionado del select
    // crea un objeto JSON para enviarlo
    var dataToSend = JSON.parse('{"name": "nombre", "value": "'+option+'"}');

    $.ajax(
        {
            url: "process.php", // url que procesara la petición
            dataType: "json", // tipo de datos a enviar
            data: dataToSend, // datos a enviar (json)
            type: "get" // metodo de petición
        }
    )
    .done( function(data) {
        $("#apellidos").html(data["apellidos"]);
        $("#anyo").html(data["anyo"]);
        console.log(dataToSend);
        console.log(data);
    })
    .fail( function(jqXHR,textStatus,errorThrown) {
        console.log("Ha ocurrido un error al obtener los datos del usuario");
    });

  });

});

process.php

<?php

$connection = new mysqli("127.0.0.1","root","pass","proyecto");
$connection->set_charset("utf8");

if($connection->connect_errno)
    throw new Exception("Error al conectar a la base de datos");

$stmt = $connection->stmt_init();
$query = "SELECT apellidos,anyo FROM usuarios WHERE nombre=?";

if($stmt->prepare($query)) { // prepara la sentencia
    $name = $_GET["value"];
    $stmt->bind_param("s", $name); // bindea los datos
    $stmt->execute(); // ejecuta la sentencia
    $result = $stmt->get_result(); // obtiene los resultados
    $connection->close();
    echo json_encode($result->fetch_assoc()); // retorna los datos como JSON
}

<center>UPDATE: Mostrar los datos al cambiar de opción</center>

select.html

<!doctype html>
<html lang="es">
    <head>
        <title>Prueba select</title>
    </head>
    <body>
        <select id="select">
            <option value="Ninguno">Seleccionar</option>
            <option value="Guillermo">Guillermo</option>
            <option value="Rodolfo">Rodolfo</option>
        </select>
        <br>
        <p id="apellidos"></p>
        <p id="anyo"></p>

        <!-- jQuery -->
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script src="ajax.js"></script>
    </body>
</html>

ajax.js

$(document).on("ready", function() {

    // evento click del botón 'Mostrar'
    $("#select").on("change", function(e) {

        var option = $(this).val(); // guarda el nombre seleccionado del select
        if(option.toLowerCase() !== "ninguno") { // si se ha elegido un nombre
            // crea un objeto JSON para enviarlo
            var dataToSend = JSON.parse('{"name": "nombre", "value": "'+option+'"}');
            ajaxProcess(dataToSend);
        }
        else { // si se ha seleccionado 'Ninguno' limpia los párrafos
            $("p").each( function() {
                $(this).html("");
            });
        }

    });

    function ajaxProcess(dataToSend) {
        $.ajax(
            {
                url: "process.php", // url que procesara la petición
                dataType: "json", // tipo de datos a enviar
                data: dataToSend, // datos a enviar (json)
                type: "get" // metodo de petición
            }
        )
        .done( function(data) {
            $("#apellidos").html(data["apellidos"]);
            $("#anyo").html(data["anyo"]);
        })
        .fail( function(jqXHR,textStatus,errorThrown) {
            console.log("Ha ocurrido un error al obtener los datos del usuario");
        });
    }
});

El archivo process.php es exactamente el mismo.

Alan comentado Ene 13, 2015

Hola Gust4v0x gracias por tu aporte vale probare el codigo saludos!!

Gust4v0x comentado Ene 14, 2015

Hola Alan, espero te haya servido el código. Si es así, te invito a marcar el tema como solucionado eligiendo la respuesta correcta. Un saludo.

Alan comentado Ene 14, 2015

Hola Gust4v0x probe el codigo pero me marca un error variable indefinida y me marca este renglon trate de definirla pero no pude no tendras un ejemplo donde solo realize una consulta con un lista select usando solo php e buscado en internt pero no puedo resolver mi problema creeo q esta muy escasa la informacion sobre este tema te agradeseria muchisimo gracias por tu tiempo !!saludos

$name = $_GET["value"];

Gust4v0x comentado Ene 14, 2015

Qué raro, porque acabo de probarlo y todo funciona perfectamente. Pega el error que te muestra PHP. Cabe aclarar, que los 3 archivos los puse en una sola carpeta.

Alan comentado Ene 14, 2015

dejame probar amigo..pero si de casualdad tendras un ejemlo sin ajax te lo agradesere mucho saludos y bendiciones

cbastin7 comentado Nov 20

Gust4v0x Muchas gracias, funciona a la perfección

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

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

...

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

Conecta