Foros del Web » Programando para Internet » PHP »

guardar cambios de posicion de unos textos

Estas en el tema de guardar cambios de posicion de unos textos en el foro de PHP en Foros del Web. holas tengo el siguiente codigo y cuando presione enviar quiero q me guarde los cambios q realize a las posiciones de los textos . Código ...
  #1 (permalink)  
Antiguo 17/07/2006, 11:37
 
Fecha de Ingreso: julio-2006
Mensajes: 70
Antigüedad: 17 años, 9 meses
Puntos: 0
guardar cambios de posicion de unos textos

holas tengo el siguiente codigo y cuando presione enviar quiero q me guarde los cambios q realize a las posiciones de los textos .

Código PHP:
<?php
include ("../../permiso.php");

function 
listarcampo($dbi,$base,$codigo,$campo,$tabla,$atributo)
//Lista la descripción de la institución.
{
    
$consulta="select ".$campo." from ".$tabla." where ".$atributo."='$codigo'";
    
$result=mysql_db_query($base,$consulta,$dbi);
    
$row=mysql_fetch_array($result);
    
$resultado=$row[$campo];
    return(
$resultado);
}

function 
seleccionar_lugar($dbi,$base,$codigo_prueba,$cod_texto)
//Selecciona las posiciones de los textos de la Forma A
{
    
$consulta "select prueba_texto.cod_texto,num_texto from texto,prueba_texto where cod_prueba='$codigo_prueba' and prueba_texto.cod_texto=texto.cod_texto order by num_texto";
    
$result=mysql_db_query($base,$consulta,$dbi);
    return(
$result);
}
function 
listar_textos($dbi,$base,$codigo_prueba,$creara,$codigo_formaA)
//lista los títulos de los textos y pone el combo 
{
    
$consulta "select prueba_texto.cod_texto,num_texto,titulo from texto,prueba_texto where cod_prueba='$codigo_prueba' and prueba_texto.cod_texto=texto.cod_texto order by num_texto";
    
$result=mysql_db_query($base,$consulta,$dbi);
    
$valor=cantidad_textos($dbi,$base,$codigo_prueba);
    
$tituloA=listarcampo($dbi,$base,$codigo_prueba,"nombre_prueba","prueba","cod_prueba");
    
$nivelA=listarcampo($dbi,$base,$codigo_prueba,"cod_nivel","prueba","cod_prueba");
    
$creacionA=listarcampo($dbi,$base,$codigo_prueba,"fecha_creacion","prueba","cod_prueba");
    
$consulta2='select cod_prueba from prueba where nombre_prueba="'.$tituloA.'" and cod_nivel="'.$nivelA.'" and fecha_creacion="'.$creacionA.'" and forma="B"';
    
$result2=mysql_db_query($base,$consulta2,$dbi);
    
$row2=mysql_fetch_array($result2);
    if (
mysql_num_rows($result2)!=0)
        
$cod_formab=$row2["cod_prueba"];
    else
        
$cod_formab='';

    while (
$row=mysql_fetch_array($result))
        {
            
$num=0;
            
$cont++;
            print 
"<tr valign='baseline'><td width='90%'><ul>
                <li>"
.$row["titulo"]."</li>
              </ul></td><td width='15%' align='center'><select name='lugar[]' id='lugar' style='width:40px'>"
;
            
llenar_combo($dbi,$base,$valor,$row["cod_texto"],$cont);
            print 
"</select><td width=\"5%\">&nbsp;</td></td>";
            if (
$creara==2)                //Si presionó el botón Modificar coloca una nueva columna con la posición
                
{                        //de los textos en la Forma A.
                    //$formaB=seleccionar_lugar($dbi,$base,$codigo_formaA,$row["cod_texto"]);  //pasar codigo forma b
                    
$formaB=seleccionar_lugar($dbi,$base,$cod_formab,$row["cod_texto"]);  //pasar codigo forma b
                    
while ($row2=mysql_fetch_array($formaB))
                        {
                            
$num++;
                            if(
$row2["cod_texto"]==$row["cod_texto"])
                                break;
                        }        
                    print 
"<td width='15%' align='center'><input name=\"posicion[]\" id=\"posicion\" type=\"text\" size=\"2\" value=\"".$num."\" maxlength=\"2\" disabled>";
                    print 
"</td>";
                }
            print 
"</tr>";
        }
    return(
$valor);    
}
function 
llenar_combo($dbi,$base,$valor,$cod_texto,$pos)
//lLena los combos de acuerdo a la cantidad de textos
{
    for (
$ind=1;$ind<=$valor;$ind++)
            {
                if (
$pos==$ind)
                    print 
"<option value=\"".$ind."\" selected>".$ind."</option>";    
                else    
                    print 
"<option value=\"".$ind."\">".$ind."</option>";    
            }    
}
function 
cantidad_textos($l,$base,$cod_prueba)
//Determina la cantidad de textos de una prueba
{
    
$consulta="select count(*) as num from texto,prueba_texto where cod_prueba='$cod_prueba' and prueba_texto.cod_texto=texto.cod_texto order by num_texto";
    
$resp=mysql_db_query($base,$consulta,$l);
    
$row=mysql_fetch_array($resp);
    
$valor=$row["num"];
    return(
$valor);
}

?>
<html>
<head>
<style>  

//P { font: bold 11pt arial }
table{
font-family:arial;
font-size:12;

}
Li { font: 10pt arial }

</style>
<script>
function validar($valor,$mod) 
//Valida que todos los valores de los combos sean distintos y que no sean iguales a la Forma A.
{
    var $i;
    var $j;
    var $sw;
    for ($j=0;$j<$valor;$j++)
    for ($i=$j+1;$i<$valor;$i++)
    {
        if (document.form1.lugar[$j].value==document.form1.lugar[$i].value)
            {                
                
                alert("Existe un valor repetido, debe cambiarlo");
                return(false);
            }
        }
    for ($i=0;$i<$valor;$i++)
    {
        if ((document.form1.lugar[$i].value-1)==$i)
            $sw=1;
        else
            {
                $sw=0;    
                break;            
            }    
    }
    if ($sw==1)
        {
            alert("Debe alterar el orden de los textos");
            return(false);
        }
    if ($mod==2)        //Verifica que el orden de los textos no sea igual a la forma A
    {    
        
        for ($i=0;$i<$valor;$i++)
        {
            if (document.form1.lugar[$i].value==document.form1.posicion[$i].value)
                $sw=1;
            else
                {
                    $sw=0;
                    break;            
                }    
        }
        if ($sw==1)
            {
                alert("El orden de los textos de la Forma A no puede ser igual a la Forma B");
                return(false);
            }
    }    
    return(true);        
            
}
</script>
<title>Forma A</title></head>



<BODY>
<form name='form1' action="guardar_formaA.php" onsubmit="return validar(valor,mod)">
  <table width="71%" border="0" align="center" height="247">
    <tr> 
      <td height="267"> <font face="Arial, Helvetica, sans-serif" size="2">&nbsp; 
        </font> 
        <?    
    
print $tipart1azul;  
    print 
"Listado de Textos Forma A";
    print 
$tipart2azul;
    print 
$contpart1azul;
?>
        <table width="85%" border="0" align="center">
          <tr> 
            <td colspan="2"><?if ($creara==1){
                print 
"Establezca el orden de los textos en que aparecerán en la Forma A:";
                
$titulo="Posición";
                
$titulo2="";
                }
            else
                {
                    print 
"Modifique el orden de los textos en que aparecerán en la Forma A:";
                    
$titulo="Posición Forma A";
                    
$titulo2="Posición Forma B";
                }
                
?>
            </td>
          <tr> 
            <td colspan="2">&nbsp;</td>
          <tr> 
            <td width="65%"><div align="center"><b><strong><font size="2" face="Arial, Helvetica, sans-serif">T&iacute;tulo</font></strong></b></div></td>
            <td width="15%"><div align="center"><strong><font size="2" face="Arial, Helvetica, sans-serif"><? print $titulo?></font></strong></div></td>
            <td width="5%">&nbsp;</td>
            <td width="15%"><div align="center"><strong><font size="2" face="Arial, Helvetica, sans-serif"><? print $titulo2?></font></strong></div></td>
                
          <tr > 
            <td width="65%"><b><strong>
              </strong></b></td>
            <td width="15%"><strong> </strong></td>
            <td width="5%">&nbsp;&nbsp;&nbsp;</td>
            <td width="15%"><strong> </strong></td>
          <tr> 
            <td> 
              <?
                    $dbi
=mysql_connect('localhost',$cuenta,$pass);
                    if (
$creara==2)
                        {
                            
$valor=listar_textos($dbi,$base,$codigo_formaA,$creara,$codigo_prueba);
                            print
"<tr><td colspan='4'><b>Observación:</b> El orden de los textos de la Forma A no puede ser igual a la Forma B</td></tr>";
                        }    
                    else    
                        
$valor=listar_textos($dbi,$base,$codigo_prueba,$creara,$codigo_formaA);
                    
mysql_close($dbi);
            
?>
            </td>
          </tr>
        </table>
        <p> 
          <?  print $contpart2azul;?>
        </p>
      </td>
    </tr>
  </table>

 <script>var valor=<? print $valor;?>;
         var mod=<? print $creara;?>;
</script> <div align="center">
     <input type="hidden" name=prueba0 value='<? print $prueba0 ?>'>
    <input type="hidden" name=prueba1 value='<? print $prueba1 ?>'>
    <input type="hidden" name=prueba2 value='<? print $prueba2 ?>'>
    <input type="hidden" name=nombre value='<? print $nombre ?>'>
    <input type="hidden" name=nivel value='<? print $nivel?>'>
    <input type="hidden" name=tiporev value='<? print $tiporev?>'>
    <input type="hidden" name=creara value='<? print $creara?>'>
    <input type="hidden" name=codigo_formaA value='<? print $codigo_formaA?>'>
    <input type="hidden" name=cod_prueba value='<? print $codigo_prueba?>'>
    <input type="hidden" name=checkbox1 value='<? print $checkbox1?>'>
    <input type="hidden" name=listar value='<? print $listar?>'>
    <input type="hidden" name=checkbox3 value='<? print $checkbox3?>'>
    <input type="submit" name="Submit"  value="Guardar">
  </div>
</form>
</BODY>
</HTML>
  #2 (permalink)  
Antiguo 17/07/2006, 12:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y cual es tu problema concreto?.. no dejes que lo deduzcamos .. indicalo expresamente. Date cuenta que no vamos a poder probar tu código con tu BBDD (tablas, estructura) y datos que puedas manejar de ejemplo ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 17/07/2006, 13:18
 
Fecha de Ingreso: julio-2006
Mensajes: 70
Antigüedad: 17 años, 9 meses
Puntos: 0
Cita:
Iniciado por Cluster
Y cual es tu problema concreto?.. no dejes que lo deduzcamos .. indicalo expresamente. Date cuenta que no vamos a poder probar tu código con tu BBDD (tablas, estructura) y datos que puedas manejar de ejemplo ...

Un saludo,
al momento de presionar el boton "Guardar" , que guarde el cambio que se hace de las posiciones en la base de datos.

He probado con esto pero me guarda 0 en la posición del texto:

Código PHP:
if ($creara==2)                        //Modificar Forma A, lo único que hace es modificar la posición del texto
                
actualizar_numtexto($dbi,$base,$codigo_formaA,$row["cod_texto"],$valor);    
            
$i++;
        } 
  #4 (permalink)  
Antiguo 17/07/2006, 14:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Me vas a tener que disculpar .. pero no entendí a que te refieres. No alcanzo a ver el código de la función "actualizar_numtexto()"

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 17/07/2006, 14:42
 
Fecha de Ingreso: julio-2006
Mensajes: 70
Antigüedad: 17 años, 9 meses
Puntos: 0
Cita:
Iniciado por Cluster
Me vas a tener que disculpar .. pero no entendí a que te refieres. No alcanzo a ver el código de la función "actualizar_numtexto()"

Un saludo,
Código PHP:
function seleccionar_textos($dbi,$base,$cod_prueba,$codigo_formaA,$lugar,$creara)
//Selecciona los textos de la prueba forma A para insertarlos en la forma B.
{
    
$consulta="select * from prueba_texto where cod_prueba='$cod_prueba' order by num_texto";
    
$items=mysql_db_query($base,$consulta,$dbi);
    
$i=0;
    while (
$row mysql_fetch_array($items))
        {
            if (
texto_unido($dbi,$row["cod_texto"])!="")    //Verfica si hay textos unidos, si lo hay, actualiza
                
{                                            //las posiciones de los textos que ya fueron ingresados en la prueba
                    
$i--;                                    //y las posiciones de los combos les suma uno ya que se agregó un texto, siempre     
                    
actualizar_lugares($dbi,$base,$codigo_formaA,$lugar[$i]);    //y cuando sean mayores a la que se va a ingresar
                    
$valor=$lugar[$i]+1;
                    for(
$j=$i+1;$j<count($lugar);$j++)
                        {
                            if (
$lugar[$j]>=$valor)
                            
$lugar[$j]++;
                        }    
                }    
            else
                
$valor=$lugar[$i];
            if (
$creara==1)                        //Crear Forma B
                
insertar_texto($dbi,$base,$codigo_formaA,$row["cod_texto"],$valor,$row["ubicacion"]);
            if (
$creara==2)                        //Modificar Forma A, lo único que hace es modificar la posición del texto
                
actualizar_numtexto($dbi,$base,$codigo_prueba,$row["cod_texto"],$valor);    
            
$i++;
        } 

Disculpa ,Saludos
  #6 (permalink)  
Antiguo 17/07/2006, 15:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
¿Tienes algún URL como para ver en funcionamiento ese código para así hacernos una idea de lo que estás haciendo? (yo sigo sin entender el algorítmo que usas ni el propósito .. por eso no veo el porblema y menos su solución ... Sólo intento sonsacarte datos para ver si alguien con más información ve tu problema claro).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 16:40.