Foros del Web » Programando para Internet » PHP »

problema con Selects dependientes o combobox

Estas en el tema de problema con Selects dependientes o combobox en el foro de PHP en Foros del Web. Hola que tal, he estado trabajando en un sistema de tickets donde el usuario por medio de un formulario ingresa los problemas a la base ...
  #1 (permalink)  
Antiguo 23/07/2014, 16:06
 
Fecha de Ingreso: julio-2014
Mensajes: 22
Antigüedad: 9 años, 9 meses
Puntos: 0
problema con Selects dependientes o combobox

Hola que tal, he estado trabajando en un sistema de tickets donde el usuario por medio de un formulario ingresa los problemas a la base de datos y estos son pasados a otra persona que se encarga de atenderlos....

el problema recae en la parte del formulario se pidio que hubiese un select dependiente, antes que nada, explico que soy un informatico demasiado novato, asi que no se muchisisisisismo de programacion, pero me encuentro investigando y tratando de hacer todo, aunque muchas cosas no tengo ni idea de como o algo por el estilo, en fin, sigo...

el select dependiente es, primero se selecciona si fue un INCIDENTE o un REQUERIMIENTO, si es INCIDENTE se despliega el segundo select, donde muestra: software, hardware o internet
y si damos click en REQUERIMIENTO
se despliega el segundo select pero ahora con las opciones: Instalacion/desinstalacion, Reubicacion y Cambio, a su vez estos despliegan otro select con la especificacion del problema

tenia la duda de como hacer esto, pero entre tanto buscar pues vi que era mejor crear una base de datos donde por medio de foraneas fuera uniendo los selects

dejo una foto con mas o menos la idea





pero pues no logro hacer que los selects actuen de esa manera, tambien tenia la duda de como mandar las variables a la base de datos para que una vez registrada la informacion el que se encargara de los reportes pueda verla con detalle, dejo tambien los codigos que estoy utilizando

reporte.php
Código PHP:
<?php
include("./funciones/funciones.php"); 
$con conecta(); 
$sql "SELECT * FROM reporte";
$res mysql_query($sql$con); 
$num mysql_num_rows($res); 

$rs mysql_query("SELECT MAX(id) AS id FROM reporte");
if (
$row mysql_fetch_row($rs)) {
$id trim($row[0]) +1;
}
?>
<script>
    function validar(){
        var empresa = document.reporte.empresa.value;
        var nombre = document.reporte.nombre.value;
        var correo = document.reporte.correo.value;
        var ubicacion = document.reporte.ubicacion.value;
        var categoria = document.reporte.categoria.value;
        var observaciones = document.reporte.observaciones.value;
        if(empresa == "" || nombre == "" || correo == "" || ubicacion == "" || categoria == "" || observaciones == ""){
            alert("Faltan campos obligatorios!");
        }
        else{
            alert("Formulario llenado correctamente.");
            document.reporte.submit();
        }
        alert ("Tu numero de reporte es el siguiente: \n\n" +' <?php echo $id;?>' + "\n\nEl Reporte fue pasado al Ingeniero \n Orlando Rizo \n Su numero de Extension es:\n2476")  
    } 
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>----Reporte de fallos----</title>
<link rel="stylesheet" href="./css/estilos.css" type="text/css" />
<link href="layout.css" rel="stylesheet" type="text/css" />
<script src="Funciones/js/jquery-1.2.6.min.js" type="text/javascript"></script>
<script src="maxheight.js" type="text/javascript"></script>
</head>
<body background="./imagenes/bg_top3.gif" >
    <div class="contenedorHeader"></div>
    <!--Inicia header-->
    <div class="encabezado"></div>
    </div>
    <!--/header-->
    <div class="contenido"></div>
    <div class="error" id="msgError"></div>
    </div>
    <!--/contenido-->
    <div class="formulario_fallo">
    <form name="reporte" id="reporte" method="POST" enctype="multipart/form-data"  action="fallo.php">
        <table width="80%" border="0" align="center" cellpadding="1" cellspacing="20" bordercolor="#CCCCCC" >
            <tr>
                <td>Empresa</td>
                <td><select name="empresa">
                    <?php
                    
include("./funciones/funciones.php"); 
                    
$con conecta(); 
                    
$sql "SELECT * FROM empresa";
                    
$res mysql_query($sql$con); 
                    
$num mysql_num_rows($res); 
                    
?>    
                    <?php
                    
for($i=0;$i<$num;$i++){ 
                    
$id mysql_result($res$i"id") ; 
                    
$nombre mysql_result($res$i"nombre"); 
                    echo 
"<option value=\"$id\">$nombre</option>";
                        } 
            
?></td>
            </tr>
            <tr>
                <td>Nombre</td>
                <td><input type="text" name="nombre" id="nombre" size="40"></td>
            </tr>
            <tr>
                <td>Correo</td>
                <td><input type="text" name="correo" id="correo" size="40"></td>
            </tr>
            <tr>
                <td>Ubicacion</td>
                <td><select name="ubicacion">
                    <?php
                    
include("./funciones/funciones.php"); 
                    
$con conecta(); 
                    
$sql "SELECT * FROM ubicacion";
                    
$res mysql_query($sql$con); 
                    
$num mysql_num_rows($res); 
                    
?>    
                    <?php
                    
for($i=0;$i<$num;$i++){ 
                    
$id mysql_result($res$i"id") ; 
                    
$nombre mysql_result($res$i"nombre"); 
                    echo 
"<option value=\"$id\">$nombre</option>";
                        } 
            
?></td>
            </tr>
            <tr>
                <td>Tipo de falla</td>
                <td>
                    <select name="categoria" value="categoria" >            
                    <option value="incidente">Incidente</option>
                      <option value="requerimiento">Requerimiento</option> 
                    </select>
                    <select name="categoria2" id="categoria2">
                        <?php
                      $_REQUEST
['categoria2'];
                      if (
$_REQUEST['categoria2'] = "incidente") {
                          
$sql "SELECT id, clase_fallo FROM fallos WHERE tipo_fallo = 'incidente'";
                           
$res mysql_query($sql$con); 
                          
$num mysql_num_rows($res);
                    for(
$i=0;$i<$num;$i++){ 
                    
$id mysql_result($res$i"id") ; 
                    
$nombre mysql_result($res$i"clase_fallo"); 
                    echo 
"<option value=\"$id\">$nombre</option>";
                      }}
                      else {
                          
$sql1 "SELECT id, clase_fallo FROM fallos WHERE tipo_fallo = 'requerimiento'";
                          
$res mysql_query($sql1$con); 
                          
$num mysql_num_rows($res);
                      for(
$i=0;$i<$num;$i++){ 
                    
$id mysql_result($res$i"id") ; 
                    
$nombre mysql_result($res$i"clase_fallo"); 
                    echo 
"<option value=\"$id\">$nombre</option>";
                        } }
                    
?>    
                    </select><select name="categoria3" id="categoria3">    
                    <?php
                    
include("./funciones/funciones.php"); 
                    
$con conecta(); 
                    
$sql "SELECT * FROM categoria";
                    
$res mysql_query($sql$con); 
                    
$num mysql_num_rows($res); 
                    
?>    
                    <?php
                    
for($i=0;$i<$num;$i++){ 
                    
$id mysql_result($res$i"id") ; 
                    
$nombre mysql_result($res$i"categoria"); 
                    echo 
"<option value=\"$id\">$nombre</option>";
                        } 
            
?>    
                    </select>
            </tr>
            <tr>
                <td>Observaciones</td>
                <td><textarea cols="70" rows="5" name="observaciones"></textarea> </td>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit" value="Enviar" id="btnEnviar" onClick="validar(); return false;"/></td>
            </tr>
        </table>
    </form>
</div>
    <div class="pie">
    </div>
    <!--/pie-->
    </div>
    <!--contenedorHeader-->
</body>
</html>
funciones.php (este es el que se encarga de la conexion)

Código PHP:
<?php
//conexion de la base de datos
define("HOST","localhost");//para definir constantes
define("BD","hemac1");
define("USER","root");
define("PASS","root");
function 
conecta(){
    if(!(
$con mysql_connect(HOST,USER,PASS))){
        echo 
"Error conectado al servidor de BBDD";
        exit();  
//sales de la funcion
    
}
    if(!
mysql_select_db(BD,$con)){
        echo 
"Error seleccionando la BD";
        exit();
    }
    return 
$con;
}
?>
fallo.php (este es el que se encarga de mandar las variables a la base)

Código PHP:
<?php

include("./funciones/funciones.php");
$con conecta ();
$empresa=$_POST['empresa'];
$nombre=$_POST['nombre'];
$correo=$_POST['correo'];
$ubicacion=$_POST['ubicacion'];
$categoria=$_POST['categoria'];
$observaciones=$_POST['observaciones'];
$sql="INSERT INTO reporte VALUES (0,$empresa,'$nombre','$correo',$ubicacion,$categoria,'$observaciones',1)";
mysql_query($sql,$con);
$header 'From: ' $correo ."\r\n"
$header .= "X-Mailer: PHP/" phpversion() . " \r\n"
$header .= "Mime-Version: 1.0 \r\n"
$header .= "Content-Type: text/plain"
$mensaje "Este mensaje fue enviado por " $nombre " \r\n"
$mensaje .= "Su e-mail es: " $correo " \r\n"
$mensaje .="estas son las observaciones".$_POST['observaciones'] . " \r\n"
$mensaje .= "Enviado el " date('d/m/Y'time()); 
$para '[email protected]'
$asunto '-'
mail($para$asuntoutf8_decode($mensaje), $header); 
header("Location: reporte.php");
?>
este es el css

[URL="http://www.mediafire.com/view/dk8b1lebcvd5jk0/estilos.css"]http://www.mediafire.com/view/dk8b1lebcvd5jk0/estilos.css[/URL]

[URL="http://www.mediafire.com/view/4nmy9deh6gr1ax3/hemac1.sql"]esta es mi base de datos[/URL]


espero y alguien pueda ayudarme, de verdad
llevo semanas con esto y nomas no me sale, ya borre todo y empece desde cero y esto es lo que consegui, pero me vuelvo a atorar en lo mismo

saludos!
  #2 (permalink)  
Antiguo 23/07/2014, 17:14
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: problema con Selects dependientes o combobox

Si las opciones de los combos son fijas, te sugiero no usar base de datos, y podrías hacer la dependencia de los combos por javascript. Si las opciones son muchas o pueden crecer, entonces sí, una base de datos y ajax.

Te sugiero no maquetar los datos de tu formulario con tablas, es un desperdicio de código y hace poco legible lo importante, en vez de eso, usa etiquetas (<label>) con css para dar forma.

Si no sabes de ajax y javascript, te sugiero visitar este aporte que hice con xajax (una librería para usar ajax con php)

Etiquetas: combobox, dependientes, formulario, html, mysql, select, selects, sql, variable
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 10:07.