Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: leandrogo en 07 de Septiembre 2016, 18:14

Título: HTML PHP MySQl Buscador con combobox que despliegue información de base datos
Publicado por: leandrogo en 07 de Septiembre 2016, 18:14
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>
Título: Re:Buscador con combobox
Publicado por: DRANXZ88 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 (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 (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.
Título: Re:Buscador con combobox
Publicado por: DRANXZ88 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.
Título: Re:Buscador con combobox
Publicado por: DRANXZ88 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.
Título: Re:HTML PHP MySQl Buscador con combobox que despliegue información de base datos
Publicado por: Lorenzo31 en 25 de Septiembre 2016, 18:27
Buen código dranxz88.

Título: Re:HTML PHP MySQl Buscador con combobox que despliegue información de base datos
Publicado por: Lorenzo31 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
Título: Re:HTML PHP MySQl Buscador con combobox que despliegue información de base datos
Publicado por: DRANXZ88 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.
Título: Re:HTML PHP MySQl Buscador con combobox que despliegue información de base datos
Publicado por: Lorenzo31 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.
Título: Re:HTML PHP MySQl Buscador con combobox que despliegue información de base datos
Publicado por: Ogramar en 08 de Octubre 2016, 18:36
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