Foros del Web » Programación para mayores de 30 ;) » Programación General »

Crear un archivo XML automaticamente desde PHP

Estas en el tema de Crear un archivo XML automaticamente desde PHP en el foro de Programación General en Foros del Web. Hola a todos!! Tengo un archivo en php (vacantes.php) el cual hace una consulta a la base de datos (MySQL) y me trae todas las ...
  #1 (permalink)  
Antiguo 26/01/2006, 17:57
 
Fecha de Ingreso: enero-2006
Mensajes: 6
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta Crear un archivo XML automaticamente desde PHP

Hola a todos!!

Tengo un archivo en php (vacantes.php) el cual hace una consulta a la base de datos (MySQL) y me trae todas las vacantes que estan actuales en ese momento, este archivo (vacantes.php) me exporta todo a xml (vacantes.xml), pero el archivo lo tengo que guardar de manera manual (me muestra la ventana de abrir, guardar o cancelar), necesito saber como puedo crear el mismo archivo (vacantes.xml) pero que se genere de manera automática.

Agradesco su ayuda, les dejo mi correo por cualquier cosa
[email protected]

Anexo el codigo que tengo para exportar las vacantes:

<?
$file="vacantes"; // Nombre para guardar el archivo
header ( "Content-type: text/xml" );
header("Content-disposition: attachment; filename=$file.xml");
?>
<? echo '<';?>?xml version="1.0" encoding="ISO-8859-1"?>

<rss>
<title>Vacantes XML</title>
<br/>
<?
// Se hace la conexión al Servidor y a la BD
include ("admin/admin_db.php");

// Se hace la consulta a la tabla de las Vacantes
mysql_select_db($database_vacantes,$conn);
$query_vacantes = "SELECT vacantes.id_vacante,vacantes.id_usr,usuarios.name, usuarios.mail,vacantes.des_puesto,vacantes.sueldo_ puesto_de,vacantes.sueldo_puesto_a,vacantes.presta ciones,
vacantes.educacion,vacantes.sexo,vacantes.edad_de, vacantes.edad_a,vacantes.experiencia,vacantes.des_ ext_puesto,vacantes.area,
vacantes.tiempo_puesto,vacantes.habilidades,vacant es.viajar,vacantes.idioma,vacantes.presentacion,va cantes.zona,vacantes.edo_civil,
vacantes.dlunes,vacantes.dmartes,vacantes.dmiercol es,vacantes.djueves,vacantes.dviernes,vacantes.dsa bado,vacantes.ddomingo,
vacantes.horariode,vacantes.horarioa,vacantes.hora riolibre,vacantes.instrucciones,vacantes.valida,va cantes.cancela,vacantes.motivo_cancelacion,
vacantes.publica_gt,vacantes.publica_prensa,vacant es.publica_report,vacantes.publica_occ,vacantes.po werjob_id,vacantes.va_lasalle,vacantes.va_tec,
vacantes.va_unitecdf,vacantes.va_unitecgdl,vacante s.va_unitecmty,vacantes.pais,vacantes.estado,vacan tes.sucursal,vacantes.time_cad,vacantes.time,
sucursales.id_suc,sucursales.nombre_suc,sucursales .tel,sucursales.direccion,sucursales.edo,(sucursal es.pais) as pais_suc,
(TO_DAYS(vacantes.time_cad) - TO_DAYS(vacantes.time)) as date_expires
FROM vacantes
INNER JOIN sucursales on sucursales.id_suc=vacantes.sucursal
INNER JOIN usuarios on usuarios.username=vacantes.id_usr
WHERE vacantes.valida='si' and vacantes.cancela='no'";
$vacantes = mysql_query($query_vacantes, $conn) or die(mysql_error());

while($row_vacantes = mysql_fetch_assoc($vacantes)){ ?>

<RecruiterId> </RecruiterId>
<DateExpires>
<?
if($row_vacantes['date_expires']>90){ echo "90";} else { echo $row_vacantes['date_expires']; }
?>
</DateExpires>
<JobTitle> <?=$row_vacantes['des_puesto'];?> </JobTitle>
<JobBody>
Empresa Líder en Recursos Humanos Solicita:<br/><br/>

<puesto><?=$row_vacantes['des_puesto'];?></puesto><br/>

<edad> <?=$row_vacantes['edad_de'];?>-<?=$row_vacantes['edad_a'];?> años </edad>
<sexo> <?=$row_vacantes['sexo'];?> </sexo>
<estado_civil> <?=$row_vacantes['edo_civil'];?> </estado_civil>
<escolaridad> <?=$row_vacantes['educacion'];?></escolaridad>
<experiencia> <?
if(list($part1,$part2) = explode('&',$row_vacantes['experiencia'])){
$partjoin=$part1."&amp;".$part2;
if($part2!=""){
echo $partjoin;
}else{
echo $part1;
}
}
?> </experiencia><br/>

<descripcion_puesto> <?=$row_vacantes['des_ext_puesto'];?></descripcion_puesto><br/>

<requisitos> <?=$row_vacantes['habilidades'].". ";?>
<? if($row_vacantes['idioma']!='Ninguno'){?>
<?=$row_vacantes['idioma'].". "; } ?>
<? if($row_vacantes['presentacion']!='No aplica'){?>
<?=$row_vacantes['presentacion'];?> presentación. <? } ?> </requisitos><br/>

<sueldo> <?=$row_vacantes['sueldo_puesto_de'];?> <? if($row_vacantes['prestaciones']!=''){ ?> , prestaciones <? } ?>
<?
$presta = explode('prestaciones',$row_vacantes['prestaciones']);
$conp = count($presta);
if($conp!=1){
for($i=0;$i<$conp;$i++){
echo $presta[$i];
}
}
$presta = explode('Prestaciones',$row_vacantes['prestaciones']);
$conp2 = count($presta);
if($conp2!=1){
for($i=0;$i<$conp2;$i++){
echo $presta[$i];
}
}
if($conp==1 and $conp2==1){
echo $row_vacantes['prestaciones'];
}
?> </sueldo><br/>

<horario> <?=$row_vacantes['horariode'];?> a <?=$row_vacantes['horarioa'];?></horario><br/>

<? if($row_vacantes['zona']!=""){ ?>
<zona_trabajo> <?=$row_vacantes['zona']."</zona_trabajo><br/>"; } ?>

<? if($row_vacantes['instrucciones']!=""){ $row_vacantes['instrucciones']."<br/><br/>";} ?>

</JobBody>
<JobLocationID>
<?
if($row_vacantes['estado']=='Aguascalientes'){ echo "248"; }
if($row_vacantes['estado']=='Baja California'){ echo "250"; }
if($row_vacantes['estado']=='Baja California Sur'){ echo "252"; }
if($row_vacantes['estado']=='Campeche'){ echo "254"; }
if($row_vacantes['estado']=='Coahuila'){ echo "260"; }
if($row_vacantes['estado']=='Colima'){ echo "262"; }
if($row_vacantes['estado']=='Chiapas'){ echo "258"; }
if($row_vacantes['estado']=='Chihuahua'){ echo "256"; }
if($row_vacantes['estado']=='D. F.'){ echo "264"; }
if($row_vacantes['estado']=='Durango'){ echo "265"; }
if($row_vacantes['estado']=='Estado de México'){ echo "279"; }
if($row_vacantes['estado']=='Guanajuato'){ echo "270"; }
if($row_vacantes['estado']=='Guerrero'){ echo "267"; }
if($row_vacantes['estado']=='Hidalgo'){ echo "273"; }
if($row_vacantes['estado']=='Jalisco'){ echo "275"; }
if($row_vacantes['estado']=='Michoacán'){ echo "277"; }
if($row_vacantes['estado']=='Morelos'){ echo "282"; }
if($row_vacantes['estado']=='Nayarit'){ echo "284"; }
if($row_vacantes['estado']=='Nuevo León'){ echo "286"; }
if($row_vacantes['estado']=='Oaxaca'){ echo "288"; }
if($row_vacantes['estado']=='Puebla'){ echo "290"; }
if($row_vacantes['estado']=='Querétaro'){ echo "295"; }
if($row_vacantes['estado']=='Quintana Roo'){ echo "292"; }
if($row_vacantes['estado']=='San Luis Potosí'){ echo "299"; }
if($row_vacantes['estado']=='Sinaloa'){ echo "297"; }
if($row_vacantes['estado']=='Sonora'){ echo "301"; }
if($row_vacantes['estado']=='Tabasco'){ echo "303"; }
if($row_vacantes['estado']=='Tamaulipas'){ echo "305"; }
if($row_vacantes['estado']=='Tlaxcala'){ echo "307"; }
if($row_vacantes['estado']=='Veracruz'){ echo "309"; }
if($row_vacantes['estado']=='Yucatán'){ echo "312"; }
if($row_vacantes['estado']=='Zacatecas'){ echo "314"; }
?>
</JobLocationID>
<ShowContactInfo> 1 </ShowContactInfo>
<ContactCompanyName> Manpower - <?=$row_vacantes['nombre_suc'];?> </ContactCompanyName>
<ContactEmailAddress> <?=$row_vacantes['mail'];?> </ContactEmailAddress>
<ContactPhoneNumber> <?=$row_vacantes['tel'];?> </ContactPhoneNumber>
<ContactFaxNumber> </ContactFaxNumber>
<ContactStreetAddress> <?=$row_vacantes['direccion'];?> </ContactStreetAddress>
<ContactCity> México </ContactCity>
<ContactState> <?=$row_vacantes['edo'];?> </ContactState>
<ContactPostalCode> </ContactPostalCode>
<ContactCountry> 3 </ContactCountry>
<SalaryFrom> <?=$row_vacantes['sueldo_puesto_de'];?> </SalaryFrom>
<SalaryTo> <?=$row_vacantes['sueldo_puesto_a'];?> </SalaryTo>
<SalaryTime> 0 </SalaryTime>
<JobRefCode> <?=$row_vacantes['id_vacante'];?> </JobRefCode>
<JobTypeFullTime> 1 </JobTypeFullTime>
<JobTypePartTime> 0 </JobTypePartTime>
<JobTypeContract> 0 </JobTypeContract>
<JobTypePermanent> 0 </JobTypePermanent>
<ContactName> <?=$row_vacantes['name'];?> </ContactName>
<JobCity> México </JobCity>
<JobFunctionId>
<?
if($row_vacantes['area']=='Archivo'){ echo "2"; }
if($row_vacantes['area']=='Administración'){ echo "2"; }
if($row_vacantes['area']=='Almacén/Oficios'){ echo "11"; }
if($row_vacantes['area']=='Arte/Diseño/Arquitectura'){ echo "4"; }
if($row_vacantes['area']=='Calidad'){ echo "16"; }
if($row_vacantes['area']=='Capacitación'){ echo "3"; }
if($row_vacantes['area']=='Captura'){ echo "2"; }
if($row_vacantes['area']=='Comercio/Rel. Internacionales'){ echo "11"; }
if($row_vacantes['area']=='Compras'){ echo "15"; }
if($row_vacantes['area']=='Comunicaciones'){ echo "12"; }
if($row_vacantes['area']=='Consultoría/Asesoría'){ echo "11"; }
if($row_vacantes['area']=='Contabilidad/Finanzas'){ echo "1"; }
if($row_vacantes['area']=='Hotelería/Turismo'){ echo "17"; }
if($row_vacantes['area']=='Industrial/Producción'){ echo "18"; }
if($row_vacantes['area']=='Legal'){ echo "7"; }
if($row_vacantes['area']=='Medicinas/Biológicas'){ echo "9"; }
if($row_vacantes['area']=='Mensajería'){ echo "11"; }
if($row_vacantes['area']=='Mercadotecnia'){ echo "8"; }
if($row_vacantes['area']=='Restaurantera'){ echo "13"; }
if($row_vacantes['area']=='Recursos Humanos'){ echo "5"; }
if($row_vacantes['area']=='Secretarial/Recepción'){ echo "22"; }
if($row_vacantes['area']=='Sistemas'){ echo "6"; }
if($row_vacantes['area']=='Telemarketing/Atención a cliente'){ echo "8"; }
if($row_vacantes['area']=='Ventas/Promociones'){ echo "10"; }
?>
</JobFunctionId>
<JobLevelId> </JobLevelId>
<CompanyTurn> Servicios </CompanyTurn>
<UrlExterno></UrlExterno>

<br/>
<br/>
<? }// end while($row_vacantes = mysql_fetch_assoc($vacantes)) ?>
</rss>
  #2 (permalink)  
Antiguo 27/01/2006, 04:26
Avatar de Rumailster  
Fecha de Ingreso: enero-2006
Ubicación: Barakaldo, Bizkaia
Mensajes: 92
Antigüedad: 18 años, 10 meses
Puntos: 0
fopen(), fwrite()

Si te he entendido bien quizás te pueda servir esto;

se trata de guardar en una variable la cadena que forma el xml y luego guardarlo en un fichero.

$fichero="tu_fichero_xml.xml";
$fp=fopen($fichero, "w");
fwrite($fp, $xml);
fclose ($fp);

Saludos.
__________________
Sobre PHP y eso de la Internet
peachep.wordpress.com
  #3 (permalink)  
Antiguo 27/01/2006, 12:03
 
Fecha de Ingreso: enero-2006
Mensajes: 6
Antigüedad: 18 años, 10 meses
Puntos: 0
Gracias Rumailster...

Ya lo habia pensado asi, pero tuve un problema....
Les dejo el dato para los que necesiten crear un archivo xml automaticamente desde php.
El problema es:
Como metes todo el codigo en la variable $xml
primero lo intente con una funcion
function vac_xml(){
<RecruiterId> </RecruiterId>
.
. todo el codigo
.
<UrlExterno></UrlExterno>

} // se cierra la funcion

while($row_vacantes = mysql_fetch_assoc($vacantes)){
$xml = vac_xml();
}
pero no me funciono, asi que fui metiendo cada una de las lineas en la variable $xml y concatenandola...
$xml="<?xml version='1.0' encoding='ISO-8859-1'?>";
$xml.="<rss>";
while($row_vacantes = mysql_fetch_assoc($vacantes)){
<? $xml.="<RecruiterId> datos </RecruiterId>";?>
.
. todo el codigo
.
<? $xml.="<UrlExterno> datos </UrlExterno>";?>
}
y despues el codigo que tu me mandaste....

Tal vez me falto algo en la función o lo hice mal, si tu sabes de que manera puedo meter todo el codigo en la funcion te lo agradeceria, aun asi agradesco tu ayuda y pues mientras lo hare concatenando la variable $xml

Saludos
Memo Conde
  #4 (permalink)  
Antiguo 27/01/2006, 17:48
Avatar de Rumailster  
Fecha de Ingreso: enero-2006
Ubicación: Barakaldo, Bizkaia
Mensajes: 92
Antigüedad: 18 años, 10 meses
Puntos: 0
Si no me equivoco en la funcion "vac_xml()" encierras todo el xml.

Pero... ¿que valor estas devolviendo en esa variable?.

Para poder darle un valor a $xml a partir de esa función, previamente ésta debería haber retornado algún valor. De este modo tu funcion podría quedar de la siguiente manera:

function vac_xml(){
$n_xml="<RecruiterId> </RecruiterId>";
.
$n_xml.=" todo el codigo ...";
.
$n_xml.="<UrlExterno></UrlExterno>";

return $n_xml;

}
// se cierra la funcion

//asignamos a $xml el valor de la funcion vac_xml() que será el que tengal variable interna de ésta $n_xml; y que ha sido "retornada" (return).
$xml = vac_xml();

De todos modos, esto es hacer lo que ya estás haciendo en dos pasos.

De todos modos; ¿Cual es el problema que tuviste al guardar el XML en un fichero?.

Saludos!!!!!!!!
__________________
Sobre PHP y eso de la Internet
peachep.wordpress.com
  #5 (permalink)  
Antiguo 30/01/2006, 17:22
 
Fecha de Ingreso: enero-2006
Mensajes: 6
Antigüedad: 18 años, 10 meses
Puntos: 0
Gracias Rumailster!!!

Ya crea el archivo de manera automatica haciendo la concatenacion de la variable....

En verdad agradesco tu ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:04.