creazione file

Ciao a tutti,

volevo sapere se in php è fattibile una cosa del genere e se si con quali funzioni è possibile farlo:

vorrei all'interno di un ciclo ottenuto tramite una query che da come risultato le prvince d'italia creare per ogni provincia una pagina nomeprovincia.php che al suo interno abbia la lista di tutti i comuni di quella determinata provincia. Questa pagina.php poi dovrebbe essere posizionata all'interno della cartella /provincia/nomeprovincia.php.

Inanzitutto mi chiedevo com'è possibile la creazione di un file che si php utlizzando del codice php???

grazie

 

inviato 10 anni fa
stellina
X 0 X

Ovviamente la risposta è sì.

Per creare un file in PHP, si può usare la funzione FOPEN che permette un'ottima gestione di ogni fase della creazione e della scrittura del file.

Per il resto poi, presi i valori con una query al database, li si inserisce nel file appena creato.

Ovviamente per fare questo, c'è bisogno che l'host su cui si sta operando permetta la scrittura dei files sui propri dischi rigidi.

risposto 10 anni fa
Marco Grazia
X 0 X

Rileggendo meglio la tua domanda, c'è qualcosa che non mi torna, e mi fa sentire stupido nella mia risposta.

Ma tu vuoi creare on fly, un file php e lanciarlo? Be non è ch impossibile, anzi, lo crei con fopen e poi lo lanci richiamandolo o come include o con una call a procedura remota (meglio include).

risposto 10 anni fa
Marco Grazia
X 0 X

qualcosa sono già riuscita a fare:

ho impostato dentro al ciclo la creazione del file.php attraverso fopen

 ;)

 :bye:

risposto 10 anni fa
stellina
X 0 X

a questo punto ha una cosa di questo tipo

ciclo

  creazione pagina.php

      scrittura dentro la pagina di un ciclo contenete nomi --> In questo caso la pagina php generata è senza layout.Come posso fare in modo che questi nomi appaiano in una pagina contenente il layout ???   se imposto una tabella con logo ecc all'interno di questo ciclo la pagina creata conterrà il logo quante volte sono il numero di nomi che vengono stampati all'interno del ciclo.

Come posso fare  :o

 

risposto 10 anni fa
stellina
X 0 X

metti il logo prima del ciclo  :dunno:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Scusa, in una tabella, ciò che varia non è l'intestazione, ma i dati tabellati.

Se devi popolare una tabella in html tramite un ciclo puoi fare .....

<table>
<caption><img src='...jpg' alt='il nostro logo' /></caption>
foreach ($dato = .... ) echo "<tr>\n<td>$dato da inserire</td>\n</tr>\n";
</table>

e passa la paura.

Non ho capito però perché devi creare un nuovo file, non puoi fare tutto da dentro il file chiamante?

risposto 10 anni fa
Marco Grazia
X 0 X

sono riuscita a creare lapagina come volevo.

 :D

grazie

 :bye:

risposto 10 anni fa
stellina
X 0 X

Prego  O0

risposto 10 anni fa
Marco Grazia
X 0 X

L'unica cosa che mi è rimasta in sospesa è questa:

la pagina che creo tramite fopen è in php Ho salvato i tag che mi servono per creare il layout e il ocntenuto della pagina in una variabile e tramite fputs($file, "$contenuto"); scrivo dentro alla pagina. Fin qui ok.

Adesso vorrei aggiungere all'interno di questa pagina una serie di immagini che devono essere prese da un db. Se inserisco all'interno della variabile $contenuto la query del tipo  $foto=@mysql_query(....)

quando vado a visualizzare la pagina generata mi da questo errore:

Parse error: parse error, unexpected '=' in /var/www/.../..../newpage.php on line 228

e se guardo il codice sorgente vedo che ha scritto solamente "=@mysql_query" manca la prima parte della dichiarazione!!!!!!

A cosa può essere attribuito questo errore??????????

 :bye:

risposto 10 anni fa
stellina
X 0 X

Una foto è un file a parte, distinto dalla pagina PHP che dovrà mostrarla. Quindi non puoi prendere la foto e inglobarla nel file PHP che stai creando.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

forse mi sono espressa male o non ho capito quello che vuoi dire.

Normalmente quando ho una pagina php dove voglio far mostrare una foto faccio la query e tramite visualizza.php lo faccio vedere.

Perchè non riesco a fargli scrivere questo tipo di codice che ha sempre funzionato anche in questo caso.

In fondo e come se io dicessi allo script che fa fputs "scrivimi questo testo" (indipendentemente che dentro abbia una query o la scritta ciao) .Poi quando andrò a visualizzare la pagina creata sarà òlei che si occuperà di decifrarsi il codice php ed eseguire la query come ho sempre fatto con le pagine php dove sono io a digitare il codice che voglio.

Non so se hai qualce soluzione da darmi....

 :bye:

risposto 10 anni fa
stellina
X 0 X

OK, non avevo capito. Visto che l'errore è:

Parse error: parse error, unexpected '=' in /var/www/.../..../newpage.php on line 228

riporta un po' di codice nei pressi della riga 228

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

nella pagina che lancio A.php e che mi crea B.php scrivo

$contenuto =" 

<tr>

<td>

<?php

         

$ag = @mysql_query(\"SELECT nomeag,id_ag,nome_file FROM age,tabella_files7 WHERE id_file=id_ag ORDER BY RAND() LIMIT 400\");                     

if (!$ag) {

echo('');

}         

while ($a = mysql_fetch_array($ag)) {

$id_ag = $a[id_ag];

$nomeag = $a[nomeag];

$nome_file = htmlspecialchars($a[nome_file]);

}

?></td></tr>

";

Quando lancio A.php questa mi crea B.php senza errori.

Apro B.php via browser e mi dice Parse error: parse error, unexpected '=' in /var/www/.../..../newpage.php on line 228

Se visualizzo il sorgente di B.php trovo

<tr>

<td>

<?php

          = @mysql_query(SELECT nomeag,id_ag,nome_file FROM age,tabella_files7 WHERE id_file=id_ag ORDER BY RAND() LIMIT 400);

         if (!){}

         while ( = mysql_fetch_array()) {

          = ;

          = ;

          = ;

          = ;

          = htmlspecialchars();

         }         

         ?></td>

                                </tr>

Mancano le varibili utlizzate per gli assegnamenti ....

come mai????

risposto 10 anni fa
stellina
X 0 X

Per definire la stringa $contenuto usa i singoli apici (') al posto dei doppi apici (") altrimenti il PHP farà il parsing delle variabili in essa contenute.

Ovviamente usando i singoli apici non hai bisogno di slesciare i doppi apici (gli \" non devono esser messi).

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ho riscritto la query mettendo gli apici singoli ma il problema è rimasto sempre lo stesso.

Nel sorgente di B.php mancano sempre le variabili che salvano i dati.

risposto 10 anni fa
stellina
X 0 X

C'è un altro modo per fare scrivere all'interno di B.php il codice? che mi serve per fare la query e i relativi assegnamenti??

???

risposto 10 anni fa
stellina
X 0 X

Sicuramente stai facendo qualche errore perché con i singoli apici avrebbe dovuto funzionare. Riporta il codice.

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ecco un pò di codice della pagina A.php

$contenuto =" 

<tr>

<td>

<?php         

$ag = @mysql_query('SELECT nomeag,id_ag,nome_file FROM age,tabella_files7 WHERE id_file=id_ag ORDER BY RAND() LIMIT 400');                     

if (!$ag) {

echo('');

}         

while ($a = mysql_fetch_array($ag)) {

$id_ag = $a[id_ag];

$nomeag = $a[nomeag];

$nome_file = htmlspecialchars($a[nome_file]);

}

?></td></tr>

";

fputs($file, "$contenuto");

Sorgente della pagina B.php creata dalla pagina A.php di cui ho riportato il cod qui sopra.

<tr>

<td>

         =@mysql_query('SELECT nomeag,id_ag,nome_file FROM age,tabella_files7 WHERE id_file=id_ag ORDER BY RAND() LIMIT 400');   

         if (!){}

         while (=mysql_fetch_array()) {

         =;

         =;

         =;

         =;

          = htmlspecialchars();

         }         

</td>

</tr>

risposto 10 anni fa
stellina
X 0 X

avrò capito male ma cmq prova a fare l'escape del simbolo dollaro :

\$ alle variabili che NON VUOI che siano interpretate da php

ciao!

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Come immaginavo, non hai sostituito gli apici (o meglio hai cambiato gli apici della query non quelli di $contenuto

Allora, cambia la riga:

$contenuto ="       <-- doppi apici

in

$contenuto ='       <-- apice singolo

Ovviamente anche la chiusura degli apici va cambiata, da

";

a

';

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda