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
-
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.
<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> </p>
<br>
-
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.
-
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.
-
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
<!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> </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
<?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
<?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($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);
}
}
?>
php es otra carpeta donde van los codigo php
<?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
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.
-
Buen código dranxz88.
-
Una consulta usas json encode para devolver un simple echo en un array, en este caso no haria falta pues seria devuelto
$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
-
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.
-
Bueno en este caso yo no tengo mucha idea de como es la mejor forma de proceder.
Pero en lugar de 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
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
<?php
require_once '../clases/f11.class.php';
$buscar = $_POST['busca'];
error_log("--> " . $buscar);
$f11 = new f11();
echo $f11->buscar($buscar);
?>
y en el jquery
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.
-
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
<?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