Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/12/2004, 03:12
javifo
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 20 años, 6 meses
Puntos: 0
Código.

Perdonad por no haber puesto más información.

Para extraer los datos (pongo sólo cuatro registros para no hacerlo largo):

La variable $id me llega pues está registrada anteriormente.
<?php
//abro una sesión
session_start();
//Conecto a DB
$sql= mysql_query("SELECT * FROM tabla where id= '$id'");
while ($row = mysql_fetch_array($sql) )
{
$id = $row[id];
$cliente = $row[cliente];
$titulo = $row[titulo];
$domicilio = $row[domicilio];
session_register('id');
session_register('cliente);
session_register('titulo');
session_register('domicilio);
//Muestro en pantalla
echo "<table>
<tr>
<td><a href=\"destino.php?id=$id&cliente=$cliente&titulo= $titulo&domicilio=$domicilio\">
$titulo</a>
<td>$cliente</td>
<td>$domicilio</td>
</form>
</table>";
?>

Desde el resultado de esta consulta puedo acceder a un cliente determinado pulsando sobre la línea titulo.
Al hacerlo me lleva a destino.php que tiene esta estructura:

destino.php
//esto me muestra los datos del cliente seleccionado
<?php
include ("estilo.php");
$_SESSION['id']=$_GET['id];
$_SESSION['titulo']=$_GET['titulo'];
$_SESSION['cliente']=$_GET['cliente'];
$_SESSION['domicilio']=$_GET['domicilio];
echo"<table>
<tr>
<td>$titulo</td>
<td>$cliente</td>
<td>$domicilio</td>
</tr>
</table>";
//en esta parte se introducen los nuevos datos que se envían a modifica.php
echo"<table>
<form action=modifica.php\" method=\"POST\">
<input type=\"hidden\" name=\"id\" value=\"$id\">
<tr>
<td>
<center>Titulo</center><br>
<input type=\"text\" size=\"25\" name=\"titulo\" maxlength=\"50\">
</td>
<td>
<center>Cliente</center><br>
<input type=\"text\" size=\"25\" name=\"cliente\" maxlength=\"50\">
</td>
<td>
<center>Domicilio</center>
<input type=\"text\" size=\"25\" name=\"domicilio\" maxlength=\"50\">
</td>
<td>
<center><INPUT TYPE=\"submit\" VALUE=\"Actualizar\"></center>
</td>
</form>
</table>";
?>

modifica.php

<php
$sSQL="UPDATE tabla SET titulo='$titulo', cliente='$cliente', domicilio='$domicilio',WHERE id='$id'";
mysql_db_query("BD",$sSQL);
mysql_close($conn);
?>

Todo funciona perfectamente (si veis algún fallo de sintaxis es por el copia-pega-recorta que he hecho). Otra cosa sería si estructuralmente es lo más correcto.

Como veis, si el cliente quiere modificar algún dato, lo hace en destino.php y lo envía a modifica.php que actualiza la tabla con lo nuevo que recibe.

Si el cliente no rellena todos los datos, el update modifica los datos que ha cumplimentado y elimina los que había antes. Como el cliente le envía campos en blanco, estos quedan borrados.

Lo que quisiera es que el update de la tabla se hiciera solo con los datos que el cliente modifica y que los que ya hay y no escribe que quedaran igual.

Lo ideal sería que sus datos le aparecieran en campos tipo
<input type=\"text\" name=\"\" > y que sobre ellos modificara lo que quisiera y lo enviara. Pero me comformo con que no tenga que reescribirlo todo.

Muchas gracias por anticipado por vuestra ayuda.
Cordiales saludos.