Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/12/2022, 17:45
Pelydas
 
Fecha de Ingreso: abril-2010
Mensajes: 68
Antigüedad: 14 años, 9 meses
Puntos: 0
Consulta FOR XML y entrada a un archivo PHP

Hola a todos. Ante todo quiero pediros disculpas si no es el foro adecuado para mi consulta. Estoy usando consultas FOR XML de SQL Server (de aquí lo de mis disculpas) y el contenido de mi pregunta forma parte de mis pruebas para aprender un poco de PHP y HTML. Voy al asunto. Tengo una tabla y un procedimiento almacenado del cual obtengo una variable NVARCHAR con contenido HTML que luego quiero usar en PHP, este es el código SQL Server:

Código:
USE Pruebas
GO
if OBJECT_ID('Pruebas..SP_Prueba') IS NOT NULL DROP PROC SP_Prueba
GO
if OBJECT_ID('Pruebas..CLIENTE') IS NOT NULL DROP TABLE CLIENTE
GO
CREATE TABLE CLIENTE (Cliente smallint,Nombre nvarchar(20),Pais nvarchar(3) )
INSERT INTO CLIENTE VALUES(1,'CLIENT ONE','EUA'),(2,'CLIENTE DOS CON Ñ','ESP')
GO
CREATE PROC SP_Prueba
AS
BEGIN
    DECLARE @Values NVARCHAR(MAX);
    SET @Values = '<!DOCTYPE html><html lang="es"><head><meta charset="UTF-8"><title>html form</title></head><body><table><form  method="post">'
    SET @Values += CAST ( (
    SELECT  CONCAT('Submit','"formaction="func/action_borrar.php?Id=',Cliente) AS [td/button/@type],'Borrar' AS [td/button],'',
           Nombre AS [td],'',Pais AS td,''
    FROM CLIENTE ORDER BY Cliente
    FOR XML PATH('tr'), TYPE
    ) AS nvarchar(max))
    SET @Values += '</form></table></body></html>'
    SELECT @Values
END
Si pego la salida del SSMS (SQL Server Management Studio, EXEC SP_Prueba;) en un archivo de texto con extensión .html y lo abro en el Edge la eñe se ve bien, pero si ejecuto el procedimiento como entrada de un archivo .php para formatear una salida HTML donde debía de ir la eñe sale el carácter extraño que sale siempre si el idioma no se configura correctamente que es un rombo con un signo de "?" a pesar de que la salida HTML tiene bien los tags

Código:
<html lang="es"><head><meta charset="UTF-8">
mi código PHP es así

Código:
?php
require_once($_SERVER['DOCUMENT_ROOT'].'/func/connect.php'];
$sql="EXEC SP_Pruebas;";
$res=odbc_exec($con,$sql);
print odbc_result_all($res,"border=0");
?>
me podéis ayudar a solucionarlo ?. Muchas gracias de antemano