Foros del Web » Programando para Internet » PHP »

Actualizar registros con el mismo id cambiando solo los valores

Estas en el tema de Actualizar registros con el mismo id cambiando solo los valores en el foro de PHP en Foros del Web. Hola que tal, esta duda es parecida a la que tenia en un anterior mensaje que pude resolver, pero la bronca ahora es que si ...
  #1 (permalink)  
Antiguo 13/09/2011, 11:26
 
Fecha de Ingreso: marzo-2011
Ubicación: Victoria,Mexico
Mensajes: 45
Antigüedad: 13 años, 8 meses
Puntos: 0
Actualizar registros con el mismo id cambiando solo los valores

Hola que tal, esta duda es parecida a la que tenia en un anterior mensaje que pude resolver, pero la bronca ahora es que si yo tengo 5 registros con ese mismo id, al seleccionar uno de los 5 siempre me toma el primer registro..

TABLA que relaciona producto y departamento y solo quiero cambiar existencia:

|id_producto| |id_departamento| |existencia|
0001 0002 si
0001 0003 no
0001 0005 sin especificar

entonces si yo selecciono el tercer registro :

|id_producto| |id_departamento| |existencia|
0001 0005 sin especificar

para actualizarlo al valor a si siempre me toma y actualiza el primer registro

yo uso un

Código PHP:
Ver original
  1. UPDATE pro_dep SET existencia='$existencia' WHERE id_producto=$id_producto AND id_departamento='$id_departamento'";
__________________
¿La mejor respuesa?...Una pregunta

Última edición por davidmrtnz413; 13/09/2011 a las 11:27 Razón: me habia equivocado
  #2 (permalink)  
Antiguo 13/09/2011, 11:43
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 14 años, 2 meses
Puntos: 511
Respuesta: Actualizar registros con el mismo id cambiando solo los valores

Lo que te recomiendo es que estructures bien tus tablas, de preferencia debes de tener un campo único para crear este tipo de procesos.

Pero También lo puedes resolver mandando el valor anterior del campo por ejemplo

Código PHP:
Ver original
  1. UPDATE pro_dep SET existencia='$existencia' WHERE id_producto=$id_producto AND id_departamento='$id_departamento' AND existencia='$valor_anterior' ";

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #3 (permalink)  
Antiguo 13/09/2011, 12:24
 
Fecha de Ingreso: marzo-2011
Ubicación: Victoria,Mexico
Mensajes: 45
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Actualizar registros con el mismo id cambiando solo los valores

si compa las tablas tan bueno segun bien relacionadas jeje es ke este es un ejemplo en otro caso

MATERIA
id_materia
nombre

ALUMNO
id_alumno
nombre

y esta tabla meto los puros id´s para manejar los alumnos que aprobaron

MAT_ALU
id_materia
id_alumno
aprobado

en ese caso yo al ejecutar el script que quiero actualizar hago una consulta en la que puedo obtner los datos

alumno materia aprobado
juan mendez español si
juan mendez matematicas no
carmen alameda español no

id_alumno id_materia aprobado
0001 0001 si
0001 0002 no
0002 0001 no

dices que haga un
Código PHP:
Ver original
  1. UPDATE mat_alu SET aprobado='$aprobado' WHERE id_alumno='$id_alumno' AND id_materia='$id_materia AND aprobado='$valor_anterior'

el $valor anterior
ese de donde lo tomo o nada mas asi metiendolo funciona?? soy novato asi que pues comprenderas saludos
__________________
¿La mejor respuesa?...Una pregunta

Última edición por davidmrtnz413; 13/09/2011 a las 12:25 Razón: me equivoque
  #4 (permalink)  
Antiguo 13/09/2011, 12:29
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 18 años, 1 mes
Puntos: 32
Respuesta: Actualizar registros con el mismo id cambiando solo los valores

Una observación.

Si id_alumno es unico y no se repite como tu bien dices, porque pones
AND id_materia='$id_materia AND aprobado='$valor_anterior'

Pienso que esto sobra.
  #5 (permalink)  
Antiguo 13/09/2011, 12:30
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 18 años, 1 mes
Puntos: 32
Respuesta: Actualizar registros con el mismo id cambiando solo los valores

Luego tendrías que ver que valor tiene $id_alumno... si le pasa la verdadera id, no tendría que fallar.

Como actualiza la información ¿lo metes dentro de un bucle?

Saludos.
  #6 (permalink)  
Antiguo 13/09/2011, 14:31
 
Fecha de Ingreso: marzo-2011
Ubicación: Victoria,Mexico
Mensajes: 45
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Actualizar registros con el mismo id cambiando solo los valores

Cita:
Iniciado por gogupe Ver Mensaje
Luego tendrías que ver que valor tiene $id_alumno... si le pasa la verdadera id, no tendría que fallar.

Como actualiza la información ¿lo metes dentro de un bucle?

Saludos.
el AND id_materia='$id_materia
es por que yo quiero que actualize ese curso si el

id es 0001 y materia es 0002 (claro dependiendo del valor que tengan)

y asi cuando meto eso no me cambia todos los registros con id 0001

por que si no le meto eso y yo hago

UPDATE SET aprobado='$aprobado' WHERE id_alumno='$id_alumno me cambiara todos los que tengo

mmm mira la actualizacion lo saque de un ejemplo donde usan ajax para que se habra los campos a actualizar dentro de la misma pagina

este es el codigo de la actualizacion

Código PHP:
Ver original
  1. <?php
  2.  
  3. //Configuracion de la conexion a base de datos
  4. $bd_host = "localhost";
  5. $bd_usuario = "root";
  6. $bd_password = "root";
  7. $bd_base = "base";
  8. $con = mysql_connect($bd_host, $bd_usuario, $bd_password);
  9. mysql_select_db($bd_base, $con);
  10.  
  11. //variables POST
  12. $id_alumno=$_POST['id_alumno'];
  13. $aprobado=$_POST['aprobado'];
  14.  
  15.  
  16.  
  17.  
  18. //actualiza los datos del empleados
  19. $sql="UPDATE mat_alu SET aprobado='$aprobado' WHERE id_alumno=$id_alumno AND id_materia='$materia'";
  20.  
  21. mysql_query($sql,$con);
  22.  
  23. include('consulta.php');
  24. ?>

esta es la consulta
Código PHP:
Ver original
  1. <?php
  2.  
  3. //Configuracion de la conexion a base de datos
  4. $bd_host = "localhost";
  5. $bd_usuario = "root";
  6. $bd_password = "root";
  7. $bd_base = "base";
  8. $con = mysql_connect($bd_host, $bd_usuario, $bd_password);
  9. mysql_select_db($bd_base, $con);
  10.  
  11. //consulta todos los empleados
  12.  
  13. $sql=mysql_query("select * from mat_alu,$con);
  14.  
  15. //muestra los datos consultados
  16. //haremos uso de tabla para tabular los resultados
  17. ?>
  18.  
  19. <table style="border:1px solid  #69F; color:#000099;width:400px;">
  20. <tr style="background:#99CCCC; color: #000;">
  21.     <td bgcolor="#0099FF">ID</td>
  22.    
  23.     <td bgcolor="#0099FF">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nombre&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
  24.     <td bgcolor="#0099FF">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Curso&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
  25.     <td bgcolor="#0099FF">Aprobado</td>
  26.  
  27.      
  28.    
  29.    
  30.  
  31. </tr>
  32.  
  33. <?php
  34. while($row = mysql_fetch_array($sql)){
  35.     echo "  <tr>";
  36.     //mediante el evento onclick llamaremos a la funcion PedirDatos(), la cual tiene como parametro
  37.     //de entrada el ID del empleado
  38.     echo "      <td><a style=\"text-decoration:underline;aprobador:pointer;\" onclick=\"pedirDatos('".$row['id_alumno']."')\">".$row['fech'].$row['id_alumno']."</a></td>";
  39.    
  40.     echo "      <td>".$row['id_cursos']."</td>";
  41.        
  42.     echo "      <td>".$row['aprobado']."</td>";
  43.    
  44.  
  45.  
  46.    
  47.     echo "  </tr>";
  48. }
  49. ?>
  50. </table>

este es el codigo el cual se abre para cambiar los datos

Código PHP:
Ver original
  1. <?php
  2.  
  3. $bd_host = "localhost";
  4. $bd_usuario = "root";
  5. $bd_password = "root";
  6. $bd_base = "base";
  7. $con = mysql_connect($bd_host, $bd_usuario, $bd_password);
  8. mysql_select_db($bd_base, $con);
  9.  
  10. //consulta los datos del empleado por su id
  11. $id_alumno=$_POST['id_alumno'];
  12.  
  13.  
  14. $sql=mysql_query("SELECT * FROM mat_alu WHERE id_alumno=$id_alumno",$con);
  15.  
  16. $row = mysql_fetch_array($sql);
  17.  
  18. //valores de las consultas
  19.  
  20. $aprobado=$row['aprobado'];
  21. $id_materia=$row['id_materia'];
  22.  
  23.  
  24.  
  25.  
  26. //muestra los datos consultados en los campos del formulario
  27. ?>
  28. <form name="frmalumno" action=""
  29. onsubmit="enviarDatosEmpleado(); return false">
  30.     <p>
  31.       <input name="id_alumno" type="hidden" value="<?php echo $id_alumno; ?>" />
  32.      
  33.       <input name="id_materia" type="text" id="id_materia" value="<?=$id_materia?>">
  34.   </p>
  35. <table width="523" border="0" cellspacing="0" cellpadding="0">
  36.       <tr>
  37.         <td>&nbsp;</td>
  38.         <td>&nbsp;</td>
  39.       </tr>
  40.       <tr>
  41.         <td>&nbsp;</td>
  42.         <td>&nbsp;</td>
  43.       </tr>
  44.       <tr>
  45.         <td>&nbsp;</td>
  46.         <td>Certificado
  47.           <select name="aprobado"  id="aprobado">
  48.         <?php
  49.       echo "<option value=\"".$aprobado."\">".$aprobado."</option>"
  50.       ?>
  51.         <option>Sin especificar</option>
  52.         <option>Si</option>
  53.         <option>No</option>
  54.        
  55.       </select>
  56.     </tr>
  57.   </table>
  58. <p>
  59.   <input type="submit" name="Submit" value="Actualizar" />
  60.   </p>
  61. </form>

y este es el ajax
Código AJAX:
Ver original
  1. //Desarrollado por Jesus Liñán
  2. //ribosomatic.com
  3. //Puedes hacer lo que quieras con el código
  4. //pero visita la web cuando te acuerdes
  5.  
  6. function objetoAjax(){
  7.     var xmlhttp=false;
  8.     try {
  9.         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  10.     } catch (e) {
  11.         try {
  12.            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  13.         } catch (E) {
  14.             xmlhttp = false;
  15.         }
  16.     }
  17.  
  18.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  19.         xmlhttp = new XMLHttpRequest();
  20.     }
  21.     return xmlhttp;
  22. }
  23.  
  24. function enviarDatosEmpleado(){
  25.     //donde se mostrará lo resultados
  26.     divResultado = document.getElementById('resultado');
  27.     divFormulario = document.getElementById('formulario');
  28.    
  29.     //valores de los inputs
  30.     id_alumno=document.frmalumno.id_alumno.value;
  31.  
  32.     aprobado=document.frmalumno.aprobado.value;
  33.     materia=document.frmalumno.materia.value;
  34.    
  35.  
  36.    
  37.     //instanciamos el objetoAjax
  38.     ajax=objetoAjax();
  39.     //usando del medoto POST
  40.     //archivo que realizará la operacion
  41.     //actualizacion.php
  42.     ajax.open("POST", "actualizacion.php",true);
  43.     ajax.onreadystatechange=function() {
  44.         if (ajax.readyState==4) {
  45.             //mostrar los nuevos registros en esta capa
  46.             divResultado.innerHTML = ajax.responseText
  47.             //mostrar un mensaje de actualizacion correcta
  48.             divFormulario.innerHTML = "<p style=\"border:1px solid red; width:400px;\">La actualizaci&oacute;n se realiz&oacute; correctamente</p>";
  49.            
  50.         }
  51.     }
  52.     //muy importante este encabezado ya que hacemos uso de un formulario
  53.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  54.     //enviando los valores
  55.    
  56.     ajax.send("id_alumno="+id_alumno+"&aprobado="+aprobado+"&materia="+materia)
  57.    
  58. }
  59.  
  60. function pedirDatos(id_alumno){
  61.     //donde se mostrará el formulario con los datos
  62.     divFormulario = document.getElementById('formulario');
  63.    
  64.     //instanciamos el objetoAjax
  65.     ajax=objetoAjax();
  66.     //uso del medotod GET
  67.     ajax.open("POST", "consulta_por_id.php");
  68.     ajax.onreadystatechange=function() {
  69.         if (ajax.readyState==4) {
  70.             //mostrar resultados en esta capa
  71.             divFormulario.innerHTML = ajax.responseText
  72.             //mostrar el formulario
  73.             divFormulario.style.display="block";
  74.         }
  75.     }
  76.     //como hacemos uso del metodo GET
  77.     //colocamos null
  78.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  79.     //enviando los valores
  80.     ajax.send("id_alumno="+id_alumno)
  81. }



igual con modificaciones que le hize hace que cambie el aprobado de un id_alumno que tenga varios id_materia actualizandose solo el valor que selecciono

pero la bronca es que si tengo 4 (por ejemplo)
siempre de los siempres me selecciona el primer registro
__________________
¿La mejor respuesa?...Una pregunta

Etiquetas: id´s, iguales, tabla, update, actualizaciones
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 15:42.