Foros del Web » Programando para Internet » PHP »

actualizar campo

Estas en el tema de actualizar campo en el foro de PHP en Foros del Web. Hola, tengo una tabla que imprime los registros y tiene un campo para poder editar el orden de como aparecen, para eso en la Base ...
  #1 (permalink)  
Antiguo 16/07/2014, 10:45
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
actualizar campo

Hola, tengo una tabla que imprime los registros y tiene un campo para poder editar el orden de como aparecen, para eso en la Base tengo un campo llamado "orden" esta como INT(11).Al querer actualizar el orden de una persona me sale este error

" Error: Incorrect integer value: '' for column 'orden' at row 1"

este es para actualizar:
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. include("1.php");
  5.    
  6.     $id=$_GET['id'];
  7.      $id_persona =$_POST['id_persona'];
  8.      $id_adscripcion = $_POST['id_adscripcion'];
  9.      $orden = $_POST['orden'];
  10.        
  11.     $query = "UPDATE dir_persona
  12.     SET orden = '$orden'
  13.     WHERE id_persona = '$id'";
  14.    
  15.     $result=mysql_query($query,$link) or die("Error: ".mysql_error());
  16.    
  17.     //echo $id_persona;
  18.     //echo "/";
  19.     //echo $id_adscripcion;
  20.     header("location: ./dirarbol_admin.php?ads=$id_adscripcion");
  21. ?>
  #2 (permalink)  
Antiguo 16/07/2014, 10:49
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: actualizar campo

SET orden = '$orden'

Ahí estás indicando que en la columna orden meta una cadena ($orden) ya que colocas los apóstrofes, y posiblemente tu base de datos es "estricta", prueba a no usarlos:

SET orden = $orden

así a menos que tu variable $orden contenga un valor que no sea entero, debe funcionar, de cualquier forma, haz un hecho a $orden para que vea si contiene o no un entero.
  #3 (permalink)  
Antiguo 16/07/2014, 10:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: actualizar campo

Si el campo orden es de tipo entero, no debes de colocar el valor a insertar entre apóstrofos pues se interpretaría como una cadena, además, debes de asegurarte que realmente estás recibiendo el valor en cuestión.

Prueba haciendo esto para verificar eso:

Código PHP:
Ver original
  1. echo 'Valor: ' . ($orden ? $orden : 'No llegó el valor');

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 16/07/2014, 10:53
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: actualizar campo

ahora me sale esto:

"Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id_persona = '10001'' at line 3"
  #5 (permalink)  
Antiguo 16/07/2014, 11:10
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: actualizar campo

Muestra lo que has implementado para poder ayudarte. Ayúdanos para ayudarte.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 16/07/2014, 11:12
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: actualizar campo

esto:

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. include("1.php");
  5.    
  6.      $id=$_GET['id'];
  7.      $id_adscripcion = $_POST['id_adscripcion'];
  8.      $orden = $_POST['orden'];
  9.        
  10.     $query = "UPDATE dir_persona
  11.     SET orden = $orden
  12.     WHERE id_persona = '$id'";
  13.    
  14.     $result=mysql_query($query,$link) or die("Error: ".mysql_error());
  15.    
  16.     //echo $id;
  17.     //echo "/";
  18.     //echo $id_adscripcion;
  19. echo 'Valor: ' . ($orden ? $orden : 'No llegó el valor');
  20.     //header("location: ./dirarbol_admin.php?ads=$id_adscripcion");
  21. ?>
  #7 (permalink)  
Antiguo 16/07/2014, 11:19
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: actualizar campo

Me parece que el campo id también es de tipo entero y estás cometiendo el mismo error que consiste en colocar el valor de $id entre apóstrofos. Quítalos y prueba.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 16/07/2014, 11:38
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: actualizar campo

aparece el mismo error:

"Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id_persona = 10001' at line 3"
  #9 (permalink)  
Antiguo 16/07/2014, 11:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: actualizar campo

¿Te has dado cuenta de que recibes el valor del id por GET y los otros datos por POST?
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #10 (permalink)  
Antiguo 16/07/2014, 11:53
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: actualizar campo

si pongo POST me da el mismo error pero si el id:

"Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id_persona = ' at line 3"
  #11 (permalink)  
Antiguo 16/07/2014, 11:58
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: actualizar campo

Entonces debo de suponer que enviaste los datos por el método GET y no por POST que es lo que debiste hacer en este caso ya que vas a realizar una actualización en la BD. En el formulario que envía los datos, cambia el valor del atributo method a "POST" y en el archivo PHP, recibe los datos mediante ese método, que es lo que acabas de hacer.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #12 (permalink)  
Antiguo 16/07/2014, 12:02
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: actualizar campo

Así es como lo tengo, probe a poner GET y pasa lo mismo
  #13 (permalink)  
Antiguo 16/07/2014, 12:03
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: actualizar campo

Por favor, coloca el código del formulario.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #14 (permalink)  
Antiguo 16/07/2014, 12:09
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Respuesta: actualizar campo

Mmm.. No se, yo siempre lo he hecho de la manera que hacias, o bien prueba con esto:

Código PHP:
Ver original
  1. $query = "UPDATE dir_persona  SET orden = ".$orden." WHERE id_persona = ".$id;
o bien quita las apostrofes de ambos valores,$orden e $id;
Sinceramente nunca he tenido un problema de sintax en las consultas por poner comillas por mas que sean valores enteros.
Saludos.
  #15 (permalink)  
Antiguo 16/07/2014, 12:15
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: actualizar campo

este es el formulario:
Código PHP:
Ver original
  1. <?php include("conecta.php");
  2.            
  3.  
  4.             include("acceso.php");
  5.            
  6.            
  7.             $dr = $_GET['ads'];
  8.            
  9.            
  10.             $link = connectToDB();
  11.             $query = "SELECT DISTINCT
  12.            id_persona, siglas, nombre, paterno, materno, puesto, id_adscripcion, orden
  13.          FROM
  14.            dir_titulo
  15.          LEFT JOIN
  16.            dir_persona ON dir_titulo.id_titulo = dir_persona.id_titulo
  17.          LEFT JOIN
  18.            dir_puesto ON dir_puesto.id_puesto = dir_persona.id_puesto
  19.          WHERE
  20.            id_adscripcion LIKE '".$dr."%' order by orden;";
  21.                          
  22.  
  23.  
  24.             $resultados = mysql_query($query)
  25.                     or die ("No se pudo realizar la consulta. " . mysql_error());
  26.            
  27.             $clave  = mysql_Result($link, "id_persona");
  28.            
  29.             //$i = 0 ;
  30.             $num1 = 0;
  31.    
  32.             while ($mostrar = mysql_fetch_array($resultados, MYSQL_BOTH)) {
  33.                
  34.                 $id_persona     = $mostrar['id_persona'];
  35.                 $r1 = $mostrar['siglas'] .' '. $mostrar['nombre'] .' '. $mostrar['paterno'] .' '. $mostrar['materno'];
  36.                 $r2 = $mostrar['puesto'];
  37.                 $id_adscripcion = $mostrar['id_adscripcion'];
  38.                 $orden = $mostrar['orden'];
  39.                 ?>
  40. <form name='actualiza' method='post' action='orden.php'>
  41.                 <table class="tabla1">
  42.                     <tr>
  43.                         <?php
  44.                             if($num1 % 2 == 0)
  45.                                 {
  46.                         ?>
  47.                         <td><input type="hidden" name="id_adscripcion" value="<?php echo $id_adscripcion; ?>" /></td>
  48.                         <td><input type="hidden" name="id_persona" value="<?php echo $id_persona; ?>" /></td>
  49.                         <td class="f"><input size="1" name="orden" maxlength='2' value="<?php echo $orden; ?>" />
  50.                         </td>
  51.                         <td class="td1">                           
  52.                             <?php echo $r1; ?>
  53.                             </a>
  54.                         </td>      
  55.                         <td class="td2">
  56.                             <?php echo $r2; ?>
  57.                         </td>                      
  58.                         <td class="f"><a href="detalles_admin.php?id=<?php echo $id_persona; ?>">
  59.                         Editar&nbsp;&nbsp;
  60.                          </a>
  61.                         </td>
  62.                         <td class="f"><a href="orden.php?id=<?php echo $id_persona; ?>">
  63.                         Ordenar&nbsp;&nbsp;
  64.                          </a>
  65.                         </td>
  66.                         <td class="f"><a href="borrar.php?id=<?php echo $id_persona; ?>">
  67.                         Borrar
  68.                          </a>
  69.                         </td>
  70.                        
  71.                         <?php
  72.                                 }
  73.                             else
  74.                             {
  75.                         ?>
  76.                         <td><input type="hidden" name="id_adscripcion" value="<?php echo $id_adscripcion; ?>" /></td>
  77.                         <td><input type="hidden" name="id_persona" value="<?php echo $id_persona; ?>" /></td>
  78.                         <td class="f"><input size="1" name="orden" maxlength='2' value="<?php echo $orden; ?>" />
  79.                         </td>
  80.                         <td class="td3">                           
  81.                             <?php echo $r1; ?>
  82.                         </td>
  83.                         <td class="td4">
  84.                             <?php echo $r2; ?>
  85.                         </td>
  86.                         <td class="f"><a href="detalles_admin.php?id=<?php echo $id_persona; ?>">
  87.                         Editar&nbsp;&nbsp;
  88.                          </a>
  89.                         </td>
  90.                         <td class="f"><a href="orden.php?id=<?php echo $id_persona; ?>">
  91.                         Ordenar&nbsp;&nbsp;
  92.                          </a>
  93.                         </td>
  94.                         <td class="f"><a href="borrar.php?id=<?php echo $id_persona; ?>">
  95.                         Borrar
  96.                          </a>
  97.                         </td>
  98.                     <?php
  99.                     }
  100.                     ?>
  101.                     <?php
  102.        
  103.             //$i ++;
  104.             $num1 ++;          
  105.             }
  106.         ?>
  107.         </tr>
  108.                 </table>               
  109.                 </form>

Última edición por portal47; 16/07/2014 a las 12:25
  #16 (permalink)  
Antiguo 16/07/2014, 12:30
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: actualizar campo

¿Te has asegurado de que estés recibiendo correctamente los datos?

Prueba ejecutando esto y muéstranos el resultado:

Código PHP:
Ver original
  1. echo 'id_persona: ' . ($_POST['id_persona'] ? $_POST['id_persona'] : 'No llegó el valor<br />';
  2. echo 'id_adscripcion: ' . ($_POST['id_adscripcion'] ? $_POST['id_adscripcion'] : 'No llegó el valor<br />';
  3. echo 'orden: ' . ($_POST['orden'] ? $_POST['orden'] : 'No llegó el valor';

Por otro lado, he notado que el valor de $_GET['id'] solamente podría llegar si pulsas el enlace que redirige hacia el archivo orden.php, que es el mismo hacia donde envías los valores con el formulario. Desde ahí ya estás mal, te aconsejaría tener un listado de todos los registros de la base de datos y por cada fila, asignarle dos opciones; una para editar, con lo cual llevarías al usuario hacia un archivo en el que aparecerá un formulario con los datos del registro seleccionado listos para ser editados y una segunda opción para eliminar el registro, pero no tengas todo dentro del módulo de edición, como lo tienes ahora.

Supongo que la condición para la actualización debería de darse con el valor de $_POST['id_persona'] o con el de $_POST['id_adscripcion']. Luego de hacer los cambios que te sugerí, prueba realizando la condición en la consulta con cualquiera de estos dos datos (el que corresponda) y nos cuentas cómo te fue. Por cierto, para enviar los datos del formulario a procesarse, debes de colocar y pulsar el siguiente botón:

Código HTML:
Ver original
  1. <input type = "submit" />

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #17 (permalink)  
Antiguo 17/07/2014, 12:44
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: actualizar campo

ahora tengo asi mi formulario:
Código PHP:
Ver original
  1. <form method='post' action='orden.php'>
  2.                 <table class="tabla1">
  3.                     <tr>
  4.                         <?php
  5.                             if($num1 % 2 == 0)
  6.                                 {
  7.                         ?>
  8.                         <td><input type='hidden' name='id_adscripcion' value='<?php echo $id_adscripcion; ?>' /></td>
  9.                         <td><input type='hidden' name='id_persona' value='<?php echo $id_persona; ?>' /></td>
  10.                         <td class='f'><input size='1' name='orden' maxlength='2' value='<?php echo $orden; ?>' />
  11.                         </td>
  12.                         <td class="td1">
  13.                             <?php echo $r1; ?>
  14.                         </td>      
  15.                         <td class="td2">
  16.                             <?php echo $r2; ?>
  17.                         </td>                      
  18.                         <td class="f"><a href="detalles_admin.php?id=<?php echo $id_persona; ?>">
  19.                         Editar
  20.                          </a>
  21.                         </td>
  22.                          <td class="f"><input type='submit' name='ordenar' value='Ordenar'/>
  23.                          <!-- <td class="td2"><a href="orden.php?id=<?php echo $id_persona; ?>">Ordenar</a></td> -->
  24.                          </a>
  25.                         </td>
  26.                         <td class="f"><input type='submit' name='borrar' value='Borrar' />
  27.                          </a>
  28.                         </td>
  29.                        
  30.                         <?php
  31.                                 }
  32.                             else
  33.                             {
  34.                         ?>
  35.                         <td><input type='hidden' name='id_adscripcion' value='<?php echo $id_adscripcion; ?>' /></td>
  36.                         <td><input type='hidden' name='id_persona' value='<?php echo $id_persona; ?>' /></td>
  37.                         <td class="f"><input size="1" name="orden" maxlength='2' value="<?php echo $orden; ?>" />
  38.                         </td>
  39.                         <td class="td3">                           
  40.                             <?php echo $r1; ?>
  41.                         </td>
  42.                         <td class="td4">
  43.                             <?php echo $r2; ?>
  44.                         </td>
  45.                         <td class="f"><a href="detalles_admin.php?id=<?php echo $id_persona; ?>">
  46.                         Editar
  47.                          </a>
  48.                         </td>
  49.                         <td class="f"><input type='submit' name='ordenar' value='Ordenar' />
  50.                         <!-- <td class="td2"><a href="orden.php?id=<?php echo $id_persona; ?>">Ordenar</a></td> -->
  51.                          </a>
  52.                         </td>
  53.                         <td class="f"><input type='submit' name='borrar' value='Borrar' />
  54.                          </a>
  55.                         </td>
  56.                     <?php
  57.                     }
  58.                     ?>
  59.                     <?php
  60.        
  61.             //$i ++;
  62.             $num1 ++;          
  63.             }
  64.         ?>
  65.         </tr>
  66.                 </table>               
  67.                 </form>

y este es el archivo que ejecuta cada acción:
Código PHP:
Ver original
  1. <?php
  2.  
  3. include("1.php");
  4.    
  5.    
  6. if ($_POST[borrar]) {
  7.  $id=$_POST['id'];
  8. $id_persona=$_POST['id_persona'];
  9.  
  10.    //$query = mysql_query("delete from dir_persona where id_persona = '$id'");
  11.    //$query = mysql_query("delete from dir_telefono where id_persona = '$id'");
  12.    
  13.    //$result=mysql_query($query,$link) or die("Error: ".mysql_error());
  14.    
  15.    echo $id;
  16.    echo '/';
  17.    echo $id_persona;
  18.     //cho "<html><head></head>".
  19.     //"<body onload=\"javascript:history.back()\">".
  20.     //"</body></html>";
  21.     }
  22.    
  23.    
  24. if ($_POST[ordenar]) {
  25.    
  26.      $id_persona=$_POST['id_persona'];
  27.      $id = $_POST['id'];
  28.      $id_adscripcion = $_POST['id_adscripcion'];
  29.      $orden = $_POST['orden'];
  30.        
  31.     //$query = "UPDATE dir_persona
  32.     //SET orden = $orden
  33.     //WHERE id_persona = '$id_persona'";
  34.    
  35.     //$result=mysql_query($query,$link) or die("Error: ".mysql_error());
  36.    
  37.  
  38.    
  39.     echo $orden;
  40.     echo '/';
  41.     echo $id_persona;
  42.     echo "/";
  43.     echo $id_adscripcion;
  44. //echo 'Valor: ' . ($orden ? $orden : 'No llegó el valor');
  45.     //header("location: ./dirarbol_admin.php?ads=$id_adscripcion");
  46.  }
  47.  
  48.    
  49. //if ($_POST[editar]) {
  50.  
  51. //echo $id_persona
  52. //}
  53. ?>
Ahora como ven le digo que imprima el "id_persona", el "orden" y el "id_adscripcion" pero solo imprime los datos de el ultimo registro de la tabla

Etiquetas: campo, mysql, registro, sql, tabla
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:05.