Foros del Web » Programando para Internet » PHP »

Agregar filas con menulist dentro de las celdas a una tabla mediante un boton

Estas en el tema de Agregar filas con menulist dentro de las celdas a una tabla mediante un boton en el foro de PHP en Foros del Web. Hola a todos!!!! Necesito ir agregando a una tabla sobre html filas por medio de un botón, pero el asunto se complica cuando dentro de ...
  #1 (permalink)  
Antiguo 18/09/2008, 07:38
Avatar de Simbelmyne  
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Agregar filas con menulist dentro de las celdas a una tabla mediante un boton

Hola a todos!!!! Necesito ir agregando a una tabla sobre html filas por medio de un botón, pero el asunto se complica cuando dentro de cada una de esas celdas debe de ir un menulist (combobox, lista desplegable) que tienen que ser llenados dinámicamente

Ahora bien explico un poco más el entorno de mi problema por si hay algunas otras sugerencias . Necesito que un cliente vaya agregando productos en mi pagina, por lo que a mi me gustaria mostrar 5 filas de mi tabla y cada que pulse el boton que se agregue una fila para ir agregando productos a su compra. El detalle es que cada uno de esos productos los tengo clasificados por categoría entonces dentro de una de las celdas ira un combo con las categorias del producto y en la otra celda ira otro combo que contendrá los productos que correspondan a la categoria seleccionada en el primer combo.....

De vdd espero haber sido explicita :S, gracias de antemano a todos y por favor ayuuuuuuudenmeeeeee!!!!!!!!!!!
  #2 (permalink)  
Antiguo 18/09/2008, 08:30
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Agregar filas con menulist dentro de las celdas a una tabla mediante un bo

A ver si entiendo, necesitas generar filas de una tabla, hasta aquí todo bien.
Pero dentro de una celda de esa nueva fila, meter un combobox, que cuyas opciones sacas de una DB, y que cuando escoga una de estas categorias se llene otro combobox que seran los productos.
Si es asi, necesitaras ajax para llenar los combobox.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 18/09/2008, 08:40
Avatar de Simbelmyne  
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Agregar filas con menulist dentro de las celdas a una tabla mediante un bo

si en efecto entendiste lo que quiero hacer, tienes alguna idea :( ??? y gracias por responder
  #4 (permalink)  
Antiguo 18/09/2008, 09:03
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Agregar filas con menulist dentro de las celdas a una tabla mediante un bo

Estoy haciendo unas pruebas, luego te comento como me fue, y te paso el dato si es satisfactorio, pero ya genero las filas, y tengo pensado hacer la consulta de categorias por ajax.
Cuando escoga una opcion del primer combo enviarla tambn por ajax y desplegar el segundo.

Saludos

Editado:

He terminado la prueba y salio supoer satisfactoria.
Aqui te dejo el codigo!
Este es el HTML, donde esta la tabla inicial y funciones javascript
Código PHP:
<!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>
<
script type="text/javascript">
function 
objetoAjax(){
    var 
xmlhttp=false;
    try {
        
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (
e) {
        try {
           
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (
E) {
            
xmlhttp false;
          }
    }

    if (!
xmlhttp && typeof XMLHttpRequest!='undefined') {
        
xmlhttp = new XMLHttpRequest();
    }
    return 
xmlhttp;
}
//Funcion Desarrollada por Jesus Liñán [email protected] ribosomatic.com


function enviarDatos(celdadestinoid)
{    
        
cadenaFormulario='id='+encodeURI(id);
        
//instanciamos el objetoAjax
        
ajax=objetoAjax();
        
//uso del medotod POST
        //archivo que realizará la operacion
        //registro.php
        
ajax.open("POST"destinotrue);
        
ajax.onreadystatechange=function() {
            if (
ajax.readyState==4) {
                
celda.appendChild(document.createTextNode('espere...'));
                
celda.innerHTML=ajax.responseText;

            }
        }
        
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        
//enviando los valores
        
ajax.send(cadenaFormulario);
}
function 
cargaProd(divResuldestinoid)
{    
        
divResultado document.getElementById(divResul);
        
divResultado.innerHTML="<center>Cargando ...</center>";
        
cadenaFormulario='id='+encodeURI(id);
        
//instanciamos el objetoAjax
        
ajax=objetoAjax();
        
//uso del medotod POST
        //archivo que realizará la operacion
        //registro.php
        
ajax.open("POST"destinotrue);
        
ajax.onreadystatechange=function() {
            if (
ajax.readyState==4) {
                
divResultado.innerHTML ajax.responseText;
            }
        }
        
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        
//enviando los valores
        
ajax.send(cadenaFormulario);
}
function 
addNewRow(id){
    var 
tbody document.getElementById(id).getElementsByTagName("TBODY")[0];
    var 
row document.createElement("TR")
    
numRow=document.getElementById(id).rows.length;
    var 
td1 document.createElement("TD")
    
enviarDatos(td1,'combo1.php'numRow);
    var 
td2 document.createElement("TD")
    
cadena='<div id="prod_'+numRow+'"></div>';
    
td2.appendChild (document.createTextNode("espere..."))
    
td2.innerHTML=cadena;
    
row.appendChild(td1);
    
row.appendChild(td2);
    
tbody.appendChild(row);
  }
</script>
</head>

<body>
<form name="productos" id="productos">
<table id="prod" width="50%" border="1">
<tr>
    <td>Categoria</td>
    <td>Producto</td>
</tr>
<tbody>
<tr>
    <td>Combo 1</td>
    <td>Combo 2</td>
</tr>
<tr>
    <td>Combo 1</td>
    <td>Combo 2</td>
</tr>
<tr>
    <td>Combo 1</td>
    <td>Combo 2</td>
</tr>
</tbody>
</table>
<input type="button" onclick="addNewRow('prod');" value="Generar Fila" />
</form>
</body>
</html> 
Esta es la consulta para el primer combo
Código PHP:
<?php
include('conect.php');
$link=Conectarse();
//variables POST
$id=$_POST['id'];

$sql="select * from categorias";
$resCons=mysql_query($sql);
$cadena="<select name=\"categoria_".$id."\" onchange=\"cargaProd('prod_".$id."', 'combo2.php', this.value)\">";
while(
$row=mysql_fetch_array($resCons))
{
    
$cadena.="<option value='".$row['id']."'>".$row['nombre']."</option>";
}
$cadena.='</select>';
echo 
$cadena;
?>
Esta es la consulta para el segundo combo
Código PHP:
<?php
include('conect.php');
$link=Conectarse();
//variables POST
$id=$_POST['id'];

$sql="select * from productos where categoria='".$id."'";
$resCons=mysql_query($sql);
$cadena="<select name=\"produc_".$id."\">";
while(
$row=mysql_fetch_array($resCons))
{
    
$cadena.="<option value='".$row['id']."'>".$row['nombre']."</option>";
}
$cadena.='</select>';
echo 
$cadena;
?>
cabe destacar que la prueba la hice con una DB de prueba, con esta estructura.
tabla categorias: nombre, id
tabla productos: id, nombre, categoria.

Saludos Ojala te sirva!
A mi me funciona de maravilla compañer@.
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.

Última edición por the_web_saint; 18/09/2008 a las 09:54 Razón: Solucionado
  #5 (permalink)  
Antiguo 18/09/2008, 11:21
Avatar de Simbelmyne  
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Agregar filas con menulist dentro de las celdas a una tabla mediante un bo

Mil gracias the_web_saint en vdd me ha sido muy útil tu aporte, he estado haciendo pruebas de igual manera satisfactorias
  #6 (permalink)  
Antiguo 18/01/2010, 11:38
 
Fecha de Ingreso: enero-2010
Mensajes: 3
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Agregar filas con menulist dentro de las celdas a una tabla mediante un bo

Quisiera saber como guardar los combos que voy generando en una base de datos
  #7 (permalink)  
Antiguo 18/01/2010, 11:44
 
Fecha de Ingreso: enero-2010
Mensajes: 3
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Agregar filas con menulist dentro de las celdas a una tabla mediante un bo

Me gustaria sabes como hacer que los combos que se generan se almacenen en una base de datos y cada vez que se actualize la pagina los combos ya guardados aparezcan en la tabla...por favor ayudame...se que eres muy bueno en php y ajax
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 1 personas




La zona horaria es GMT -6. Ahora son las 17:33.