Foros del Web » Programando para Internet » PHP »

Combo Box en una rejilla

Estas en el tema de Combo Box en una rejilla en el foro de PHP en Foros del Web. Mi problema, tengo una rejilla que me muestran todos los datos de una base y al final de la misma tengo un combo que quiero ...
  #1 (permalink)  
Antiguo 12/11/2010, 10:14
 
Fecha de Ingreso: febrero-2010
Mensajes: 8
Antigüedad: 14 años, 9 meses
Puntos: 0
Combo Box en una rejilla

Mi problema, tengo una rejilla que me muestran todos los datos de una base y al final de la misma tengo un combo que quiero que al cambiarlo me modifique la base de datos, pero el problema es que aunque escoja la fila 5 y la opcion 3 del combo siempre actualiza los datos con el combo de la fila 1. Y la fila 1 funciona perfectamente con todas las opciones del Combo


Mi problema empieza en este codigo

Código PHP:
    <select id="cboEstados" name="cboEstados" class="comboMedio" onChange="cambiar_estado(<?php echo mysql_result($res_resultado,$contador,"id")?>)">

                                <? if ($marcaestadomercancia == 1) { ?>

                        <option value="1" selected="selected">Castelldefels</option>
                                <? } elseif ($marcaestadomercancia==2) { ?>
                                <option value="2" selected="selected">China</option>
                                <? } elseif ($marcaestadomercancia==3) { ?>
                                <option value="3" selected="selected">Vilafranca</option>
                                <? } elseif ($marcaestadomercancia==4) { ?>
                                <option value="4" selected="selected">Otros</option>
                                <? ?>                        
                                <option value="1">Castelldefels</option>
                                <option value="2">China</option>
                                <option value="3">Vilafranca</option>
                                <option value="4">Otros</option>

                                             

                                </select></div></td>

Código PHP:
function cambiar_estado(id) {

                       
                        var estado=document.getElementById("cboEstados").value;

                        miPopup = window.open("actualizarestado.php?id=" + id + "&estado="+estado+"");

               

            }



        </script>

    </head>



    <body onload=inicio()>    

        <div id="pagina">

            <div id="zonaContenido">

            <div align="center">

            <table class="fuente8" width="87%" cellspacing=0 cellpadding=3 border=0 ID="Table1">

            <input type="hidden" name="numfilas" id="numfilas" value="<? echo $filas?>">

                <? $iniciopagina=$_POST["iniciopagina"];

                if (empty(
$iniciopagina)) { $iniciopagina=$_GET["iniciopagina"]; } else { $iniciopagina=$iniciopagina-1;}

                if (empty(
$iniciopagina)) { $iniciopagina=0; }

                if (
$iniciopagina>$filas) { $iniciopagina=0; }

                    if (
$filas 0) { ?>

                        <? $sel_resultado="SELECT id,codfactura,proveedores.nombre as nombre,facturasp.fecha as fecha,totalfactura,estado,estadomercancia FROM facturasp,proveedores WHERE facturasp.borrado=0 AND facturasp.codproveedor=proveedores.codproveedor AND ".$where;

                           
$sel_resultado=$sel_resultado."  limit ".$iniciopagina.",15";

                           
$res_resultado=mysql_query($sel_resultado);

                           
$contador=0;

                           
$marcaestado=0;

                           while (
$contador mysql_num_rows($res_resultado)) { 

                                
$marcaestado=mysql_result($res_resultado,$contador,"estado");
                                
$marcaestadomercancia=mysql_result($res_resultado,$contador,"estadomercancia");

                                if (
mysql_result($res_resultado,$contador,"estado") == 1) { $estado="Sin pagar"; } else { $estado="Pagada"; }

                                if (
$contador 2) { $fondolinea="itemParTabla"; } else { $fondolinea="itemImparTabla"; }?>                                

                            <tr class="<?php echo $fondolinea?>">

                            <td class="aCentro" width="8%"><? echo $contador+1;?></td>

                            <td width="10%"><div align="center"><? echo mysql_result($res_resultado,$contador,"id")?></div></td>                            
                            <td width="10%"><div align="center"><? echo mysql_result($res_resultado,$contador,"codfactura")?></div></td>

                            <td width="25%"><div align="left"><? echo mysql_result($res_resultado,$contador,"nombre")?></div></td>

                            <td width="10%"><div align="right"><? echo number_format(mysql_result($res_resultado,$contador,"totalfactura"),2,",",".")?></div></td>

                            <td class="aDerecha" width="10%"><div align="center"><? echo implota(mysql_result($res_resultado,$contador,"fecha"))?></div></td>

                            <td class="aDerecha" width="10%"><div align="center"><? echo $estado?></div></td>

                            <td class="aDerecha" width="10%"><div align="center">

                            <select id="cboEstados" name="cboEstados" class="comboMedio" onChange="cambiar_estado(<?php echo mysql_result($res_resultado,$contador,"id")?>)">

                                <? if ($marcaestadomercancia == 1) { ?>

                        <option value="1" selected="selected">Castelldefels</option>
                                <? } elseif ($marcaestadomercancia==2) { ?>
                                <option value="2" selected="selected">China</option>
                                <? } elseif ($marcaestadomercancia==3) { ?>
                                <option value="3" selected="selected">Vilafranca</option>
                                <? } elseif ($marcaestadomercancia==4) { ?>
                                <option value="4" selected="selected">Otros</option>
                                <? ?>                        
                                <option value="1">Castelldefels</option>
                                <option value="2">China</option>
                                <option value="3">Vilafranca</option>
                                <option value="4">Otros</option>

                                             

                                </select></div></td>

                            

                            </tr>

                            

                            </tr>

                        <? $contador++;

                            }

                        
?>
  #2 (permalink)  
Antiguo 12/11/2010, 10:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Combo Box en una rejilla

es sencillo de explicar...

se supone que el name de todos los controles de un formulario deben ser únicos, supongo que lo estas haciendo todo a través de un bucle... y por ende, estas usando el mismo name para todos!!

para manejar este tipo de problemas debes hacer uso de la nomenclatura de array:
Código HTML:
<select name="foo[99]"/> 
imaginemos que la acción sería foo y el ID a afectar es 99, solo debes saber trabajar con arrays y solucionado!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/11/2010, 12:52
 
Fecha de Ingreso: febrero-2010
Mensajes: 8
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Combo Box en una rejilla

El lunes lo pruebo y ya te contare, es un bluce

Cita:
$marcaestado=0;
while ($contador < mysql_num_rows($res_resultado)) {
<select id="cboEstados" name="cboEstados" class="comboMedio" onChange="cambiar_estado(<?php echo mysql_result($res_resultado,$contador,"id")?>)">
por
<select id="cboEstados" name="foo[99]" class="comboMedio" onChange="cambiar_estado(<?php echo mysql_result($res_resultado,$contador,"id")?>)">
  #4 (permalink)  
Antiguo 15/11/2010, 02:39
 
Fecha de Ingreso: febrero-2010
Mensajes: 8
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Combo Box en una rejilla

No funciona??

Cita:
Iniciado por fersanmito Ver Mensaje
El lunes lo pruebo y ya te contare, es un bluce



<select id="cboEstados" name="cboEstados" class="comboMedio" onChange="cambiar_estado(<?php echo mysql_result($res_resultado,$contador,"id")?>)">
por
<select id="cboEstados" name="foo[99]" class="comboMedio" onChange="cambiar_estado(<?php echo mysql_result($res_resultado,$contador,"id")?>)">
  #5 (permalink)  
Antiguo 23/11/2010, 12:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 8
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Combo Box en una rejilla

Sigo probando con un array pero no consigo extraer la variable $indice

Cita:
<select id="cboEstados" name="cboEstados" class="comboMedio" onChange="cambiar_estado(<?php echo mysql_result($res_resultado,$contador,"id")?>,<? echo $indice?>)"

<? if ($marcaestadomercancia == 1) { ?>

<option value="1" selected="selected">Castelldefels</option>
<? } elseif ($marcaestadomercancia==2) { ?>
<option value="2" selected="selected">China</option>
<? } elseif ($marcaestadomercancia==3) { ?>
<option value="3" selected="selected">Vilafranca</option>
<? } elseif ($marcaestadomercancia==4) { ?>
<option value="4" selected="selected">Otros</option>
<? } ?>
<?php
$data = array('Castelldefels','China','Vilafranca','Otros' );
foreach ($data as $indice => $nombre) echo '<option value="'.$indice.'">'.$nombre.'</a>';
?>




</select></div></td>



</tr>

Cita:
function cambiar_estado(id,indice) {


if (indice==1) {

miPopup = window.open("actualizarestado.php?id=" + id + "&estado=1");
}
elseif (indice==2){
miPopup = window.open("actualizarestado.php?id=" + id + "&estado=2");


}}

Última edición por fersanmito; 23/11/2010 a las 12:54

Etiquetas: box, combo, rejilla
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 10:50.