Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problemas al pasar variables para update

Estas en el tema de Problemas al pasar variables para update en el foro de PHP en Foros del Web. Saludos nuevamente amigos del foro, el problema que tengo ahora es que cuando intento hacer un update de una tabla que se genera dinámicamente solo ...
  #1 (permalink)  
Antiguo 25/06/2013, 20:54
Avatar de Dafsagitarius  
Fecha de Ingreso: junio-2013
Mensajes: 9
Antigüedad: 10 años, 10 meses
Puntos: 0
Problemas al pasar variables para update

Saludos nuevamente amigos del foro, el problema que tengo ahora es que cuando intento hacer un update de una tabla que se genera dinámicamente solo se esta guardando el ultimo valor modificado...ya me había pasado algo así pero con una tabla que era fija.
editar_plan.php
Código PHP:
 $sql="SELECT Unidad_tematica,Subtemas,Fecha_prog,Fecha_real,Eva_prog,Eva_real,Por_aprobacion,Observaciones
        FROM temarioplan,asignacion
        WHERE asignacion.idAsignacion=temarioplan.idAsignacion
        and temarioplan.idAsignacion=$id"
;
           
           
$resultmysql_query ($sql) or die(mysql_error());
           
           
$c=1;
        
$tabla=array();
        
        while (
$renglon2=mysql_fetch_array($result))
        {
            
$tabla[$c]=$renglon2;
                
$c++;
       }
       for(
$i=1;$i<=count($tabla);$i++)
       {    
            
            echo
"<tr>
       <table rules='cols' cellpadding='0' cellspacing='3' border='#90BFC7'   id='tablin'>
              <tr  bgColor='' border='#90BFC7'>
            <td width='180' ><textarea cols='20' rows='10' id='temas' name='temas"
.$i."'>".$tabla[$i]['Unidad_tematica']."</textarea></td>
            <td width='177' ><textarea cols='20' rows='10'  id='sub' name='sub"
.$i."' >".$tabla[$i]['Subtemas']."</textarea></td>
                <td width='100' ><textarea cols='7' rows='10'  id='fproga' name='fprogra"
.$i."' >".$tabla[$i]['Fecha_prog']."</textarea></td>
                <td width='60' ><textarea cols='4' rows='10'  id='freal' name='freal"
.$i."' >".$tabla[$i]['Fecha_real']."</textarea></td>
                <td width='100' ><textarea cols='7' rows='10' id='eprogra' name='eprogra"
.$i."' >".$tabla[$i]['Eva_prog']."</textarea></td>
                <td width='60' ><textarea cols='4' rows='10' id='ereal' name='ereal"
.$i."' >".$tabla[$i]['Eva_real']."</textarea></td>
               <td width='90' ><textarea cols='6' rows='10' id='procentaje' name='porcentaje"
.$i."'>".$tabla[$i]['Por_aprobacion']."</textarea></td>
                <td width='140'><textarea cols='12' rows='10'  id='observacion' name='observacion"
.$i."' >".$tabla[$i]['Observaciones']."</textarea></td>
             </tr>
        
        }//for 
Este archivo me genera una tabla que me muestra algo así:
tema1 subtema1 fechas1.....etc
tema2 subtema2 fechas2.....etc
teman subteman fechasn.....etc

adminedit_plan.php
Código PHP:
$Unidad =array($_POST['temas']);
$Subtemas =array($_POST['sub']);
$Fprog =array($_POST['fprogra']);
$Freal = array($_POST['freal']);
$Eprog = array($_POST['eprogra']);
$Ereal = array($_POST['ereal']);
$Aprobado =array($_POST['porcentaje']);
$Observaciones =array($_POST['observacion']);

$sql="SELECT idTemarioplan from temarioplan WHERE idAsignacion='$id'";
        
$resultado=mysql_query($sql) or die(mysql_error());
        
        
$cont=0;//contador para while
        
        
while($idAsig2 mysql_fetch_array($resultado)){//while que toma los id de los registros
            
        
for($i=0;$i<(count($Unidad));$i++){//ciclo for para recorrer y actualizar los valores 
                
        
$sql="UPDATE Temarioplan SET Unidad_tematica='$Unidad[$i]',Subtemas='$Subtemas[$i]',Fecha_prog='$Fprog[$i]',
        Fecha_real='$Freal[$i]',Eva_prog='$Eprog[$i]',Eva_real='$Ereal[$i]',Por_aprobacion='$Aprobado[$i]',
        Observaciones='$Observaciones[$i]'
        WHERE idTemarioplan="
.$idAsig2['idTemarioplan']."";
        
            
$resultado1=mysql_query($sql) or die(mysql_error());
            }
//fin for
            
echo $sql;
            
        
$cont++;
        }
//while 
Pienso que el error esta en el primer archivo editar_plan.php que no se esta mandando como arreglo si solo el ultimo valor y ese llega al POST

si quito $i de los names funciona pero solo envía el ultimo valor ... y como esta en este momento me genera este error Notice: Undefined index: temas in en cada POST

espero que me puedan echar una mano de donde puedo estar equivocándome se los agradecería muchísimo
  #2 (permalink)  
Antiguo 25/06/2013, 21:13
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas al pasar variables para update

<textarea cols='20' rows='10' id='temas' name='temas".$i."'>".$tabla[$i]['Unidad_tematica']."</textarea>

Eso te creará un textarea con nombre temas1, si obtuviste 10 registros, hasta temas10

Para crearlo como array tienes que hacerlo así:

<textarea cols='20' rows='10' id='temas' name='temas[]'>".$tabla[$i]['Unidad_tematica']."</textarea>
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 25/06/2013, 21:38
Avatar de Dafsagitarius  
Fecha de Ingreso: junio-2013
Mensajes: 9
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problemas al pasar variables para update

saludos triby gracias por responder, ya lo había probado de esa manera que mencionas pero de igal forma me generaba error ....

lo que eh echo ahora es añadirles [] a los names como mencionas
quite los array de los post ya que si los dejaba me generaban mas errores

$Unidad=array($_POST['temas']);
lo cambie así:
$Unidad=$_POST['temas'];

y me genera estos errores ....en 3 registros de prueba

Código:
Notice: Uninitialized string offset: 2 in C:\xampp\htdocs\ROBERTO\Docencia\administrador\adminedit_plan.php on line 96
UPDATE Temarioplan SET Unidad_tematica='edita33',Subtemas='',Fecha_prog='33', Fecha_real='33',Eva_prog='33',Eva_real='33',Por_aprobacion='33', Observaciones='33' WHERE idTemarioplan=1
Notice: Uninitialized string offset: 2 in C:\xampp\htdocs\ROBERTO\Docencia\administrador\adminedit_plan.php on line 96
UPDATE Temarioplan SET Unidad_tematica='edita33',Subtemas='',Fecha_prog='33', Fecha_real='33',Eva_prog='33',Eva_real='33',Por_aprobacion='33', Observaciones='33' WHERE idTemarioplan=2
Notice: Uninitialized string offset: 2 in C:\xampp\htdocs\ROBERTO\Docencia\administrador\adminedit_plan.php on line 96
UPDATE Temarioplan SET Unidad_tematica='edita33',Subtemas='',Fecha_prog='33', Fecha_real='33',Eva_prog='33',Eva_real='33',Por_aprobacion='33', Observaciones='33' WHERE idTemarioplan=3
no se si estaré recibiendo de manera incorrecta el array
  #4 (permalink)  
Antiguo 25/06/2013, 22:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas al pasar variables para update

Para saber si $Unidad se está creando correctamente como array de temas[] usa:

var_dump($Unidad);

Eso te mostrará el contenido e información adicional de la variable.

Luego, tu consulta no está bien armada porque debes encerrar entre llaves los elementos de arrays que quieras que sean interpretados, ejemplo:

Código PHP:
Ver original
  1. // Incorrecto
  2. $sql="UPDATE Temarioplan SET Unidad_tematica='$Unidad[$i]' ...";
  3.  
  4. // Correcto:
  5. $sql="UPDATE Temarioplan SET Unidad_tematica='{$Unidad[$i]}' ...";

Aparte, debes escapar los datos antes de usarlos en una consulta, para evitar dolores de cabeza y ataques a tu sitio; usa mysql_real_escape_string()

Por cierto, la librería mysql, y funciones relacionadas en PHP, está considerada como obsoleta, por lo que te conviene migrar a mysqli o, mejor aún, a PDO.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 26/06/2013, 11:38
Avatar de Dafsagitarius  
Fecha de Ingreso: junio-2013
Mensajes: 9
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problemas al pasar variables para update

Saludos nuevamente triby poniendo [] a los names y aplicando el var_dump comprobé que si estaban llegando el arreglo pero me seguía guardando el ultimo registro.
El problema estaba en el ciclo while y for estaba generando que se que con el while incrementara el contador del id y con el for las variables que en cada clico se repetían
3 veces cada una algo asi como id1 variables1...2..3 id2variables1..2...3..etc.

saque el for del while
Código PHP:
$cont=0;//contador para while
        
$idAsig3=array();
        while(
$idAsig2 mysql_fetch_array($resultado)){//while que toma los id de los registros
        
$idAsig3[$cont]=$idAsig2;
        
$cont++;
        }
//while 
y deje el for aparte.....lo curioso es que si lo manejaba de la forma que lo mencionaste campo='($variable)' me insertaba los paréntesis junto con la variable

Código PHP:
for($i=0;$i<count($Unidad);$i++){//ciclo for para recorrer y actualizar los valores 
        
$sql="UPDATE Temarioplan SET Unidad_tematica='$Unidad[$i]',Subtemas='$Subtemas[$i]',Fecha_prog='$Fprog[$i]',Fecha_real='$Freal[$i]',Eva_prog='$Eprog[$i]',Eva_real='$Ereal[$i]',Por_aprobacion='$Aprobado[$i]',Observaciones='$Observaciones[$i]'
WHERE idTemarioplan="
.$idAsig3[$i]['idTemarioplan']."";
$resultado1=mysql_query($sql) or die(mysql_error());}//fin for 
oh si eh estado leyendo los enlaces que dejan en el foro de las librerías de Mysqli,solo que por un tanto presionado por el tiempo no me ha sido posible checarlas bien y el real_escape ese si me estaba olvidando gracias por recordarmelo

te agradezco mucho tu atención y tu ayuda triby
  #6 (permalink)  
Antiguo 26/06/2013, 12:13
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas al pasar variables para update

Perfecto, qué bueno que pudiste solucionarlo; solo una aclaración: No dije paréntesis ( ) sino llaves { } que es lo que debes usar para delimitar elementos de array dentro de una cadena.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 26/06/2013, 15:27
Avatar de Dafsagitarius  
Fecha de Ingreso: junio-2013
Mensajes: 9
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problemas al pasar variables para update

oh cierto perdón error del momento de incertidumbre jaja corazón se me hizo extraño gracias Triby

Etiquetas: mysql, registro, select, sql, tabla, update, variables
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 04:15.