Umm, te falta comprobar que no estén vacios (en el ejemplo no puse los if)
Código PHP:
<?php
$link = mysql_connect("localhost","usuario","pass");
mysql_select_db("bd",$link);
$query = "UPDATE table SET ";
if (!empty($_POST['nombre'])
$query .= "nombre='".$_POST['nombre']."' ";
if (!empty($_POST['telefono'])
$query .= "telefono='".$_POST['telefono']."' ";
$query .= "WHERE table.id=".$_POST['id'];
$my_error = mysql_error($link);
if(!empty($my_error)) {
echo "Ha habido un error al insertar los valores. $my_error";
} else {
echo "Datos modificados correctamente";
}
?>
Además también te falta hacer el query, el típico mysql_query($query)
Y ten en cuenta que esto daría error si ambos campos están en blanco.
Una solución algo rápida sería incrementar un contador cada vez que pille un campo que no esté en blanco y luego comprobar que el contador sea mayor que cero.
Todo juntito:
Código PHP:
<?php
$link = mysql_connect("localhost","usuario","pass");
mysql_select_db("bd",$link);
$contador = 0;
$query = "UPDATE table SET ";
if (!empty($_POST['nombre']) {
$query .= "nombre='".$_POST['nombre']."' ";
$contador++;
}
if (!empty($_POST['telefono']) {
$query .= "telefono='".$_POST['telefono']."' ";
$contador++;
}
$query .= "WHERE table.id=".$_POST['id'];
if ($contador >0) {
$id_query = mysql_query($query);
$my_error = mysql_error($link);
if(!empty($my_error)) {
echo "Ha habido un error al insertar los valores. $my_error";
} else {
echo "Datos modificados correctamente";
}
}
?>
OJO!! Es un código pensado rápido y sin comprobaciones, puede haber fallos (graves) y no ser la manera más correcta, pero es lo que se me ha ocurrido!