Ir al contenido


Foto

Update de varios registros con mismo ID no me SSALE!!!!


  • Por favor identifícate para responder
12 respuestas en este tema

#1 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 12 noviembre 2011 - 05:02

Buenas amigos virtuales!!Realmente tengo problemas y mas problemas con un mini sistema que toy desarrollando!!El actual lo explico de la siguiente manera:
  Tengo la siguiente tabla y supongamos los siguientes registros:
      Persona_telefonos
      id_persona                telefono
              1                          1111
              1                          2222
              1                          3333
              2                          2323
              2                          2323

Cuando hago la consulta SQL para traer los datos sólo me trae un registro de los 3 con el mismo "id" y me repite ese, y cuando quiero hacer un "Update" me cambia los tres registros y me pone un solo valor cambiandome los tres al mismo numero de teléfono!!!!
Necesitaría saber como hacer para que me cambie los tres registros de manera independiente!!!

AYUDA PLEASE!!!!!!
  • 0

#2 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 12 noviembre 2011 - 05:12

Hola.

Deberías añadir un campo de código único (que no se repite) a la tabla. No puedes identificar registras con códigos que se repiten en distintas filas.

NOTA: También podrías validar la entrada de datos y asegurarte de que no te entran códigos de persona ya usados.

Saludos.
  • 0

#3 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 12 noviembre 2011 - 05:38

Me sigue repitiendo!!!Al mostrar los datos solo me toma un teléfono de los dos o tres que tiene almacenado!!!

Mira así lo planteo cuando tomo los datos para mostrarlos::

<?php

require_once("../../conexion/conexion.php");

$sql="SELECT * FROM empresas, emp_ubic, emp_tel, emp_correo, emp_fax WHERE empresas.id_emp=".$_GET["id_empresa"]." AND emp_ubic.id_emp=".$_GET["id_empresa"]." AND emp_tel.id_emp=".$_GET["id_empresa"]." AND emp_correo.id_emp=".$_GET["id_empresa"]." AND emp_fax.id_emp=".$_GET["id_empresa"]."";
$res=mysql_query($sql,$conexion);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR...l1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>FuENA - Sesión Adminitrador</title>
<link href="../../style.css" rel="stylesheet" type="text/css" media="screen" />
<script language="javascript" type="text/javascript" src="js/funciones.js"></script>
</head>
<body onLoad="limpiar()">
<div id="wrapper">
  <div id="menu">
<ul>
<li><a href="#">Admin</a></li>
<li><a href="#">Proyectos</a></li>
<li><a href="#">Capacitaciones</a></li>
<li  class="current_page_item"><span><a href="#">Empresas</a></span></li>
<li><a href="#">Docentes</a></li>
<li><a href="#">Ingresar</a></li>
<li><a href="#">Contacto</a></li>
</ul>
  </div>
<!-- end #menu -->
<div id="header">
<div id="logo" align="center">
<h1><a href="#"></a></h1>
</div>
  </div>
<!-- end #header -->
<div id="page_a">
<?php
if ($reg=mysql_fetch_array($res))
{
?>
<form action="edit.php" method="post" name="form">
<table width="902" border="0" align="center" cellpadding="3" cellspacing="3">
  <tr>
<td colspan="4">&nbsp;</td>
  </tr>
  <tr>
<td colspan="2" class="encabezado" align="center">Razon Social </td>
<td colspan="2" width="450" class="encabezado" align="center">Cuit Responsable </td>
  </tr>
  <tr>
<td colspan="2" align="center"><input type="text" name="razon_soc" size="68" value="<?php echo $reg["raz_soc"];?>"/></td>
<td colspan="2" width="450" align="center"><input type="text" name="cuit" size="68" value="<?php echo $reg["cuit_resp"];?>"/></td>
  </tr>
  <tr>
    <td colspan="2" class="encabezado" align="center">Datos de la Ubicaci&oacute;n</td>
        <td colspan="2" class="encabezado" align="center">Tel&eacute;fonos</td>
          </tr>
  <tr>
<td colspan="2" rowspan="3">
<table width="444" border="0" cellpadding="2" cellspacing="2">
                  <tr>
                    <td width="130" class="encabezado" align="center">Pais</td>
                    <td width="300"><input type="text" name="pais" size="50" value="<?php echo $reg["pais"];?>"/></td>
                  </tr>
                  <tr>
                    <td class="encabezado" align="center">Ciudad</td>
                    <td><input type="text" name="ciudad" size="50" value="<?php echo $reg["ciudad"];?>"/></td>
                  </tr>
                  <tr>
                    <td class="encabezado" align="center">Localidad</td>
                    <td><input type="text" name="localidad" size="50" value="<?php echo $reg["localidad"];?>"/></td>
                  </tr>
                  <tr>
                    <td class="encabezado" align="center">Departamento</td>
                    <td><input type="text" name="departamento" size="50" value="<?php echo $reg["departamento"];?>"/></td>
                  </tr>
                  <tr>
                    <td class="encabezado" align="center">Municipio</td>
                    <td><input type="text" name="municipio" size="50" value="<?php echo $reg["muni"];?>"/></td>
                  </tr>
                  <tr>
                    <td class="encabezado" align="center">Dirección</td>
                    <td><input type="text" name="direccion" size="50" value="<?php echo $reg["direccion"];?>"/></td>
                  </tr>
                  <tr>
                    <td class="encabezado" align="center">C&oacute;digo Postal </td>
                    <td><input type="text" name="cod_postal" size="50" value="<?php echo $reg["cod_postal"];?>"/></td>
                  </tr>
                </table>
</td>
<td height="47" colspan="2">
<table width="444" border="0" cellpadding="2" cellspacing="2">
                  <tr>
                    <td width="130" class="encabezado" align="center"><span>Tel&eacute;fono</span></td>
                    <td width="300"><input type="text" name="tel" size="50" value="<?php echo $reg["tel"];?>"/></td>
                    </tr>
                    <tr>
<td class="encabezado" align="center">Teléfono 1 </td>
<td width="300"><input type="text" name="tel1" size="50" value="<?php echo $reg["tel"];?>"/></td>
                  </tr>
  <tr>
<td class="encabezado" align="center">Fax</td>
<td width="300"><input type="text" name="fax" size="50" value="<?php echo $reg["fax"];?>"/></td>
  </tr>
</table>
</td>
      </tr>
  <tr>
    <td colspan="2" align="center" class="encabezado">E-Mail</td>
      </tr>
 
  <tr>
    <td height="47" colspan="2">
<table width="444" border="0" cellpadding="2" cellspacing="2">
                  <tr>
                    <td width="130" height="12" align="center" class="encabezado"><span>E-Mail</span></td>
                    <td width="300"><input type="text" name="correo" size="50" value="<?php echo $reg["correo"];?>"/></td>
                  </tr>
                  <tr>
                    <td height="12" align="center" class="encabezado">Otro</td>
                    <td width="300"><input type="text" name="correo" size="50" value="<?php echo $reg["correo"];?>"/></td>
                  </tr>
                </table>
</td>
  </tr>
  <tr>
<td colspan="4" align="center" class="encabezado">&nbsp;</td>
  </tr>
 
 
  <tr>
<td colspan="4" align="center" class="encabezado">
<div align="center">
<input type="hidden" name="id_empresa" value="<?php echo $_GET["id_empresa"];?>" />
<input name="button" type="button" title="Volver" onClick="history.back()" value="Volver" />
&nbsp;||&nbsp;
<input name="button2" type="button" title="Modificar Empresa" onClick="validar()" value="Modificar Empresa" />
</div> </td>
  </tr>
  </table>
</form>
<?php
}
?>
<div id="page-bgtop">
<div id="page-bgbtm">
  <!-- end #content -->
  </div>
</div>
  </div>
<!-- end #page -->
</div>
<div id="footer-wrapper">

<!-- end #footer -->
</div>
</body>
</html>


  • 0

#4 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 12 noviembre 2011 - 05:54

Cuando hago clic al actualizar uso mas o menos este add::



<?php

require_once("../../conexion/conexion.php");

$sql="UPDATE empresas SET raz_soc='".$_POST["razon_soc"]."',cuit_resp='".$_POST["cuit"]."' WHERE id_emp=".$_POST["id_empresa"]."";
$res=mysql_query($sql,$conexion);

$sql2="UPDATE emp_ubic SET direccion='".$_POST["direccion"]."',ciudad='".$_POST["ciudad"]."',localidad='".$_POST["localidad"]."',departamento='".$_POST["departamento"]."',muni='".$_POST["municipio"]."',pais='".$_POST["pais"]."',cod_postalp='".$_POST["cod_postal"]."' WHERE id_emp=".$_POST["id_empresa"]."";
$res2=mysql_query($sql2,$conexion);

$sql3="UPDATE emp_fax SET fax='".$_POST["fax"]."' WHERE id_emp=".$_POST["id_empresa"]."";
$res3=mysql_query($sql3,$conexion);

$sql4="UPDATE emp_tel SET tel='".$_POST["tel"]."' WHERE id_emp=".$_POST["id_empresa"]."";
$res4=mysql_query($sql4,$conexion);

$sql6="UPDATE emp_tel SET tel='".$_POST["tel1"]."' WHERE id_emp=".$_POST["id_empresa"]."";
$res6=mysql_query($sql6,$conexion);

$sql5="UPDATE emp_correo SET correo='".$_POST["correo"]."' WHERE id_emp=".$_POST["id_empresa"]."";
$res5=mysql_query($sql4,$conexion);



$sql8="DELETE FROM emp_correo WHERE emp_correo.correo=''";
$res8=mysql_query($sql8,$conexion);

$sql9="DELETE FROM emp_fax WHERE emp_fax.fax=''";
$res9=mysql_query($sql9,$conexion);

$sql10="DELETE FROM emp_tel WHERE emp_tel.tel=''";
$res10=mysql_query($sql10,$conexion);

echo "<script type=''>
alert('Los datos de la Empresa fueron modificados correctamente!');
window.location='emp_admin.php';
</script>";
?>

  • 0

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 14 noviembre 2011 - 08:26

A mi entender la forma como presentas y modificas el formlario estan mal planteadas, a ver presentanos una imagen del formulario.

Saludos.

  • 0

#6 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 14 noviembre 2011 - 10:32

Ahí va el formulario de Modificación:
En ese formulario hay diferentes tablas correspondientes a empresas, entre ellas emp_tel, quedaría así:

            emp_tel
id_empresa      tel
        1            333333
        1            222222
        2            444444
        2            555555
        3            666666
        4            777777
        4            888888
        5            999999
        6            111111

Pero al seleccionar que me muestre los datos de una empresa para modificarlos, sólo me muestra un teléfono por empresa(error que me sucede cuando la misma tiene dos empresas!!!)y cuando modifico me modifica uno solo!!!
Eh probado también con el arreglo del while para que cargue mis datos a una tabla predefinida, eurecas!Me mostró todos los datos!!!Pero me sigue modificando un solo registro de ellos!!!!

Necesito que me modifique más de un registro que poseen en el mismo id_empresa pero tienen a su vez diferentes id_tel!!!!

AYUDAAAAAAAAAAAAAAAAAAAAAAA!!!!!

Archivos adjuntos


  • 0

#7 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 15 noviembre 2011 - 07:18

Acá les dejo el otro caso donde pruebo con un while para que me muestre los datos, en este caso la relación es de un proyecto a muchas formaciones, por ende al querer modificar las formaciones sólo me modifica una de ellas, eh aquí mi curioso caso!jeje::


<form action="edit.php" method="post" name="form">
        <?php
while ($reg=mysql_fetch_array($res))
{
?>
  <table width="900" border="0">
        <tr>
            <td colspan="3" class="encabezado">Formación</td>
            </tr>
    <tr>
            <td height="1" class="encabezado" colspan="3"></td>
            </tr>
            <tr>
      <td align="center" class="encabezado" width="247">Línea de Actividad</td>
      <td align="center" class="encabezado" width="334">Nombre del Curso</td>
      <td align="center" class="encabezado" width="305">Lugar de Dictado</td>
        </tr>
            <tr class="registros">
              <td align="center" class="registros"><input type="text" name="lin_act" size="20" value="<?php echo $reg["lin_act"];?>" /></td>
              <td align="center" class="registros"><textarea cols="40" rows="1" name="nombre"><?php echo $reg["nombre"];?></textarea></td>
              <td align="center" class="registros"><textarea cols="40" rows="1" name="dictado"><?php echo $reg["lug_dictado"];?></textarea></td>
            </tr>
            <tr>
              <td align="center" class="encabezado">Fecha de Inicio</td>
              <td align="center" class="encabezado">Fecha de Finalización</td>
              <td align="center" class="encabezado">Cantidad de Horas</td>
            </tr>
            <tr>
              <td align="center" class="registros">
              <input type="text" name="f_ini" size="8" value="<?php echo $reg["f_ini"];?>"/>
              </td>
              <td align="center" class="registros">
              <input type="text" name="f_fin" size="8" value="<?php echo $reg["f_fin"];?>"/>
              </td>
              <td align="center" class="registros"><input type="text" name="horas" size="8" value="<?php echo $reg["cant_hs"];?>"/>
              </td>
            </tr>
            <tr>
              <td align="center" class="encabezado">Cantidad de Réplicas</td>
              <td align="center" class="encabezado">Participantes Ocupados</td>
              <td align="center" class="encabezado">Participantes Desocupados</td>
            </tr>
            <tr class="registros">
      <td align="center" class="registros" width="247">
          <input type="text" name="replicas" size="9" value="<?php echo $reg["cant_replicas"];?>"/>
      </td>
      <td align="center" class="registros" width="334">
          <input type="text" name="ocupados" size="9" value="<?php echo $reg["cant_ocup"];?>"/>
      </td>
              <td align="center" class="registros" width="305"><input type="text" name="desocupados" size="9" value="<?php echo $reg["cant_desoc"];?>" />
              </td>
        </tr>
            <tr>
            <td height="1" class="encabezado" colspan="3">
                </td>
            </tr>
            <tr>
            <td colspan="3"><input name="id_profor" type="text" value="<?php echo $reg["id_profor"];?>" />
                </td>
            </tr>
          <?php
}
?>
            <tr>
<td colspan="4" align="center" class="encabezado">
<div align="center">
<input type="hidden" name="id_proy" value="<?php echo $_GET["id_proyecto"];?>" />
<input name="button" type="button" title="Volver" onClick="history.back()" value="Volver" />
&nbsp;||&nbsp;
<input name="button2" type="button" title="Modificar Proyecto" onClick="validar1()" value="Modificar Proyecto" />
</div>
                </td>
          </tr>
          </table>
           
</form>


Ésto a su vez llama al add.php donde tengo la siguiente consulta::


<?php

require_once("../../conexion/conexion.php");

$sql="UPDATE proy_formaciones SET lin_act='".$_POST["lin_act"]."',nombre='".$_POST["nombre"]."',cant_replicas='".$_POST["replicas"]."',cant_hs='".$_POST["horas"]."',cant_ocup='".$_POST["ocupados"]."',cant_desoc='".$_POST["desocupados"]."',f_ini='".$_POST["f_ini"]."',f_fin='".$_POST["f_fin"]."',lug_dictado='".$_POST["dictado"]."' WHERE id_profor=".$_POST["id_profor"]." AND id_proy=".$_POST["id_proy"]."";
$res=mysql_query($sql,$conexion);

echo "<script type=''>
alert('Los datos de la Empresa fueron modificados correctamente!');
window.location='pro_admin.php';
</script>";
?>
?>


Y por último les dejo la imagen del formulario!!!El último "text" de cada registro muestra el id_proyectoformacion que es diferente para cada formacion, aunque cada registro posea tambien el id_proyecto, que lo relaciona con la información del proyecto, eh aquí al magnífico y fucking formulario::

Archivos adjuntos


  • 0

#8 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 15 noviembre 2011 - 08:01

Hola.

La verdad es que no me sorprende que tengas estos problemas. Tus tablas parece que no tengan claves primarias únicas, utilizas la sintaxis de SQL'89 para las uniones en lugar de joins explícitos, tu programa es un revuelto de HTML y PHP, todo mezclado de forma confusa, etc. ...

Te recomiendo la estrategia de "divide y vencerás" y KISS (mantenlo simple).

Tu problema está en las consultas que envias a la base de datos. Ellas son las que te devuelven los datos que se van a mostrar, y las que actualizan los registros. Así que por un momento olvídate de PHP y prueba directamente tus consultas con la base de datos.

Cuando te hayas asegurado de que esas consultas te devuelven los datos que quieres, y actualizan los registros que te interesan, entonces ya las puedes pasar a código PHP.

Mientras tanto, si necesitas ayuda, no hace falta que nos enseñes tu código PHP. Simplemente puedes decirnos directamente las consultas que pruebas y sus resultados. NOTA: Si además pones la estructura de las tablas, y sus datos, entonces mejor que mejor.

NOTA: No sé demasiado PHP (admito que no quiero saberlo, me tira para atrás esta forma de programar), pero seguro que hay formas mejores de estructurar tu aplicación, separando lo que es código PHP, contenido web HTML y formato de presentación CSS.

Saludos.
  • 0

#9 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 15 noviembre 2011 - 08:49

Marc..Tengo claves primarias únicas en cada tabla, los otros id los utilizo para relacionarme con otras tablas (La verdad es que todavía no he aprendido bien a trabajar con los JOINS!!!)
En cuanto a mi estructura tengo el CSS en una plantilla externa, al igual que funciones js, pero php y html los tengo entre juntos y separados...
Algún día espero pasar de SQL'89 a algo más actual..por el momento intento!!!Sólo estoy tratando de arreglar un problema que tengo nada más!!!
Vos que la tenes más clara!!Un poco de ayuda con el SQL no me vendría mal!!!POR FAVOR!!!..
  • 0

#10 cobos22

cobos22

    Newbie

  • Miembros
  • Pip
  • 9 mensajes
  • Locationmexico

Escrito 15 noviembre 2011 - 10:24

hola amigo lo que tienes que hacer es asignar un id que como campo llave tu tabla quedaria asi
id  id_empres  tel
1      333          777
2      333          888
3      333          444... y asi sucesivamente

cuando hagas tu consulta por id solo manda ha llamar el campo id que es el que nose repite asi podras obtener el id_empresa repetido y tambien hacer tu update
  • 0

#11 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 15 noviembre 2011 - 02:06

Marc..Tengo claves primarias únicas en cada tabla, los otros id los utilizo para relacionarme con otras tablas (La verdad es que todavía no he aprendido bien a trabajar con los JOINS!!!)
En cuanto a mi estructura tengo el CSS en una plantilla externa, al igual que funciones js, pero php y html los tengo entre juntos y separados...
Algún día espero pasar de SQL'89 a algo más actual..por el momento intento!!!Sólo estoy tratando de arreglar un problema que tengo nada más!!!
Vos que la tenes más clara!!Un poco de ayuda con el SQL no me vendría mal!!!POR FAVOR!!!..


Hola.

Lo que te he comentado sobre la forma de las consultas, la estructura de tu aplicación, ... solo son consejos genéricos para que simplifiques tu desarrollo (cuanto más simple, más fácil de desarrollar y de mantener).

Pero tu problema concreto, por el que has pedido ayuda, parece muy probable que está solamente provocado por las sentencias SQL que construyes en tu aplicación.

Así que como te aconsejaba, si yo fuese tú, me centraría únicamente en esas sentencias SQL.

Olvídate temporalmente de PHP y de tu programa, ejecuta directamente esas sentencias contra la base de datos, y modifícalas hasta conseguir que devuelvan exactamente lo que deseas (y que modifiquen también los registros que deseas). Entonces ya las podrás pasar a código PHP.

Si necesitas ayuda con el SQL, indícanos la sentencia que pruebas, el resultado que te da, y por contra, el resultado que deseas. Queremos ayudarte, pero no nos lo pongas difícil (y no te lo pongas difícil a ti mismo), no nos haga descifrar tus cadenas SQL y tus uniones de de ese código PHP.

Ejemplo de sentencia SQL que deberías probar :

SELECT *
FROM empresas
    JOIN emp_ubic ON emp_ubic.id_emp = empresas.id_emp
    JOIN emp_tel ON emp_tel.id_emp = empresas.id_emp
    JOIN emp_correo ON emp_correo.id_emp = empresas.id_emp
    JOIN emp_fax ON emp_fax.id_emp = empresas.id_emp 
WHERE empresas.id_emp= :id_empresa


¿ A que resulta mucho más intuitiva ?

Saludos.
  • 0

#12 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 16 noviembre 2011 - 08:08

¿ Que tal ?, ¿ ya has conseguido que tus sentencias SQL te funcionen correctamente cuando las ejecutas directamente contra el servidor ?.

Por cierto, cuando intentes actualizar un teléfono (ese era uno de los problemas que comentabas), recuerda de identificar el registro a actualizar, mediante la clave primaria de su tabla (eso es algo que haces mal en el código PHP que nos has enseñado).

Es decir, algo como :


UPDATE emp_tel SET
  tel = :tel
WHERE id_emp_tel = :id_emp_tel


Saludos.
  • 0

#13 Fedevergara

Fedevergara

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 16 noviembre 2011 - 05:01

Marc este último código funcionó a la perfección!!!!Lo pobré en Phpmyadmin contra la base de datos directamente!!!!Ÿ eurecas!!!Funcionò correctamente!!!...La mano de los Joins tambien me vino joya para otro proyecto nuevo que toy encarando!!!!!!

La verdad que me simplificò todo!!!!!GENIAL!!!

GRACIAS
GRACIAS - GRACIAS
GRACIAS - GRACIAS -GRACIAS
GRACIAS - GRACIAS
GRACIAS
  • 0




IP.Board spam blocked by CleanTalk.