Esto es el javascript para pasar de un combobox a otro y luego generar y anular filas dependiendo, si se adiciona o se quita de un combobox.
Cita: <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;
}
function pasar(origen, destino) {
obj=document.getElementById(origen);
if (obj.selectedIndex==-1) return;
valor=obj.value;
numero=obj.selectedIndex;
txt=obj.options[obj.selectedIndex].text;
obj.options[obj.selectedIndex]=null;
obj2=document.getElementById(destino);
opc = new Option(txt,valor);
eval(obj2.options[obj2.options.length]=opc);
if(origen=='servicios'){suma(txt, valor);}
if(origen=='contratados'){resta(numero);}
}
function suma(texto, numero) {
var miTabla = document.getElementById("desarrollo");
var fila = document.createElement("tr");
var celda1 = document.createElement("td");
var celda2 = document.createElement("td");
var celda3 = document.createElement("td");
celda1.innerHTML = texto;
//
ajax=objetoAjax();
cadenaFormulario = valor+'='+encodeURI(numero);
ajax.open("POST", 'menuDesarrollo.php', true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==4) {
//mostrar resultados en esta capa
celda2.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//enviando los valores
ajax.send(cadenaFormulario);
celda3.innerHTML = '<input type="text" name="abierto'+numero+'">';
fila.appendChild(celda1);
fila.appendChild(celda2);
fila.appendChild(celda3);
miTabla.appendChild(fila);
}
function resta(num) {
num=num+1;
var miTabla = document.getElementById("desarrollo");
miTabla.removeChild(miTabla.getElementsByTagName(" tr")[num]);
}
</script>
Ahora, colocare el trozo de codigo del formulario donde estan los combobox y la tabla en la cual se generan las filas
Código HTML:
.........................................
<td width="38%">
<select name="servicios" id="servicios">
<?php
for($ori1=0; $ori1<$numOrigen1; $ori1++)
{
$OriRow1=mysql_fetch_array($selOrigen1);
echo '<option value="'.$OriRow1['id'].'">'.$OriRow1['servicio'].'</option>';
}
?>
</select>
<?php
$OptDesa=mysql_query("select * from desarrollo order by desarrollo desc");
$numOptDesa=mysql_num_rows($OptDesa);
$opciones='';
for($op=0; $op<$numOptDesa; $op++)
{
$rowOptDesa=mysql_fetch_array($OptDesa);
//tratar de hacer con ajax, colocando la consulta en otro archivo
}
?>
<br /><br />
<input type="button" value="Agregar servicio >>" onclick="pasar('servicios', 'contratados');" />
</td>
<td width="37%">
<select name="contratados" id="contratados">
</select>
<br /><br /><input type="button" value="<< Quitar servicio" onclick="pasar('contratados', 'servicios');" />
</td>
</tr>
</table>
<table align="center" width="60%" id="desarrollo">
<tr>
<th width="50%">Servicio</th>
<th width="35%">Desarrollo</th>
<th width="15%">Abierto</th>
</tr>
</table>
</form>
Y ahora en otro archivo, el codigo php que se llama desde ajax para generar el combobox
Código PHP:
...........................parte de conexion................
$valor=$_POST['valor'];
mysql_select_db($database_protecniaMySql, $protecniaMySql);
$sql=mysql_query("SELECT * FROM desarrollo order by desarrollo desc");
$numDesa=mysql_num_rows($sql);
//muestra los datos consultados en los campos del formulario
echo'<select name="desarrollo"'.$valor.'>';
for($i=0; $i<$numDesa; $i++)
{
$row = mysql_fetch_array($sql);
echo'<option value="'.$row['id'].'">'.$row['desarrollo'].'</option>';
}
echo'</select>';
espero les sirva.....