Foros del Web » Programando para Internet » PHP »

Importante: Select Asociado - FAQs de PHP

Estas en el tema de Importante: Select Asociado - FAQs de PHP en el foro de PHP en Foros del Web. Un sencillo ejm: de select asosociado y con su base de datos Código PHP: //Ingresar datos de la base de datos $server = "localhost";  $user = "root"; $pass = "pass"; // Contraseña $db = "basedatos";    // Nombre de la Base de Datos //Conexión a la base de datos $conectar = mysql_connect($server, $user, $pass); mysql_select_db($db, $conectar); ?> <script> function selectAsociado(){ ...
  #1 (permalink)  
Antiguo 03/03/2005, 15:51
Avatar de alexis77  
Fecha de Ingreso: diciembre-2003
Mensajes: 119
Antigüedad: 14 años
Puntos: 0
Select Asociado Javascript+mysql+php

Un sencillo ejm: de select asosociado y con su base de datos
Código PHP:
//Ingresar datos de la base de datos
$server = "localhost"; 
$user = "root";
$pass = "pass"; // Contraseña
$db = "basedatos";    // Nombre de la Base de Datos


//Conexión a la base de datos
$conectar = mysql_connect($server, $user, $pass);
mysql_select_db($db, $conectar);


?>

<script>
function selectAsociado(){
var seccion
seccion = document.form1.seccion[document.form1.seccion.selectedIndex].value
if (seccion != 0) {
mis_subsecc=eval("secc_sub" + seccion)
num_seccisub = mis_subsecc.length
document.form1.subseccion.length = num_seccisub
for(i=0;i<num_seccisub;i++){
document.form1.subseccion.options[i].value=mis_subsecc[i]
document.form1.subseccion.options[i].text=mis_subsecc[i]
}
}else{
document.form1.subseccion.length = 1
document.form1.subseccion.options[0].value = "-"
document.form1.subseccion.options[0].text = "-"
}
document.form1.subseccion.options[0].selected = true

</script>

<?php
echo "<script>";
$result mysql_query("SELECT id_seccion FROM seccion");
while(
$row mysql_fetch_array($result)) {
echo 
"var secc_sub".$row[id_seccion]."= new Array('---'";
$result2 mysql_query("SELECT subseccion FROM sub_seccion WHERE id_secc = '$row[id_seccion]'");
while(
$row2 mysql_fetch_array($result2)) {
echo 
", '$row2[subseccion]'";
}
echo 
")\n";
}
echo 
"</script>";


echo 
"<form name=\"form1\">
<table width=\"50%\">
<tr>
<td>Sección:</td>
<td>
<select name=\"seccion\" onchange=\"selectAsociado()\">\n
<option value=\"0\">[-- Seleccione --]</option>\n"
;
$query1 "SELECT id_seccion, seccion FROM seccion ORDER BY seccion ASC";
$result1 mysql_query($query1);
while (
$rows1 mysql_fetch_array($result1)){
echo 
"<option value=\"{$rows1[0]}\"";
if (
$rows["id_seccion"] == $rows1[0]) echo " selected";
echo 
"\">" .$rows1[1]. "</option>\n";
}
mysql_free_result($result1);
echo 
"</select>
</td>
</tr>
<tr>
<td>Sub Sección:</td>
<td>
<select name=\"subseccion\">
<option value=\"-\">---</select>
</td>
</tr>
</table>
</form>"
;
?>

Dase de Datos
Copie y pegue en phpMyadmin, para los q tengan


CREATE TABLE `seccion` (
`id_seccion` tinyint(2) NOT NULL auto_increment,
`seccion` varchar(20) NOT NULL default '',
PRIMARY KEY (`id_seccion`)
) TYPE=MyISAM AUTO_INCREMENT=5 ;

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

INSERT INTO `seccion` VALUES (1, 'Deportes');
INSERT INTO `seccion` VALUES (2, 'Música');
INSERT INTO `seccion` VALUES (3, 'Sexo');
INSERT INTO `seccion` VALUES (4, 'Automivilismo');

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

--
-- Estructura de tabla para la tabla `sub_seccion`
--

CREATE TABLE `sub_seccion` (
`id_subsec` int(3) NOT NULL auto_increment,
`id_secc` tinyint(3) NOT NULL default '0',
`subseccion` varchar(255) default NULL,
PRIMARY KEY (`id_subsec`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;

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

INSERT INTO `sub_seccion` VALUES (1, 1, 'Futbol');
INSERT INTO `sub_seccion` VALUES (2, 1, 'Surf');
INSERT INTO `sub_seccion` VALUES (3, 1, 'Futbol Americano');
INSERT INTO `sub_seccion` VALUES (4, 4, 'Rali');
INSERT INTO `sub_seccion` VALUES (5, 3, 'Sexualidad');
INSERT INTO `sub_seccion` VALUES (6, 4, 'Formula 1');
INSERT INTO `sub_seccion` VALUES (7, 3, 'Sexo');
INSERT INTO `sub_seccion` VALUES (8, 2, 'Rock');
INSERT INTO `sub_seccion` VALUES (9, 2, 'POP');

Última edición por alexis77; 07/03/2005 a las 10:21
  #2 (permalink)  
Antiguo 03/03/2005, 17:13
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 12 años, 9 meses
Puntos: 0
Gracias Alexis, también me sirvió tu código.
  #3 (permalink)  
Antiguo 04/03/2005, 05:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No recuerdo si hay una FAQ que explique este mismo método (existe una pero usa integramente PHP .. no carga "arrays" de javascript).

Te invito a revisar las FAQ's a ver si no hay un tema igual y si no es así .. publicarlo ahí (las FAQ's son libres de uso, cualquier si lo desea puede publicar una .. así no quedará en el olvido este mensaje).

Un saludo,
  #4 (permalink)  
Antiguo 07/03/2005, 05:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
La FAQ que te hacía mención es:
http://www.forosdelweb.com/f18/faqs-php-530600-post664999/

Un saludo,
  #5 (permalink)  
Antiguo 07/03/2005, 07:40
Avatar de alexis77  
Fecha de Ingreso: diciembre-2003
Mensajes: 119
Antigüedad: 14 años
Puntos: 0
Interesante el script y todo en php , pero recarga la pagina y eso lo que no quiero..., al menos en mi caso y lo puse para los que lo quieran usar y si no lo eliminas del foro
  #6 (permalink)  
Antiguo 07/03/2005, 08:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si, .. claro .. la versión "PHP sólo" tiene ese efecto .. "recarga de página" .. pues todo se ejecuta en el "servidor". Tu solución es otra alternativa más de las "3" que conozco ....

Estaría bueno que vieses la solución vía "Remote Scripting" que hago mención en el mismo link de la FAQ que te mencioné. Esa solución no recarga la página "aparentemente" .. (recarga un "frame o iframe" oculto) y el "traspaso" de variables lo hace vía javascript desde el frame a la página pádre.

Todos estos métodos en su fin cumplen su función ...pero dependiendo del caso concreto alguno va mejor que otros.

Por ejemplo .. la versión "PHP" va bien (pese que se recarga la página) si tienes mucha cantidad de datos que presentar en tus "select" ("combos") asociados , pues .. si te fijas .. en la versión javascript tienes que generar ese "array" que va a contener todas las posibles combinaciones que existan .. Como todo ese "proceso" se va hacer en el "cliente" .. si topas con un PC "lentium" ese proceso tal vez sea mucho para el "cliente" (el navegador y PC que lo ejecute). La versión "Remote Scripting" es más "compleja" de implementar en muchos casos .. (para adpatarlo a tu modelo de datos) pero no tiene los problemas ni de recarga de página .. ni de cantidad de datos a manejar ... tendrá problemas sobre el javascript usado y los frames/iframes y compatibilidad en ciertos navegadores ..

Un saludo,

Última edición por Cluster; 07/03/2005 a las 08:06
  #7 (permalink)  
Antiguo 20/03/2005, 15:40
 
Fecha de Ingreso: marzo-2005
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Sonrisa thanks

hoy alexis gracis por el codigo ta bueno cualquier cosa sobre diseño etc me manda un mail "[email protected]" o visita mi website "www.fiscom.org"
  #8 (permalink)  
Antiguo 04/04/2005, 19:56
Usuario no validado
 
Fecha de Ingreso: abril-2005
Ubicación: AS27845
Mensajes: 2
Antigüedad: 12 años, 8 meses
Puntos: 0
Valor de subseccion

Hola tengo un problema que necesito que la variable subseccion tenga el valor que tiene en la base de datos por que actualmente me coloca El texto pero yo quiero que me mande el valor.

Gracias
  #9 (permalink)  
Antiguo 04/05/2006, 04:07
 
Fecha de Ingreso: mayo-2006
Mensajes: 10
Antigüedad: 11 años, 7 meses
Puntos: 0
Cita:
Iniciado por caplinux
Hola tengo un problema que necesito que la variable subseccion tenga el valor que tiene en la base de datos por que actualmente me coloca El texto pero yo quiero que me mande el valor.

Gracias
a mi me pasa exactamente lo mismo y no se como solucionarlo...

una ayudita alexis77 :)
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

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 11:36.