FOROS DE INFORMATICA
Noticias: Habilitada la opción de Karma para usuarios con más de 50 mensajes
 
*
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
Noviembre 21, 2019, 06:18:51


Ingresar con nombre de usuario, contraseña y duración de la sesión


Páginas: [1]
  Imprimir  
Autor Tema: Modificar Registro en PHP  (Leído 5084 veces)
Kairi_
Nuevo
*

Karma:0
Desconectado Desconectado

Mensajes: 43



« : Mayo 16, 2012, 07:41:45 »

Hola!! He visto un mensaje abierto con el mismo tema, pero a mi no se porque no me funciona.
Tengo una página para listar y modificar y otra donde me recoge los valores modificados para hacer el update (igual que Truji_9 creo) y el problema es que no me da error, pero le de al registro que le de para modificar hace el update al último, es decir:
Si cambio los valores del ultimo registro y le doy a modificar me los modifica, pero si cambio los valores de cualquier otro registro y le doy a modificar me sale el UPDATE.. SET pero con los valores del ultimo registro y me actualiza el ultimo registro con los valores que ya tenia (claro, porque no los he cambiado), bueno dejo aqui el código y a ver si me podeis ayudar. Muchísimas gracias:

modicontacto.php
Código:
<h2 align="center">MODIFICAR UN CONTACTO   </h2>  
  <form id="form1" name="form1" method="post" action="modicontacto.php">
        <label>Seleccionar CENTRO:
        <select name="centro">
<option></option>
          <?php
do {  
?>

          <option value="<?php echo $row_regicentro['Centro']?>"><?php echo $row_regicentro['Centro']?></option>
          <?php
} while ($row_regicentro mysql_fetch_assoc($regicentro));
  
$rows mysql_num_rows($regicentro);
  if(
$rows 0) {
      
mysql_data_seek($regicentro0);
  $row_regicentro mysql_fetch_assoc($regicentro);
  }
?>

        </select>
        </label>

        <p>
          <label>Persona a buscar:
          <input name="nombre" type="text" size="35" maxlength="35" />
          </label>
        </p>
        <label>
        <input type="submit" name="btaceptar" value="Aceptar" />
        </label>
    </form>
 <?php
if (isset($_POST['btaceptar']))
{
$Centro=$_POST['centro'];
$Nombre=$_POST['nombre'];

if ($Centro and $Nombre)
{
$consulta="SELECT * 
FROM `contacto`  where Centro='"
.$Centro."'  
AND Nombre LIKE '%"
.$Nombre."%' ;";
}
elseif ($Centro)
{
$consulta="SELECT * 
FROM `contacto`  where Centro='"
.$Centro."';";
}
elseif ($Nombre)
{
$consulta="SELECT * 
FROM `contacto`  where Nombre LIKE '%"
.$Nombre."%' ;";
}
else
{
$consulta="SELECT * FROM `contacto`;";
}


$result_cons=mysql_query($consulta);

$num=mysql_num_rows($result_cons);


if ($num==0)
{
echo "<center><h2>En su busqueda se han encontrado $num resultados";
echo "<BR/><h2>Por favor vuelta a intentarlo</h2></center>";

echo "<table border=0 align='center'  WIDTH='50%'>";
echo "<tr><td width='50%'align='center'>";
echo "<form method='get' action='http://boms.osakidetza.net/'>
<input type='submit' value='Ir a BOMS' />
</form>"
;
echo "</td>";
echo "<td align='center'>";
echo "<form method='POST' action='Buscatelefonos.php?'>
<input type='submit' value='Ir al inicio' />
</form>"
;
echo "</table>";
echo "</tr></td>";

}
else
{  
if ($Centro)
{
echo "<center><h3>Estos son los Tel&eacute;fonos de $Centro :</h3></center>";
}
elseif ($Nombre)
{
echo "<center><h3>Estos son los Tel&eacute;fonos que corresponden a la b&uacute;squeda de $Nombre :</h3></center>";
}
else
{
echo " ";
}



echo "<table border='1' align ='center' bordercolor='blue' cellpadding='4px' style='font-size:15px'>
<tr class='cabecera' align ='center' bgcolor='#F5ECB9'><td>Nombre</td><td>Tel&eacute;fono</td><td>Tel&eacute;fono Abreviado</td><td>M&oacute;vil</td><td>Correo</td><td>Ubicacion</td><td>Centro</td><td></td></tr>"
;?>

      </p>
      <p>
     
     
  <form id="form" name="form" method="post" action="modificadocontacto.php">
  <?php
for($i=0;$i<$num;$i++)
{

$fila=mysql_fetch_assoc($result_cons);
echo "<tr>";
echo "<td width='300px' height='50px' align='center'><input type='hidden' name='nombre' value='".$fila['Nombre']. "'/>" .$fila['Nombre']. "</td>";
echo "<td align='center' width='70px'>"?>

<input type="text" name="Telefono" value="<?php echo $fila['Telefono']?>" size="15" maxlength="35"/><?php "</td>";
echo "<td align='center' width='150x'>"?>

    <input type="text" name="TelfAb" value="<?php echo $fila['TelfAbreviado']?>" size="15" maxlength="35"/><?php "</td>";
echo "<td align='center' width='200px'>"?>

<input type="text" name="Movil" value="<?php echo $fila['Movil']?>" size="15" maxlength="35"/><?php "</td>";
echo "<td align='center' width='200px'>"?>

<input type="text" name="Correo" value="<?php echo $fila['Correo']?>" size="15" maxlength="35"/><?php "</td>";
echo "<td align='center' width='200px'>"?>

<input type="text" name="Ubicacion" value="<?php echo $fila['Ubicacion']?>" size="15" maxlength="35"/><?php "</td>";
echo "<td align='center' width='200px'>"?>

<input type="text" name="Centro" value="<?php echo $fila['Centro']?>" size="15" maxlength="35"/><?php "</td>";
echo "<td align='center' width='100px'>"?>
<input name="btmodificar" type="submit" value="Modificar Registro" /><?php "</td>";
//echo "<td>"; 
//echo "<input type='hidden' name='nombre' value='".$fila['Nombre']. "'/>";
//echo "</td>";
echo "</tr>";  

}
echo "</table>";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
}
}

?>

</form>

modificadocontacto.php
Código:
<?php

if(isset($_POST['btmodificar']))
{
$Nombre$_POST['nombre'];
$Telefono=$_POST['Telefono'];
$TelfAb $_POST['TelfAb'];
$Movil $_POST['Movil'];
$Correo $_POST['Correo'];
$Ubicacion $_POST['Ubicacion'];
$Centro $_POST['Centro'];
$consulta1="UPDATE `contacto` set Telefono='$Telefono', TelfAbreviado='$TelfAb', Movil='$Movil', Correo='$Correo', Ubicacion='$Ubicacion', Centro='$Centro' where Nombre='$Nombre'";
echo 
$consulta1;
$modificar_cont=mysql_query($consulta1);
echo 
"<h2 align='center'>..El CONTACTO se ha <u>modificado</u> satisfactoriamente..</h2><BR/>";
}
else
{
echo 
"<legend align='left'>";
echo 
"<h2 align='center'>ERROR  :      El registro no se ha podido modificar</h2>";
echo 
"</legend>";
}
?>
 
En línea
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #1 : Mayo 16, 2012, 08:11:32 »

Hola, el problema es que no distingues de ninguna forma entre una fila u otra. Estás enviando un formulario con muchos input repetidos y coge los valores del último definido. Para hacerlo, por ejemplo, puedes definir cada input:

echo "<td align='center' width='70px'>"?>
               <input type="text" name="Telefono_<?php echo $fila['Nombre']?>" value="<?php echo $fila['Telefono']?>" size="15" maxlength="35"/><?php "</td>";

pero aún así tienes que definir la forma de saber desde qué boton modificar se ha realizado el submit para saber qué fila modificar. Fíjate en el código de Truji_9. No lo hace con submit sino con enlaces y javascript para confirmar la modificación pasándole por url el identificador del registro que se va a modificar.

Un saludo

En línea

Kairi_
Nuevo
*

Karma:0
Desconectado Desconectado

Mensajes: 43



« Respuesta #2 : Mayo 16, 2012, 09:10:01 »

Pero él al final ha quitado lo de javascript y eso no?, yo no quiero con javascript, simplemente quiero un boton qu eno me pregunte y que me lleve a la página donde me actualizara el registro...
En línea
Kairi_
Nuevo
*

Karma:0
Desconectado Desconectado

Mensajes: 43



« Respuesta #3 : Mayo 16, 2012, 09:12:09 »



echo "<td align='center' width='70px'>"?>
               <input type="text" name="Telefono_<?php echo $fila['Nombre']?>" value="<?php echo $fila['Telefono']?>" size="15" maxlength="35"/><?php "</td>";




y aunque ponga así los input, me sige cogiendo el último registro para modificar pero con los valores del que modifico
En línea
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #4 : Mayo 16, 2012, 11:52:15 »

Claro porque tendrías que ver cual es el registro que está cogiendo y no lo estás haciendo. Estás haciendo un submit con pero estás cogiendo,

Código:
if(isset($_POST['btmodificar']))
{
$Nombre= $_POST['nombre'];
$Telefono=$_POST['Telefono'];
$TelfAb = $_POST['TelfAb'];
$Movil = $_POST['Movil'];
$Correo = $_POST['Correo'];
$Ubicacion = $_POST['Ubicacion'];

los mismos valores siempre. De alguna manera tienes que identificar la fila.

Yo lo haría con una página modificar que es lo que se suele hacer. Primero un listado y clicas en un registro para ir a un formulario donde puedes modificar el registro en concreto.

Un saludo
En línea

Kairi_
Nuevo
*

Karma:0
Desconectado Desconectado

Mensajes: 43



« Respuesta #5 : Mayo 16, 2012, 01:03:08 »

A ver, entonces lo voy a hacer así: la página modicontacto.php tendrá un listado con un botón modificar que redireccionará a una página modiformulario.php que cogerá los valores del registro seleccionado en unos input, asi mejor no?
Pero igualmente entiendo lo de identificar cada fila, pero no entiendo cómo recogerlo si las identifico como tu me has dicho.
Por el momento lo tengo así:
Código:
  <?php
for($i=0;$i<$num;$i++)
{

$fila=mysql_fetch_assoc($result_cons);
echo "<tr>";
echo "<td width='300px' height='50px' align='center'>".$fila['Nombre']."</td>";
echo "<td align='center' width='70px'>".$fila['Telefono']."</td>";
echo "<td align='center' width='150x'>".$fila['TelfAbreviado']."</td>";
echo "<td align='center' width='200px'>".$fila['Movil']."</td>";
echo "<td align='center' width='200px'>".$fila['Correo']."</td>";
echo "<td align='center' width='200px'>".$fila['Ubicacion']."</td>";
echo "<td align='center' width='200px'>".$fila['Centro']."</td>";
echo "<td align='center' width='100px'>" ?>

<input name="btmodicontacto" type="submit" value="Modificar Registro" />
<?php "</td>";
echo "</tr>";  ?>

En línea
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #6 : Mayo 16, 2012, 03:29:27 »

Porque ya no pondrías un submit sino un enlace a la pagina modiformulario.php pasándole por url el identificador del registro que quieres modificar. Ya en esa página accedes a la base de datos y recuperas los datos del registro.

Un saludo
En línea

Kairi_
Nuevo
*

Karma:0
Desconectado Desconectado

Mensajes: 43



« Respuesta #7 : Mayo 17, 2012, 07:35:05 »

Ahh!!! es decir, por GET en vez de por POST, no?? Voy a probar! Luego te cuento si me falla algo. Muchas gracias =)
En línea
Kairi_
Nuevo
*

Karma:0
Desconectado Desconectado

Mensajes: 43



« Respuesta #8 : Mayo 17, 2012, 09:50:11 »

A ver, me hace todo bien excepto que en la página modiformulario.php, he hecho un formulario donde en unos input aparecen los valores del registro seleccionado anteriormente para poder modificarlos. Los he cogido mediante consultas con un where donde Nombre es igual al nombre que he pasado por $GET, pero al mostrar el valor en los input, me sale Resource id #7, Resource id #8 etc... excepto el nombre que me sale bien. Por qué puede ser??
Pongo el código:
Código:
<?php

if(isset($_GET['nombre']))
{
$Nombre $_GET['nombre'];
$select1="SELECT * FROM `contacto` WHERE Nombre='$Nombre'";

$Telefono=mysql_query("SELECT Telefono FROM `contacto` WHERE Nombre='$Nombre'");
$TelfAb =mysql_query("SELECT TelfAbreviado FROM `contacto` WHERE Nombre='$Nombre'");
$Movil mysql_query("SELECT Movil FROM `contacto` WHERE Nombre='$Nombre'");
$Correo mysql_query("SELECT Correo FROM `contacto` WHERE Nombre='$Nombre'");
$Ubicacion =mysql_query("SELECT Ubicacion FROM `contacto` WHERE Nombre='$Nombre'");
$Centro mysql_query("SELECT Centro FROM `contacto` WHERE Nombre='$Nombre'");
}
?>

<form id="form1" name="form1" method="post" action="modiformulario.php">
Nombre:
<input type="text" name="nomb" value="<?php echo $Nombre ?>"/>
<br/><br/>
Teléfono:
<input type="text" name="telef" value="<?php echo $Telefono ?>"/>
<br/><br/>
Teléfono Abreviado:
<input type="text" name="telefa" value="<?php echo $TelfAb ?>"/>
<br/><br/>
Móvil:
<input type="text" name="mov" value="<?php echo $Movil ?>"/>
  <br/><br/>
  Correo:
  <input type="text" name="corr" value="<?php echo $Correo ?>"/>
En línea
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #9 : Mayo 17, 2012, 10:06:46 »

Tienes que hacer una sola consulta y recuperas los datos, por ejemplo:

Código:
$rsQuery = mysql_query("select columna1,columna2 from alumnos where id=$id");
if ( $fila = mysql_fetch_array($rsQuery)){
  ..
  echo $fila["columna1"] ;
  ..
}

Un saludo
En línea

Kairi_
Nuevo
*

Karma:0
Desconectado Desconectado

Mensajes: 43



« Respuesta #10 : Mayo 21, 2012, 08:29:04 »

Muchísimas gracias Etereo, la alpicacion me funciona ahora perfectamente, altas, bajas, modificar...
Gracias! =) Smiley Smiley Smiley Smiley
En línea
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.13 | SMF © 2006-2009, Simple Machines LLC

XHTML 1.0 válido! CSS válido! Dilber MC Theme by HarzeM