entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Combo jquery

Este combo que estoy usando en una pagina que se supone que debe de mostrar las opciones dentro de una base de datos dependiendo de la primera seleccion que haga
enter image description here

todo funciona bien solo que al selecionar proveedores no carga los datos de la base segun yo aqui es donde esta el error pero no logro encontrarlo

<?php
    $usr = "wearbyte_root";
    $p3s3 = "alvaroobregon1930";
    $dtb = "wearbyte_almacen";
    $link = mysql_connect("localhost", $usr, $p3s3);
    $conexion = mysql_connect("localhost", $usr, $p3s3);
    mysql_select_db($dtb, $link) or die(mysql_error());
    $q=$_POST['q'];
    $con=$conexion;
    $desc = "";
    if ($q != "proveedor") {
        $desc = "descripcion";
        $res=mysql_query("SELECT * FROM " . $q, $conexion);
    }
    else{
        $desc = "nombre";
        $res=mysql_query("SELECT * FROM " . $q, $conexion);
    }
?>
<select name="origenop">
    <?php while($fila=mysql_fetch_array($res)){ ?>
     <option><?php echo $fila[$desc]; ?></option>
    <?php }?>
</select>

0voto

white comentado

cual es el código javascript y html? es una peticion ajax? podrias revizar la consola de tu navegador y ver como devuelve la peticion ajax?

por cierto, no estas filtrando tus variables, podrias recibir una inyeccion sql facilmente.

0voto

romancoronadoa comentado

<!DOCTYPE html>
<html>
<head>
    <script src="ajax.js"></script>
</head>
<body>
    <?php
        $res=mysql_query("SELECT * FROM departamentos",$conexion);
    ?>
    <table>
        <tr>
            <td>
                <select name="origen" id="cont" onchange="load(this.value)">
                    <option value="">Seleccione</option>
                    <option value="departamentos">Departamento</option>
                    <option value="proveedores">Proveedor</option>
                    <option value="ajustes">Ajuste</option>
                </select>&nbsp;&nbsp;
            </td>
            <td>
                <div id="myDiv"></div>
            </td>
        </tr>
    </table>
</body>
</html>

function load(str){
var xmlhttp;
  if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  }
  else{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function(){
  if (xmlhttp.readyState==4 && xmlhttp.status==200){
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
  }
}
  xmlhttp.open("POST","proc.php",true);
  xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  xmlhttp.send("q="+str);
}

1 Respuesta

2votos

white Puntos75880

$q recibe como valores "proovedores" pero no "proovedor", segun el atributo value de <option>

<option value="proveedores">Proveedor</option>

recuerda que estas enviando el valor del <select> no el html de sus opciones.


intenta reemplazar esto:

if ($q != "proveedor") {
    $desc = "descripcion";
    $res=mysql_query("SELECT * FROM " . $q, $conexion);
}
else{
    $desc = "nombre";
    $res=mysql_query("SELECT * FROM " . $q, $conexion);
}

por esto:

$desc = $q != "proveedores" ? "descripcion" : "nombre";
$q = htmlspecialchars($q, ENT_QUOTES);
$res = mysql_query("SELECT * FROM " . $q, $conexion);

asegurate de que existan las tablas departamentos, proovedores y ajustes en tu base de datos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta