Foros del Web » Programando para Internet » PHP »

¿Me hechan una mano?

Estas en el tema de ¿Me hechan una mano? en el foro de PHP en Foros del Web. Buenas. Explico mi problema. Ya tengo la mitad hecha y la otra parte no puedo llegar a hacerlo, es practicamente lo mismo, pero no entiendo ...
  #1 (permalink)  
Antiguo 17/12/2009, 06:39
 
Fecha de Ingreso: septiembre-2006
Mensajes: 97
Antigüedad: 17 años, 7 meses
Puntos: 1
¿Me hechan una mano?

Buenas.
Explico mi problema. Ya tengo la mitad hecha y la otra parte no puedo llegar a hacerlo, es practicamente lo mismo, pero no entiendo por qué no me resulta.

Tengo dos listbox, uno padre y otro hijo. El hijo se carga por el padre.
Ahora, cada vez que se cambian los listbox, se carga nuevamente la pagina, para asi yo obtener los registros id de la bd y cuando se carga lo envio a un textbox (que mas adelante usaré oculto)....

Con el listbox padre, cuando lo cargo, si me lanza el id de la bd al textbox.
Pero con el listbox hijo no me resulta. No entiendo qué pasa.
Resulta que es para mi trabajo y necesito ayuda....
Miren dejo el código php y el de los registros de la bd para que puedan importar, si acaso alguien me quiere ayudar....
Seguiré intentando mientras tanto...

CODIGO PHP:

<?php
// datos de conexión a la BD.
$servidor ="localhost"; // host
$usuario ="root";
$clave ="";
$basedatos ="inventario"; // Indicar una Base de datos.





// Conexión a la BD
$conexion = mysql_connect($servidor, $usuario, $clave) or die(mysql_error());
mysql_select_db($basedatos, $conexion) or die(mysql_error());


// Obtener el $id_padre del envío a sí mismo del formulario ...

if (isset($_POST['id_equipo']) && ($_POST['id_interno']) )
{
$id_equipo =$_POST['id_equipo'];
$id_interno = $_POST['id_interno'];
}


// Inicio Formulario .. PHP_SELF enviamos a sí mismo (a este script).
echo "<form action='".$_SERVER['PHP_SELF']."' method='POST'>\n\n";


// Formar Selec "Padre".
echo "Tipo de Equipo :<select name='id_equipo' onChange='this.form.submit()'>\n";
echo "<option value=''> ------Seleccione------ </option>\n";

$SQLconsulta_equipo="SELECT * FROM equipos";
$consulta_equipo = mysql_query($SQLconsulta_equipo,$conexion) or die(mysql_error());

while ($registro_equipo=mysql_fetch_assoc($consulta_equi po)){
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo.
// Se selecciona en consecuencia (selected) la opción elegida.
$selected= ($id_equipo == $registro_equipo['id_equipo']) ? 'selected="selected"' : '';
echo "<option value='".$registro_equipo['id_equipo']."' $selected>".$registro_equipo['nom_equipo']."</option>\n";
}
echo "</select>\n\n";

mysql_free_result($consulta_equipo); // Liberar memoria usada por consulta.

// Formar Select "Hijo"


echo "Código de Equipo : <select name='id_interno' onChange='this.form.submit()' >\n";

// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opción del select hijo
// se muestra el mensaje de "seleccine un item" (del select padre).
if (!empty($id_equipo))
{

$SQLconsulta_interno="SELECT * FROM cod_internos WHERE id_equipo='$id_equipo'";
$consulta_interno = mysql_query($SQLconsulta_interno,$conexion) or die(mysql_error());
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select ..
if (mysql_num_rows($consulta_interno) != 0)
{
while ($registro_interno=mysql_fetch_assoc($consulta_int erno))
{
$selected= ($id_interno == $registro_interno['id_interno']) ? 'selected="selected"' : '';
echo "<option value='".$registro_interno['id_interno']."' $selected>".$registro_interno['num_equipo']."</option>\n";
}
}
else {
echo "<option value=''> No hay registros para este equipo</option>";
}
} else
{
echo "<option value=''>Código Equipo</option>";
}


mysql_free_result($consulta_hija); // Liberar memoria usada por consulta.

echo "</select>\n\n";
echo "</form>\n";

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<input name='id_equipo' type='text' value='<?php printf ($id_equipo["id_equipo"]);?>' />
<input name='id_interno' type='text' value='<?php printf ($id_interno['id_interno']);?>' />
</body>
</html>





BASE DE DATOS PARA IMPORTAR:


-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 17-12-2009 a las 11:55:41
-- Versión del servidor: 5.1.36
-- Versión de PHP: 5.3.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de datos: `inventario`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `cod_internos`
--

CREATE TABLE IF NOT EXISTS `cod_internos` (
`id_interno` bigint(20) NOT NULL AUTO_INCREMENT,
`id_equipo` bigint(20) NOT NULL,
`num_equipo` varchar(255) DEFAULT NULL,
`serie_equipo` varchar(255) NOT NULL,
`capran_equipo` varchar(255) NOT NULL,
`marca_equipo` varchar(255) NOT NULL,
`prove_equipo` varchar(255) NOT NULL,
`fadq_equipo` varchar(255) NOT NULL,
`certi_equipo` varchar(255) NOT NULL,
`emp_certi` varchar(255) NOT NULL,
`estado_equipo` varchar(255) NOT NULL,
`obs_equipo` varchar(255) NOT NULL,
PRIMARY KEY (`id_interno`),
UNIQUE KEY `num_equipo` (`num_equipo`),
KEY `id_equipo` (`id_equipo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=529 ;

--
-- Volcar la base de datos para la tabla `cod_internos`
--

INSERT INTO `cod_internos` (`id_interno`, `id_equipo`, `num_equipo`, `serie_equipo`, `capran_equipo`, `marca_equipo`, `prove_equipo`, `fadq_equipo`, `certi_equipo`, `emp_certi`, `estado_equipo`, `obs_equipo`) VALUES
(502, 4, 'ki-1', 'lkjlj', 'lkj', 'lkj', 'ljlkasdlkj', 'lkjasd lk', 'j alksd lkj', 'lkjasd as kj', '', 'lk'),
(503, 1, 'ra-40', '', '', '', '', '', '', '', '', ''),
(504, 4, 'ki-2', '', '', '', '', '', '', '', '', ''),
(505, 3, 'jajaja-20', '', '', '', '', '', '', '', '', ''),
(506, 4, 'ki-3', '', '', '', '', '', '', '', '', ''),
(507, 4, 'ki-4', '', '', '', '', '', '', '', '', ''),
(508, 4, 'ki-5', '', '', '', '', '', '', '', '', ''),
(522, 5, 'ma-2', '867876', '876', '876', '876', '876', '87', '6876', '', '67'),
(523, 6, 'xi-1', '876', '876', '87', '6876', '86', '86', '68', '', '86'),
(524, 3, 'jajaja-21', '', '', '', '', '', '', '', '', ''),
(525, 3, 'jajaja-22', '', '', '', '', '', '', '', '', ''),
(526, 3, 'jajaja-23', 'jiji', 'jiji', 'ji', 'ij', 'ijij', 'ij', 'ij', 'ij', 'ij\r\n'),
(527, 4, 'ki-6', '', '', '', '', '', '', '', '', ''),
(528, 7, 'kjkjk-1', '', '', '', '', '', '', '', '', '');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `equipos`
--

CREATE TABLE IF NOT EXISTS `equipos` (
`id_equipo` bigint(20) NOT NULL,
`nom_equipo` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id_equipo`),
UNIQUE KEY `nom_equipo` (`nom_equipo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Volcar la base de datos para la tabla `equipos`
--

INSERT INTO `equipos` (`id_equipo`, `nom_equipo`) VALUES
(4, 'cuarto'),
(5, 'Maximo'),
(1, 'primero'),
(2, 'segundo'),
(7, 'septimo'),
(6, 'sexto'),
(3, 'tercero');

--
-- Filtros para las tablas descargadas (dump)
--

--
-- Filtros para la tabla `cod_internos`
--
ALTER TABLE `cod_internos`
ADD CONSTRAINT `cod_internos_ibfk_1` FOREIGN KEY (`id_equipo`) REFERENCES `equipos` (`id_equipo`);
  #2 (permalink)  
Antiguo 17/12/2009, 06:46
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: ¿Me hechan una mano?

@Rafagedon: con todo respeto, en el foro no hacen trabajos ni tareas, etc, etc.
aqui solo se presta ayuda, consejos y aclaran dudas.
si tienes algo puntual que preguntar, hazlo, pero si quieres que programen por ti, lo tendras dificil.
Saludos!
  #3 (permalink)  
Antiguo 17/12/2009, 06:54
 
Fecha de Ingreso: septiembre-2006
Mensajes: 97
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: ¿Me hechan una mano?

Fairy_boy, si tienes razón en lo que me dices.
No pido que me programen jejeje... Si la cosa es saber uno como se genera el código.
Pero estoy trancado con eso...
Este código lo he ido haciendo de a poco, pero no se por qué esa parte no puedo realizar lo mismo con el listbox hijo lo mismo que hice con el padre....
Aun estoy tratando, no logro hacerlo....
No pido que me programen, sino que me puedan orientar por dónde puede ir el asunto....
Gracias :)
  #4 (permalink)  
Antiguo 17/12/2009, 12:46
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: ¿Me hechan una mano?

Hola,

Si utilizas PHP para que en el listbox hijo se carguen los datos según el obtenido del listbox padre, debes recargar.

Es decir, en el evento al hacer clic del "padre" recargas la página pasándole el valor clave de ese "padre" por URL de manera que al principio del fichero PHP tengas un condicional donde compruebes que si el valor pasado por URL es distinto de vacío, genere una consulta y lo cargue en el "hijo".

De esta forma ya tendrías el "hijo" con datos y simplemente seleccionando en el "hijo" el dato, después lo tratas en el fichero de procesado según con el método por el que envíes el formulario: GET o POST.

De esta forma lo realizo yo y me funciona.

Ojo: se puede dar el caso que el usuario sea mal intencionado y modifique a conciencia el valor pasado por URL.

En la parte del inicio de la página donde tienes ese condicional para realizar la consulta, deberás tener en cuenta que si el valor no existe en la base de datos (esto da a entender que el valor se ha modificado a conciencia) entonces podrías mostrar un mensaje de error de que el valor obtenido ha sido modificado sin autorización o algo asi.

Espero hayas comprendido todo el proceso. Es bastante sencillo.

Si tienes dudas en puntos concretos, como bien dice Fairy_Boy te podemos ayudar en esos puntos pero no para hacer el código completo por ti.

Saludos y ya nos contarás.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:27.