Foros del Web » Programando para Internet » Javascript »

Problema con Select HTML onChange JS Y PHP

Estas en el tema de Problema con Select HTML onChange JS Y PHP en el foro de Javascript en Foros del Web. Primero que todo Saludarlos y felicitarlos por este genial foro... la verdad que soy nuevo aca y espero poder aportar con conocimiento bueno no doy ...
  #1 (permalink)  
Antiguo 24/06/2008, 11:32
Avatar de gaarellanob  
Fecha de Ingreso: junio-2008
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 0
Problema con Select HTML onChange JS Y PHP

Primero que todo Saludarlos y felicitarlos por este genial foro...
la verdad que soy nuevo aca y espero poder aportar con conocimiento
bueno no doy mas la lataaa tipica

mi problema es el siguiente:

Tengo un select HTML q se llena mediante php( tabla categorias), quiero hacer que al seleccionar un elemento (option) se llene un textarea con la informacion dependiendo del indice (idcategoria), el textarea se llena con productos asignados a una categoria.

tengo mi pequeña BD en MySQL la cual tiene 3 tablas que nos importan ahora
Productos, Categorias y CategoriaProducto.

el asunto es que lleno el select sin problemas

<html>
<body>
<form action="upload.php" method="POST" enctype="multipart/form-data" name="form1">

<script>
function indiceSelect(){


indice=document.form1.nombreDelCombo.selectedIndex ;

document.form1.tomaIndice.value=indice;

//intentos vagos y torpes de pasar un dato js a php.

//<? $elindice; ?> = indice;
//<? echo ocuparDato()?>;

//<?echo $elindice="indice"?>;
//<? echo llenarTextarea($elindice)?>;
}
</script>

<!--upload.php es otro archivo que se encarga de recibir datos de un formulario que tengo q no lo puse por q es extenso, el codigo que viene acontinuacion esta dentro del html que tiene el formulario-->

Código PHP:
<?php
              
                 $dbhost
='localhost';
                 
$dbusername='root';
                 
$dbuserpass='';
                 
$dbname='nombreBaseDatos';
                 
// Conexión a la base de datos


                 
$linkmysql_connect($dbhost$dbusername$dbuserpass);
                 
mysql_select_db($dbname) or die("Cannot select database");

                 

                 
$result=mysql_query("SELECT idcategoria, nombreCategoria FROM Categorias" ,$link);

                 
//el select

                 
if ($row mysql_fetch_array($result)){ 
                 echo 
'<select name= "nombreDelCombo" id="nombreDelCombo" onChange="indiceSelect()">';

                
//indiceSelect captura del lado del cliente el indice seleccionado
                 
                 
                 
echo "<option value='0'>Seleccione Categoria</option>";
                 do { 
                 
//para visualizar bien los caracteres
                 
$row[1]=htmlentities($row[1]);
                 echo 
'<option value= "'.$row[0].'">'.$row[1].'</option>';
                 
                    
                 
                 
                 } while (
$row mysql_fetch_array($result)); 
                 echo 
'</select>';
                 

 


                 }
                
                 else{ echo 
"no se puede cargar";}

                
// se llena el select bien!!

               //codigo para llenar el textarea

               
function llenarTextarea($indice)
                 { 

     
$dbhost='localhost';
                 
$dbusername='root';
                 
$dbuserpass='';
                 
$dbname='nombreBaseDato';
                 
                  
                 
settype($indice"integer");
                 
// Conexión a la base de datos


                 
$linkmysql_connect($dbhost$dbusername$dbuserpass);
                 
mysql_select_db($dbname) or die("Cannot select database");
                     
                     
                 
$consulta=mysql_query("SELECT idproducto, nombreProducto FROM Productos WHERE idproducto IN(SELECT idproductos FROM CategoriaProducto WHERE idcategorias = $indice)" ,$link);
                 
                 echo
'<Textarea cols="30" rows="3" name="textareaBD" id="textareaBD">';

                 while(
$resultadoqery mysql_fetch_array($consulta)){ 
                     
                 echo 
'/'.$resultadoqery[1];
                 }
                 echo 
'</textarea>';


?>
</body>
</html>

DILEMA
el evento onChange del select llama al js, este js toma el indice, como le paso el indice del option del select a mi function php, TODO ESTO con un POSTBACK que debe hacer mi JS...

ojala me haya explicado BIEN y que alguien sepa como orientarme que no me manejo mucho en php ni en js, como se dieron cuenta! creo q tendre que utilizar ajax

NECESITO LA AYUDA de antemano MUCHAS GRACIAS!!
  #2 (permalink)  
Antiguo 24/06/2008, 12:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con Select HTML onChange JS Y PHP

Tienes que enviar el formulario usando form.submit() desde JS.

De todos modos es un problema de JavaScript así que te muevo al foro indicado.

Saludos.
  #3 (permalink)  
Antiguo 25/06/2008, 09:12
Avatar de gaarellanob  
Fecha de Ingreso: junio-2008
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema con Select HTML onChange JS Y PHP

Hey muchas gracias...
tendre q crear otro formulario que envie datos por GET
no se si se podra tener uno con metodo POST y uno con metodo GET a la vez
en un html
el primero q tiene post ocupa el upload de archivos se debe hacer mediante post,
ademas necesito llenar el formulario presionar un booton que inserte un producto en la categoria que seleccione del select, al poner "document.form1.submit()" envia los datos del primer formulario debiese ser asi "document.form2.submit()" y el form2 debiera tener un action a otro php...
cuando lo resuelva publicare la respuesta!!!

Gracias GatorV
  #4 (permalink)  
Antiguo 25/06/2008, 16:11
Avatar de gaarellanob  
Fecha de Ingreso: junio-2008
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema con Select HTML onChange JS Y PHP

eEE YA LO SOLUCIONE
la forma no es de muy buena doctrina, pero me resulto, tendre que hacerlo de buena manera

<form name="form2" id="form2" method="GET" action="nombreDeLaPaginaQueContieneLosDosForm.php" >

<script>
function indiceSelect()
{
indice=document.form2.nombreDelCombo.selectedIndex ;
document.form2.tomaIndice.value=indice;
document.form2.submit();
return indice;
}

</script>

<input type="hidden" name="tomaIndice" id="tomaIndice" value="">

<?php

$dbhost='localhost';
$dbusername='root';
$dbuserpass='';
$dbname='nombreBaseDatos';

// Conexión a la base de datos

$link= mysql_connect($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die("Cannot select database");

//Realizas tu consulta SQL

$result=mysql_query("SELECT idcategoria, nombreCategoria FROM Categorias" ,$link);

//Llenas el combo

if ($row = mysql_fetch_array($result)){
echo '<select name= "nombreDelCombo" id="nombreDelCombo" onChange="indiceSelect()">';

echo "<option value='0'>Seleccione Categoria</option>";
do {
//para visualizar bien los caracteres
$row[1]=htmlentities($row[1]);
echo '<option value= "'.$row[0].'">'.$row[1].'</option>';

} while ($row = mysql_fetch_array($result));
echo '</select>';

}

else{ echo "no se puede cargar";
}

// Conexión a la base de datos

$link= mysql_connect($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die("Cannot select database");
$indice = $_GET["tomaIndice"];
settype($indice, "integer");
$consulta=mysql_query("SELECT idproducto, nombreProducto FROM Productos WHERE idproducto IN(SELECT idproductos FROM CategoriaProducto WHERE idcategorias = $indice)" ,$link);

echo'<Textarea cols="30" rows="3" name="textareaBD" id="textareaBD">';


while($resultadoqery = mysql_fetch_array($consulta)){

echo '<br>'.$resultadoqery[1];
}
echo '</textarea>';




?>



</form>

esa es la solucion
hasta Pronto.
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 02:09.