Condividi:        

PHP: come includere in un file altri file

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Anthony47, Triumph Of Steel, archimede

PHP: come includere in un file altri file

Postdi LALIFA » 29/11/05 11:18

ciao a tutti!!
il mio problema è il seguente:
con un form html mando i dati ad un foglio xml detto corpo.xml
Nello stesso script ho bisogno che venga creato un file di nome prenotazioni.xml che contenga l'intestazione header.xml, il corpo corpo.xml e infine la chiusura del nodo root footer.xml.
Ho provato con readfile e con include ma non funziona...mi appare in schermata il corpo.xml e al file prenotazioni.xml non viene aggiunto niente.
Il mio script è questo:
Codice: Seleziona tutto

$fileName = "corpo.xml";
$fileStream = fopen($fileName, "a");
fwrite($fileStream,$testo);
fclose($fileStream);

$nomefile = "prenotazioni.xml";
$action = fopen($nomefile, "a+");
include("header.xml");
include("corpo.xml");
include("footer.xml");
fclose($action);



dove $testo contiene la struttura dei tag con i valori postati.

grazie
LALIFA
Utente Junior
 
Post: 51
Iscritto il: 10/03/05 18:57
Località: Trento

Sponsor
 

Postdi Triumph Of Steel » 30/11/05 00:37

se ho capito bene, vorresti scrivere nel file "prenotazioni.xml", quello che c'è in header.xml, corpo.xml e footer.xml

invece che usare include, dovresti leggere i file che vuoi includere (con fread() ) , e scriverli come fai ora (con fwrite()) rispettando ovviamente l'ordine di cui hai bisogno.

sarà una cosa del tipo:

Codice: Seleziona tutto
// leggi file HEADER
$handle = fopen("header.xml", "r");
$headerXML = fread($handle, filesize("header.xml"));

// leggi file FOOTER
$handle = fopen("footer.xml", "r");
$footerXML = fread($handle, filesize("footer.xml"));

// leggi CORPO
$handle = fopen("corpo.xml", "r");
$corpoXML = fread($handle, filesize("corpo.xml"));

// scrivi nel file PRENOTAZIONI
$nomefile = "prenotazioni.xml";
$action = fopen($nomefile, "a+");
fwrite($action ,$headerXML.$corpoXML.$footerXML);
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi LALIFA » 30/11/05 08:31

GRAZIE MILLE!! FUNZIONA :) !!
non è che per caso hai una discreta padronanza dei fogli di stile xsl e di php??? venerdì ho un esame, il prof è dato per disperso da 5 gg e ha preteso di insegnarci xml xsl html e php in 25 ore di lezione!!
Tutti i manuali che mi sono letta non mi hanno aiutato!!
Chiunque risponda a questo appello :cry: disperato :aaah ....

help!!!!!!!!! :neutral: :undecided:
laura
LALIFA
Utente Junior
 
Post: 51
Iscritto il: 10/03/05 18:57
Località: Trento

Postdi Triumph Of Steel » 30/11/05 08:53

beh, tu posta se hai problemi, qualcuno arriverà di sicuro in tuo soccorso :P
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi LALIFA » 30/11/05 09:10

i problemi maggiori sono:

1) funzione cerca: ho un file xml (prenotazioni.xml)
Codice: Seleziona tutto
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" ?>
<registro_prenotazioni>
<prenotazione_privati>
      <cognome>Schqwe</cognome>
      <nome>Carol</nome>
      <nota></nota>
      <nazionalita>Ceca</nazionalita>
      <indirizzo>Via Trento</indirizzo>
      <civico>15</civico>
      <cap>38023</cap>
      <citta>Cles</citta>
      <provincia>(Tn)</provincia>
      <telefono>0463432568</telefono>
      <tesserato>si</tesserato>
      <consenso>si</consenso>
      <e_mail>rossi@hotmail.com</e_mail>
            <giorno_p>12</giorno_p>
         <mese_p>07</mese_p>
         <anno_p>2004</anno_p>
            <giorno_a>17</giorno_a>
         <mese_a>07</mese_a>
         <anno_a>2004</anno_a>
      <provenienza>Rifugio Pedrotti</provenienza>
      <motivo>Escursionismo</motivo>
      <numero_persone>2</numero_persone>
      <numero_notti>1</numero_notti>
      <numero_stanza>1</numero_stanza>
   </prenotazione_privati>
   <prenotazione_privati>
      <cognome>Rossi</cognome>
      <nome>Mario</nome>
      <nota>arriva dopo le ore 18</nota>
      <nazionalita>Italiana</nazionalita>
      <indirizzo>Via Trento</indirizzo>
      <civico>15</civico>
      <cap>38023</cap>
      <citta>Cles</citta>
      <provincia>(Tn)</provincia>
      <telefono>0463432568</telefono>
      <tesserato>si</tesserato>
      <consenso>si</consenso>
      <e_mail>rossi@hotmail.com</e_mail>
         <giorno_p>12</giorno_p>
         <mese_p>07</mese_p>
         <anno_p>2005</anno_p>
         <giorno_a>17</giorno_a>
         <mese_a>07</mese_a>
         <anno_a>2005</anno_a>
      <provenienza>Rifugio Pedrotti</provenienza>
      <motivo>Escursionismo</motivo>
      <numero_persone>2</numero_persone>
      <numero_notti>1</numero_notti>
      <numero_stanza>1</numero_stanza>
   </prenotazione_privati>
<prenotazione_gruppi>
      <nome_gruppo>Summit</nome_gruppo>
      <nota>arriva dopo le ore 18</nota>
      <nazionalita>Tedesca</nazionalita>
      <indirizzo>Via Trento</indirizzo>
      <civico>15</civico>
      <cap>36783</cap>
      <citta>Innsbruck</citta>
      <provincia>(Tn)</provincia>
      <telefono>0463432568</telefono>
      <e_mail>summit@hotmail.com</e_mail>
         <giorno_p>12</giorno_p>
         <mese_p>07</mese_p>
         <anno_p>2005</anno_p>
            <giorno_a>17</giorno_a>
         <mese_a>07</mese_a>
         <anno_a>2005</anno_a>
            <provenienza>Rifugio Pedrotti</provenienza>
      <motivo>Ferrate</motivo>
      <numero_persone>8</numero_persone>
      <numero_notti>2</numero_notti>
      <stanze>
         <prima_stanza>
            <numero_prima_stanza>8</numero_prima_stanza>
            <pp_prima_stanza>3</pp_prima_stanza>
         </prima_stanza>
         <seconda_stanza>
            <numero_seconda_stanza>2</numero_seconda_stanza>
            <pp_seconda_stanza>4</pp_seconda_stanza>
         </seconda_stanza>
         <terza_stanza>
            <numero_terza_stanza>camerone</numero_terza_stanza>
            <pp_terza_stanza>1</pp_terza_stanza>
         </terza_stanza>
         <quarta_stanza>
            <numero_quarta_stanza/>
            <pp_quarta_stanza/>
         </quarta_stanza>
         <quinta_stanza>
            <numero_quinta_stanza/>
            <pp_quinta_stanza/>
         </quinta_stanza>
      </stanze>
   </prenotazione_gruppi>
ecc.


mediante un form html
Codice: Seleziona tutto
<FORM action="cercaprenotazionedata.php" method="post">


<p>Inserisci qua la <b>data di arrivo</b> di cui vuoi visualizzare le prenotazioni:
gg  <INPUT type="TEXT" size="2" name="giorno_a">   
mm  <INPUT type="TEXT" size="2" name="mese_a">   
aaaa <INPUT type="TEXT" size="4"name="anno_a">

<br><br>
<INPUT type="SUBMIT" name="Invia" value="Cerca"></B></p>

</FORM><br><br>

devo ricercare nel documento e visualizzare le sole prenotaizoni relative a quella data.
Lo script che ho fatto è questo (non da errore ma non appare niente).
Codice: Seleziona tutto
<?php

$giorno_a = $_POST['giorno_a'];
$mese_a = $_POST['mese_a'];
$anno_a = $_POST['anno_a'];

$testo = '
<?xml version="1.0" encoding="UTF-8"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="registro_prenotazioni">
   <HTML>
    <HEAD>
     <TITLE>Cerca prenotazioni per data di arrivo</TITLE>
    </HEAD>
    <BODY>
     <CENTER>
      <FONT SIZE="7" FACE="Arial">Cerca prenotazioni per data di arrivo</FONT>
      <BR/><BR/><BR/>
     </CENTER>';

$testo = $testo . "<CENTER><FONT SIZE=\"5\" FACE=\"Arial\">Prenotazioni del $giorno_a/$mese_a/$anno_a</FONT>\n";
$testo = $testo . '<BR/><BR/>
     <table  border="2" cellpadding="0" cellspacing="2">
      <tbody>
         <tr>
            <th>Data prenot.</th><th>Soggetto<br>gruppo</br></th><th>Nazion.</th><th>Indirizzo</th><th>Telefono</th><th>UIAA</th>
            <th>E-mail</th><th>Data di arrivo</th><th>Provenienza</th><th>PP</th><th>Notti</th><th>Stanza Nr. (PP)</th><th>Nota</th>
         </tr>
         
            <xsl:apply-templates select="registro_prenotazioni/prenotazione_privati"/>
         <xsl:apply-templates select="registro_prenotazioni/prenotazione_gruppi"/></tbody></table></body></html></xsl:template>';


  $testo = $testo . "<xsl:template match=\"registro_prenotazioni/prenotazione_privati\"><xsl:if test=\"giorno_a[text()='$giorno_a']\"><xsl:if test=\"mese_a[text()='$mese_a']\"><xsl:if test=\"anno_a[text()='$anno_a']\">\n";

$testo = $testo . '<tr>
<td align="center"></td><td><xsl:value-of select="./giorno_p"/><xsl:text>-</xsl:text><xsl:value-of select="./mese_p"/>
<xsl:text>-</xsl:text><xsl:value-of select="./anno_p"/></td><td><b><xsl:value-of select="./cognome"/><br></br><xsl:value-of select="./nome"/></b></td>
<td><xsl:value-of select="./nazionalita"/>
</td><td><xsl:value-of select="./indirizzo"/><xsl:text> </xsl:text><xsl:value-of select="./civico"/><xsl:text>, </xsl:text><br></br><xsl:value-of select="./cap"/><xsl:text> </xsl:text><xsl:value-of select="./citta"/><xsl:text> </xsl:text><xsl:value-of select="./provincia"/></td>
<td><xsl:value-of select="./telefono"/></td><td align="center"><xsl:value-of select="./tesserato"/></td><td><xsl:value-of select="./e_mail"/></td>
<td><xsl:value-of select="./giorno_a"/><xsl:text>-</xsl:text><xsl:value-of select="./mese_a"/><xsl:text>-</xsl:text><xsl:value-of select="./anno_a"/>

</td><td><xsl:value-of select="./provenienza"/></td><td align="center"><xsl:value-of select="./numero_persone"/></td><td align="center"><xsl:value-of select="./numero_notti"/></td>
<td align="center"><xsl:value-of select="./numero_stanza"/><xsl:text> (</xsl:text><xsl:value-of select="./numero_persone"/><xsl:text>)</xsl:text></td>
<td><xsl:value-of select="./nota"/></td><td><a href="logineliminaprenotazione.html"><img  title="elimina prenotazione" border="0" src="cestino.gif"/></a><xsl:text>  </xsl:text><a href="loginprenotazionimod.html"><img title="modifica prenotazione" border="0" src="appunti.gif"/></a></td></tr>
</xsl:if></xsl:if></xsl:if>\n</TABLE>
     <BR/><BR/><BR/>
     <A href="HOME.html">Torna alla home</A>
     </CENTER>
    </BODY>
   </HTML>
 </xsl:template>
</xsl:stylesheet>';

$fileName = "cercaprenotazione.xsl";
$fileStream = fopen($fileName, "w");
fwrite($fileStream,$testo);
fclose($fileStream);
system("/usr/lib/java/bin/java -classpath /usr/lib/saxon/saxon.jar com.icl.saxon.StyleSheet prenotazioni.xml cercaprenotazione.xsl");

?>

(in questo manca il template per i gruppi..aspettavo a farlo che funzionasse almento quello dei privati

2)
Devo creare un foglio di stile che riassuma la numerosità divisa per nazionalità (e fin qui nessun problema, ho usato la funzione sum).
Il problema nasce quando devo filtrare per anno, in modo da far apparire una tabella con le sole nazionalità relative alle presenze di un solo anno

Codice: Seleziona tutto
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
   <xsl:template match="/">
      <html>
         <head>
            <title>Prenotazioni</title>
         </head>
         <center>
            <h1>Lista prenotazioni</h1>
         </center>
         <xsl:if test="//anno_a[text()='2005']">
            <table border="2" cellpadding="0" cellspacing="2">
               <tbody>
                  <tr>
                     <th>nazionalita</th>
                     <th>numero</th>
                  </tr>
                  <tr>
                     <td>Italiana</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Italiana']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Italiana']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Austriaca</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Austriaca']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Austriaca']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Ceca</td>
                     <td>
                        <xsl:if test="anno_a[text()='2005']">
                           <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Ceca']
/../numero_persone | //prenotazione_gruppi/nazionalita[text()='Ceca']/../numero_persone)"/>
                        </xsl:if>
                     </td>
                  </tr>
                  <tr>
                     <td>Francese</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Francese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Francese']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Inglese</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Inglese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Inglese']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Irlandese</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Irlandese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Irlandese']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Olandese</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Olandese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Olandese']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Portoghese</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Portoghese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Portoghese']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Slovacca</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Slovacca']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Slovacca']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Spagnola</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Spagnola']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Spagnola']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Tedesca</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Tedesca']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Tedesca']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Danese</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Danese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Danese']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Finlandese</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Finlandese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Finlandese']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Norvegese</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Norvegese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Norvegese']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Canadese</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Canadese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Canadese']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Statunitense</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Statunitense']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Statunitense']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Altro Europa</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Altro Europa']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Altro Europa']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Altro America</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Altro America']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Altro America']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Altro Asia</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Altro Asia']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Altro Asia']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <td>Altro Oceania</td>
                     <td>
                        <xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Altro Oceania']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Altro Oceania']/../numero_persone)"/>
                     </td>
                  </tr>
                  <tr>
                     <th>Totale</th>
                     <td>
                        <xsl:value-of select="sum(//numero_persone)"/>
                     </td>
                  </tr>
               </tbody>
            </table>
         </xsl:if>
      </html>
   </xsl:template>
</xsl:stylesheet>

COn questo foglio di stile ottengo un risultato: dalla mia tabella scompaiono i cechi, il problema è che ho fatto le prove con 5 cechi del 2005 e 2 del 2004...con questo foglio di stile scompaiono tutti!!!

ho fatto delle domandine belle pesanti. :oops: ..quindi mi fermo qui...ma se ci prendete gusto ne ho altri rompicapi!!!

grazie per OGNI AIUTO SAPRETE DARMI!!!
laura
LALIFA
Utente Junior
 
Post: 51
Iscritto il: 10/03/05 18:57
Località: Trento


Torna a Programmazione


Topic correlati a "PHP: come includere in un file altri file":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti