Autor Tema: HTML PHP MySQl Buscador con combobox que despliegue información de base datos  (Leído 17705 veces)

leandrogo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Hola buenas tardes, quisiera me ayudaran con mi código.

Quiero hacer un combobox o menu desplegable apartir del "id" de la base de datos, actualmente el código despliega cuando se escribe en una caja de texto, ahora por medio del combobox quiero que despliegue las tablas.

Dejo mi código esperando que me puedan ayudar.


Código: [Seleccionar]
<HTML LANG="es">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<html>
<head>
<img align="center" src="fg.jpg"  />
 
 
<BR>
<BR>
 
 
</head>
<body>
 
<head>
<link rel="stylesheet" href="style10.css" type="text/css" media="screen"/>
 
</head>
 
 
<center><form name="form1" method="post" action="Buscador11k.php" id="cdr" >
  <h3>REUBICACIONES</h3>
      <p>
        <input name="busca"  type="text" id="busqueda">
        <input type="submit" name="Submit" value="buscar" />
        </p>
 
</form>
  <form name="form2" method="post" action="">
  </form>
</center>
 
  <?php
$busca
="";
$busca=$_POST['busca'];
mysql_connect("localhost","root","root");// conexion
mysql_select_db("Red");//nombre de la base de datos
if($busca!=""){
$busqueda=mysql_query("SELECT * FROM f11 WHERE ID='$busca'");
?>

 
 
<table class="table1" style="width:100%" border="2" >
 
 
   <tr>
    <th>
<font size=2>OFICIO</font>
</th>
       <th>
<font size=2>MOVIMIENTO</font>
</th>
<th>
<font size=2>ID</font>
</th>
     <th>
 
 
   </tr>
 
<?php
 
while($f=mysql_fetch_array($busqueda)){
echo 
'<tr>';
echo 
'<td><font size=2>'.$f['OFICIO'].'</td></font>';
echo 
'<td><font size=2>'.$f['T_MOV'].'</td></font>';
echo 
'<td><font size=2>'.$f['ID'].'</td></font>';
 
 
}
 
}
?>

</table>
<p>&nbsp;</p>
<br>
« Última modificación: 13 de Septiembre 2016, 10:04 por César Krall »

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Buscador con combobox
« Respuesta #1 en: 08 de Septiembre 2016, 02:22 »
Hola esta mirando tu código y he visto que hay error de sintaxis en tu html ademas no es la forma correcta de programar como lo plantea.
Te recomiendo que siga estos curso.
HTML desde cero.
https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=69&Itemid=192
PHP desde cero.
https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193
Tambien hay curso de javasSript, css y ajax que te va a servir con lo quiera hacer.

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Buscador con combobox
« Respuesta #2 en: 08 de Septiembre 2016, 02:32 »
Respecto a tu ejercicios te voy a dar un ejemplo de como se programaría y la forma correcta de programar aunque puede haber otro forma.
Lo que tenes que hacer es ordenar tu código por carpeta dependiendo que va a hacer por ejemplo seria algo así.
php
      codigo.php

css
        estilo.css

js
     codigo.js

 index.php

Como veras todo es una carpeta en el php iria los código php y css el de estilo y el js de javaScript y el index.php va a ser tu código html.

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Buscador con combobox
« Respuesta #3 en: 08 de Septiembre 2016, 02:44 »
Después que te explique como es la forma de trabajar te voy a pegar el código mas o menos que hace lo que pediste para poder orientarte. El código hice los posible para adaptar con el tuyo porque he visto como le llama a los campo los id el formulario la base de datos no es la forma correcta te conviene llamar por su nombre no tan abreviado. Pero de modo de ejemplo yo le llame como vos le llamaste.
Este es el index.php
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="UTF-8">
        <title>Ejemplo</title>
        <link href="css/style10.css" rel="stylesheet" type="text/css"/>
    </head>
    <body>
       
    <center>
        <form id="cdr" >
            <h3>REUBICACIONES</h3>
            <p>
                <input name="busca"  type="text" id="busca">
                <input id="buscar" type = 'button' value="buscar" />
                <!--<input class="input" id = "botonEnviar" type = 'button' value = 'Enter>-->
            </p>
           
        </form>
    </center>

    <table class="table1" style="width:100%" border="2" >
        <thead>
            <tr>
                <th>ID</th>
                <th>OFICIO</th>
                <th>MOVIMIENTO</th>
            </tr>
        </thead>
        <tbody id="contenido">

        </tbody>
    </table>
    <p>&nbsp;</p>
    <br>
    <script src="js/jquery.min.js" type="text/javascript"></script>
    <script src="js/funciones.js" type="text/javascript"></script>
    <script>
        $("#buscar").on('click', function () {
            buscar();
            //alert("hola");
        });
    </script>
</body>
</html>
Como veras uso jquery que es un plugins de javaScript que podes descargar de internet.
Los estilos para enlazar se tiene que hacer en le head y solo una vez se escribe el head no repetido como los otros.
clases es una carpeta donde va las conexiones y la clase php
conexion con base de datos
Código: [Seleccionar]
<?php

// clase que se llama mysql
class mysql {

    
// attributos
    
private $servidor "localhost";
    private 
$usuario "root";
    private 
$password "tu contraseña";
    private 
$database "red";

    
// metodos (funciones)
    
public function conectar() {
        if (!isset(
$this->conexion)) {
            
$this->conexion = (mysqli_connect($this->servidor$this->usuario$this->password)) or die(mysqli_error());
            
mysqli_select_db($this->conexion$this->database) or die(mysqli_error());
            
mysqli_set_charset($this->conexion'utf8');
        }
    }

    public function 
consulta($query) {
        
$resultado mysqli_query($this->conexion$query);
        if (!
$resultado) {
            echo 
'MySQL Error: ' mysqli_error();
            exit;
        }
        return 
$resultado;
    }

}
clase f11 donde van las consulta
Código: [Seleccionar]
<?php

require_once 'mysql.class.php';

// 5. listar los productos accediendo a la base de datos y generando el componente (card)
class f11 extends mysql {

    public function 
__construct() {
        
$this->conectar();
    }

    public function 
buscar($buscar) {

        
$sql "SELECT * FROM f11 " .
                
"where id = '" $buscar "'";
        
$rs $this->consulta($sql);

        
$registros "";
        while (
$row mysqli_fetch_array($rsMYSQLI_ASSOC)) {
            
$registros .= '<tr>';
            
$registros .= '<td>' $row["id"] . '</td>';
            
$registros .= '<td>' $row["oficio"] . '</td>';
            
$registros .= '<td>' $row["movimiento"] . '</td>';
            
$registros .= '</tr>';
        }

        
$arr = array('registros' => $registros);
        return (
$arr);
    }

}
?>


php es otra carpeta donde van los codigo php
Código: [Seleccionar]
<?php

require_once '../clases/f11.class.php';

$buscar $_POST['busca'];

error_log("--> " $buscar);


$f11 = new f11();
$arr $f11->buscar($buscar);

echo 
json_encode($arr);
?>
js es una carpeta donde va los codigo javaScript
Código: [Seleccionar]
function buscar() {
    var datos_formulario = $('#cdr').serialize();
    //console.log("--> "+datos_formulario);
    $.ajax({
        type: 'POST',
        url: 'php/buscar.php',
        data: datos_formulario,
        dataType: 'json',
        beforeSend: function (objeto) {

        },
        success: function (json) {
            $("#contenido").html(json.registros);
        },
        error: function (e) {
            alert("No se puedo conectar al servidor");
        },
        complete: function (objeto, exito, error) {

        }
    });
}
Como veras utilizo ajax para que no se vaya a recargar las pagina cada vez que haga una consulta.

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:HTML PHP MySQl Buscador con combobox que despliegue información de base datos
« Respuesta #4 en: 25 de Septiembre 2016, 18:27 »
Buen código dranxz88.


Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:HTML PHP MySQl Buscador con combobox que despliegue información de base datos
« Respuesta #5 en: 26 de Septiembre 2016, 16:24 »
Una consulta usas json encode para devolver un simple echo en un array, en este caso no haria falta pues seria devuelto

 
Código: [Seleccionar]
$registros .= '<tr>';
            $registros .= '<td>' . $row["id"] . '</td>';
            $registros .= '<td>' . $row["oficio"] . '</td>';
            $registros .= '<td>' . $row["movimiento"] . '</td>';
            $registros .= '</tr>';

como una variable y listo, no como un array, que si hay más consultas si seria util.
No es así? para aprender ese punto. saludos DranxZ88

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:HTML PHP MySQl Buscador con combobox que despliegue información de base datos
« Respuesta #6 en: 26 de Septiembre 2016, 16:34 »
Gracia por tu observación voy a estar verificando tu opinión para ver el tema de que me deci y asi poder correguir es yo estudiando también recién php pero así con el ayuda del foro y las opiniones he idea iré mejorando.

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:HTML PHP MySQl Buscador con combobox que despliegue información de base datos
« Respuesta #7 en: 27 de Septiembre 2016, 17:34 »
Bueno en este caso yo no tengo mucha idea de como es la mejor forma de proceder.

Pero en lugar de
Código: [Seleccionar]
public function buscar($buscar) {

        $sql = "SELECT * FROM f11 " .
                "where id = '" . $buscar . "'";
        $rs = $this->consulta($sql);

        $registros = "";
        while ($row = mysqli_fetch_array($rs, MYSQLI_ASSOC)) {
            $registros .= '<tr>';
            $registros .= '<td>' . $row["id"] . '</td>';
            $registros .= '<td>' . $row["oficio"] . '</td>';
            $registros .= '<td>' . $row["movimiento"] . '</td>';
            $registros .= '</tr>';
        }

        $arr = array('registros' => $registros);
        return ($arr);
    }

yo pondria

Código: [Seleccionar]
public function buscar($buscar) {

        $sql = "SELECT * FROM f11 " .
                "where id = '" . $buscar . "'";
        $rs = $this->consulta($sql);

        $registros = "";
        while ($row = mysqli_fetch_array($rs, MYSQLI_ASSOC)) {
            $registros .= '<tr>';
            $registros .= '<td>' . $row["id"] . '</td>';
            $registros .= '<td>' . $row["oficio"] . '</td>';
            $registros .= '<td>' . $row["movimiento"] . '</td>';
            $registros .= '</tr>';
        }

       
        return ($registros);
    }

la pagina php que llama a la clase

Código: [Seleccionar]
<?php

require_once '../clases/f11.class.php';

$buscar $_POST['busca'];

error_log("--> " $buscar);


$f11 = new f11();
echo 
$f11->buscar($buscar);


?>




y en el jquery

Código: [Seleccionar]
function buscar() {
     
    //console.log("--> "+datos_formulario);
    $.ajax({
        type: 'POST',
        url: 'php/buscar.php',
        data: $('#cdr').serialize(),
       
        beforeSend: function (objeto) {

        },
        success: function (data) {
            $("#contenido").html(data);
        },
        error: function (e) {
            alert("No se puedo conectar al servidor");
        },
        complete: function (objeto, exito, error) {

        }
    });
}


No se si es correcto o da algun problema de tipo seguridad o lo que sea. Esperemos que algun administrador que controle de php o otro usuario nos ayude a saber si mejor json_encode siempre o para arrays solo. Saludos.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2635
    • Ver Perfil
Buenas json_encode básicamente pienso que deba usarse cuando quieras representar la información en formato json, que es un formato normalizado y por tanto te permite muchas más funcionalidades que si tienes los datos en un formato no normalizado.

En general será interesante usar json cuando tengas que escribir a archivo o hacer la información de alguna manera persistente (incluso podrías guardar una cadena json en una base de datos). En otros casos a lo mejor no tiene demasiado interés.

Ejemplo

Código: [Seleccionar]
<?php
$arr 
= array('a' => 1'b' => 2'c' => 3'd' => 4'e' => 5);

echo 
json_encode($arr);
?>


Devuelve {"a":1,"b":2,"c":3,"d":4,"e":5}

Esto tiene la ventaja de estar normalizado.

Un aspecto interesante de usar json es que en cierta medida independizas los datos de la lógica del programa. Por ejemplo un archivo con datos en formato json podrás mantenerlo aunque cambies la lógica del programa. En cambio si tienes un archivo con datos organizados "a tu aire" tendrás que cambiar su estructura (o adaptarte a ella) cuando cambies la lógica del programa.

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".