Pues no veo ningun error lo unico que yo aria es
quitar las comillas de $loca
verificar que el nombre de la tabla y de los campos este correctamente
encerrar todas las condiciones del where entre parentesis.
los campos que verifica si estan vacios o no revise que tipo de datos son porque si son numericos seria mejor que colocaria si sono o no iguales a cero.
Código PHP:
$sql2=mysql_query("SELECT * FROM scmt WHERE (fecha_g>='$fecha1' AND fecha_g<='$fecha2' AND origen=$loca AND n_trailer!='' and visible='3' AND qinv='') order by id");
while($dts2=mysql_fetch_array($sql2)){
$Nid = $dts2['id'];
mysql_query("UPDATE scmt SET salio = 'si' WHERE id='$Nid'");
}