Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/09/2008, 09:03
Avatar de the_web_saint
the_web_saint
 
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
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