Bueno, la idea es realizar un PHP que nos devuelva un XML con resultados de una búsqueda pasada por parámetros POST y lo envíe como text/xml para poder ser recogido de forma fácil mediante JavaScript con el objeto XMLHttpRequest.
Supongamos ahora que tenemos una tabla llamada STOCK en donde almacenamos los registros referidos a cada producto que comercializa la empresa de Manolo. Los principales campos son ID, CÓDIGO DE PRODUCTO, DESCRIPCION, URLIMG (url de la imagen). Vamos a enviarle a nuestro buscador.php la variable buscar por POST para que la recoja en el caso que corresponda y realice la búsqueda.
Veamos un poco de código:
buscador.php
Código :
<?php
header("Content-type: text/xml");Código :
require (“conexión.php”);
Código :
$condicion = ""; $resultados = 0;
Código :
if (isset($_POST['buscar'])) {
$cadena = htmlentities($_POST['buscar']);
$cadena = str_replace(" ", "%", $cadena);
$condicion .= " WHERE DESCRIP LIKE '%$cadena%'";
}Código :
// REALIZAMOS LA CONSULTA SEGUN LOS PARAMETROS OBTENIDOS $consulta = "SELECT * FROM STOCK$condicion "; if (!($res = mysql_query($consulta))) echo $consulta;
Código :
// OBTENEMOS LA CANTIDAD DE RESULTADOS
$resultados = mysql_num_rows($res);
/** CREAMOS EL DOM DE NUESTRO XML
* CON LA SIGUIENTE ESTRUCTURA:
*
* <productos n=$resultados>
* <producto>
* <codigo>codigo</codigo>
* <descripcion>descripcion</descripcion>
* <urlimg>urlimg</urlimg>
* </producto>
* ...
* </productos>
*/
$dom = new DOMDocument('1.0', 'UTF-8');
$productos =$dom->appendChild($dom->createElement("productos"));
$productos->setAttribute("n", $resultados);
for ($i=0; $i<mysql_num_rows($res); $i++) {
// DEFINIMOS LAS VARIABLES DE DATOS
$txtCodigo = utf8_encode(mysql_result($res, $i, 'CODIGO'));
$txtDescripcion = utf8_encode(mysql_result($res, $i, 'DESCRIP'));
$txtUrlimg = utf8_encode(mysql_result($res, $i, 'urlimg'));
// ANEXAMOS LOS NODOS
$producto = $productos->appendChild($dom->createElement('producto'));
$producto->setAttribute('id', $txtCodigo);
$codigo = $producto->appendChild($dom->createElement('codigo'));
$codigo->appendChild($dom->createTextNode($txtCodigo));
$descripcion = $producto->appendChild($dom->createElement('descripcion'));
$descripcion->appendChild($dom->createTextNode($txtDescripcion));
$urlimg = $producto->appendChild($dom->createElement('urlimg'));
$urlimg->appendChild($dom->createTextNode($txtUrlimg));
}Código :
// UNA VEZ CREADO EL XML LO VOLCAMOS EN LA PANTALLA $dom->formatOutput = true; echo $dom->saveXML(); mysql_close(); ?>