Newsgroup: it.comp.www.php
Titolo: Parto da zero

Ciao tutti mi chiamo J e non ho mai usato php, e vorrei iniziare (bene).
^__^
Qual'č un buon punto di partenza?
Uso abbastanza bene html e css e mi servirebbe implementare delle pagine con
il php per evitare il fastidioso uso dei frames.
Leggendo qua e lą trovo che la soluzione potrebbe venire dall'uso di
linguaggi SSI (
asp.net
, php ecc) ma non trovo esempi che mi chiariscano come
incorporare istruzioni php al mio scopo : in sostanza in una main page
vorrei avere
- una testata (fissa)
- un contenuto (dinamico)
- un menu (dinamico e che opera ovviamente sul contenuto)
- un footer (fisso)
Come procedere?
Grazie in anticipo, ciao
J


Ma se qualcuno ti dice: "usa require o include...." tu capisci? Oppure non
hai proprio idea di quale sia la sintassi e l'uso delle funzioni PHP? Giusto
per sapere come aiutarti...

 funzioni PHP? Giusto per sapere come aiutarti...
Ciao,
ho dato un occhio in giro alle funzioni di base ma più che i comandi
(l'include ho visto come viene usato da codici online) vorrei capire qual'è
il metodo cioè come operare nellapagina html (anzi php) per gestire il tutto
senza il frame.
Se però questo significa dover imparare tutto il php... quale può essere una
buona risorsa per iniziare (in italiano possibilmente), o un libro ma che
faccia dei buoni esempi onde evitare i soliti book con capitolo a progetto
che servono solo a fare cose meccanicamente senza capirne il perchè :)
Grazie, ciao
PS: in php sono proprio niubbissimo :)
J


ok, ma hai capito come funziona il php? alla fine tu avrai cmq del codice
html. Cioé, tu crei la pagina php, quando la richiami da browser il server
la "elabora" e ti invia il codice html. Quindi a menoché tu non abbia
necessità di appoggiarti a database o di fare delle operazioni sui dati ti
conviene fare tutto in html... tu come gestisci i dati?

 gestisci i dati?
Ciao,
la mia esigenza non è orientata alla gestione di db ma semplicemente
all'evitare l'uso dei frames (o iframes) in html.
Poichè non trovo soluzioni usando solo html e css per evitare i frames, ho
chiesto un po' in giro sui vari ng di html e sui motori di ricerca e le
uniche alternative che mi vengono proposte sono quelle di usare i css per
gestire il layout (giustamente),  e i tag <div> per incorporare istruzioni
lato server (asp o php) per poter riempirne il contenuto dinamicamente.
Spero che sia questo il concetto di quello che finora ho trovato! :)
Quindi personalmente eviterei di dover imparare tutto un linguaggio (php,
asp o altro) "solo" per questo scopo ma poichè trovo soltanto esempi "a
metà", chiedevo qui dove forse mi potrete aiutare.
In effetti non ho ben capito come si legano html e php, cioè come "dire" in
html di usare il php per il caricamento di una pagina all'interno di un
div...
Io ho provato così ma ovviamente non ho chiaro molti (troppi) concetti:
La pagina che voglio dovrebbe avere un contenuto dinamico riempito da un
menu che non sparisca mai dalla pagina (quello che di solito fornisce l'uso
dei frames).
Creo una pagina php "prova.php"
- gli attribuisco un css "layout.css" in cui attribuisco:
un #contenuto (id per il div che fa da contenitore)
un #menu (id per il div del sommario)
- nel <html><body> definisco un div "contenuto"
<div id="contenuto"> e ci metto un
<?php include("prova.htm"); ?> </div> (l'include permette l'estensione htm o
deve essere per forza .inc ?)
 Come definisco nel div per il menu l'include? come "li vincolo l'uno
all'altro"?
So che non conoscendo il php tutto questo mi sembra difficile mentre per chi
lo usa è tutto probabilmente estremamente facile...
e già qui credo di commettere qualche errore poichè l'include del contenuto
è statico
mentre si dovrebbe riempire a seconda della scelta nel menu quindi immagino
serva un passaggio di variabile che non come e dove definire...
Tutto questo a livello teorico e come "idea" li capisco, ma mi mancano i
"fondamentali"..
Grazie e se sono un caso irrecuperabile lascia stare...
Ciao
J

 linguaggi SSI (
asp.net
, php ecc) 
[..]
Forse fai confusione tra linguaggi lato server (
asp.net
, php ecc) e le 
Server Side Include (SSI).
SSI è una tecnica per includere documenti all'interno di altri che non 
necessita di linguaggi lato server, o meglio, utilizzi direttive che 
vengono direttamente interpretate dal webserver (senza utilizzo di altri 
moduli, se non quello del SSI): con apache debitamente configurato e 
utilizzando l'estensione del documento '.shtml' (se non specificato 
diversamente nel file di configurazione di apache) hai possibilità di 
includere documenti all'interno di altri, che vengono restituiti al 
browser come un unico documento. Se non hai bisogno di dinamicità questo 
può fare al tuo caso (per gli header, i footer).
Ad esempio, inserendo nel tuo file .shtml (o quello che è) questa linea
<!--#include virtual="/footer.html" -->
ottieni che apache sostituisce a questa linea il contenuto del file 
footer.html e invia un unico documento al browser.
Le SSI consentono anche l'esecuzione di script CGI sul server, ma se è 
questo l'utilizzo che devi farne può avere senso imparare php (a meno 
che non sei vincolato da cgi specifici).
Per maggiori info sulle SSI
http://www.latoserver.it/apache/ssi/
e più in dettaglio
http://httpd.apache.org/docs/howto/ssi.html
Have fun
-- 
Spoken: How much is that gorilla in the window?
Take our advice, At any price, A gorilla like Magilla is mighty nice.
Gorilla, Magilla Gorilla for sale

 Come procedere?
Immaginati la tua pagina html "intera", come dovrebbe essere senza frame:
<html> etc..
<!-- header, è un normale commento html questo, eh! -->
<table blablabla>
  <tr etcetcetc
</table>
<!-- fine dell'header -->
<!-- parte principale -->
jgjgdsjhgdjs ghd
<!-- fine parte principale -->
 etcetc
Quello che farai con il php è mandare in output come html parti di questo
codice, anche prendendolo da altri file. Avrai quindi un file con l'header
(la "testata" senza neanche i tag html, head e body) che si chiamerà, ad
esempio, "header.html"
Avrai una serie di file simili con il solo corpo centrale e così via.
La tua pagina principale, con estensione .php dovrà essere del tipo
<html> etc..
<!-- header, è un normale commento html questo, eh! -->
[QUI CI VA IL FILE header.html]
<!-- fine dell'header -->
<!-- parte principale -->
[QUI CI VA IL FILE home.html]
<!-- fine parte principale -->
 etcetc
Ora quello che devi fare in php è far scrivere dal server, per mandarlo al
browser, il contenuto dei file che vuoi tu. L'istruzione che fa questo nel
modo più semplice è include() (vedi manuale su 
php.net
)
Ad include passi il nome del file da includere, e lui lo *copia* nel punto
incui hai detto tu. Questo file potrebbe avere altro codice php al suo
interno, e verrebbe interpretato.
Per far capire al webserver che deve interpretare alcune parti del file come
codice php bisogna aprire i tag php "<?" oppure "<?php", scrivere il codice
e richiudere il tag con "?>"
Il tuo file è diventato quindi
<html> etc..
<!-- header, è un normale commento html questo, eh! -->
<? include("header.html"); ?>
<!-- fine dell'header -->
<!-- parte principale -->
<? include("home.html"); ?>
<!-- fine parte principale -->
 etcetc
Il risultato sarà esattamente quello di aver fatto un solo file html, come
puoi vedere guardando l'html.
Ora hai ottenuto una pagina statica che utilizza file diversi per comporsi.
Dovrai quindi pensare a come gestire "la variabilità" delle pagine (es:
www.sito.it/index.php?p=15
 e nel codice richiami il file con
include("template/".$_GET["p"].".html")..)
Se non sai nulla di programmazione però inizia a farsi complicato spiegare
tutto, per cui ti consiglio una buona dose di Tutorial(TM) al giorno, tipo
www.html.it
Ricordati che per fare tutto questo devi avere un webserver (apache, iis) ed
il php installati sulla macchina che stai usando (sia che stia facendo le
prove in locale che su server remoto)
Ludovico Grossi

 Ludovico Grossi
Grazie mille per l'esauriente spiegazione (scusa il cuttaggio ^__^).
Almeno adesso ho capito bene la strutturazione, altro discorso per quanto
riguarda la vera e propria programmazione del codice (anche se il senso è
chiaro davvero sto a zero per quanto riguarda variabile etc...) ..cercherò
di imparare.. :)
Grazie mille
Ciao
J

 Ludovico Grossi
Ciao sto approfondendo questo discorso ma mi sono (come immaginavo/vi)
impantanato...
Ti spiego a che punto sono:
Ho capito che se guardo una pagina php online non vedrò la parte tra i tag
<?php e ?> (male! ^___^ e come faccio ad imparare..ehe he )
A parte gli scherzi...
Mi aiuteresti a capire come gestire la variabile di sistema $_GET ?
Cioe' se non ho frainteso è tramite l'utilizzo dell'include e del passaggio
di questa variabile che posso inserire un url dinamico in un div "contenuto"
(che punta insomma ad una pagina variabile ma specifica) comandato da un
menu (anch'esso magari dinamico ma comunque inserito in un file .inc
esterno)
In pratica dovrei avere:
la mia index.php con
<html><body> ...
<div id="header">
<?php include ("header.inc") ?>
</div>
<div id="footer">
<?php include ("footer.inc") ?>
</div>
<div id ="menu">
<?php include ("header.inc") ?>
</div>
<div contenuto>
<?php include XXXXXXXXX ?>
</div>
...
</html></body>
In pratica cosa scrivo nell'include che mi deve applicare l'src della pagina
nel contenuto?
E cosa scriverò nel menu sul link che mi riempirà il contenuto?
(cioè: se un pulsante mi dovrà passare la variabile per riempire il div
"contenuto" nel mio index.php quale sarà il suo a href?)
Immagino in index.php,  nel div "contenuto" una cosa tipo :
<?php
include ("{$_GET[pagina]}.php);
?>
E' corretto? cosa manca? dove sbaglio?
ma come/dove (immagino nel menu) assegno a "pagina" valori diversi per la
variabile $_GET?
Grazie, scusa la tortura
Ciao
J
Ps: il mio sito online di test ha a bordo il php 4.3.7
(
http://www.auroraboreale.com/reprt.php
)
Di nuovo, thanks

 variabile $_GET?
Dopo il nome del file un punto interrogativo, quindi tutte le variabili che
vuoi (entro alcuni limiti) nella forma nomevariabile=valore e separati da
"&":
index.php?nomevar1=valore1&var2=val2&variabile3=capito&...
E nel file index.php avrai
$_GET["nomevar1"]  che conterrà "valore1"
$_GET["var2"]  che conterrà "val2"
$_GET["variabile3"]  che conterrà "capito"
Buon divertimento
Ludovico Grossi


Ho fatto questa pagina (come hai esemplificato li sopra) e l'ho messa online
ma non capisco come mai pur riempiendosi nel div "contenuto" che si dovrebbe
riempire senza il valore della variabile "pagina" (che non ho definito da
nessuna parte) si riempie invece come se il valore della variabile fosse
uguale a 1.
ecco cosa ho scritto:
<html>
<body>
<div  id="testata"><img src="aurora.jpg" alt="AB" width="600" height="118"
/></div>
<div id="contenuto">
<?php
 if($_GET["pagina"]=1)
include ("convariabile.htm");
 else include ("novariabile.htm");
?>
</div>
</body>
</html>
In pratica vedo sempre nel div "contenuto" la pagina "convariabile.htm"
invece che "novariabile.htm"
Per verificare qual'è  il valore assunto dalla variabile "pagina" qual'è il
comando in php?
<?php echo "$pagina" ?> forse?
Tra l'altro forzando l'url con www.******.com/index.php?pagina=1 non mi
cambia nulla, il risultato è sempre quello come se la variabile fosse invece
una costante :(
Dove sbaglio? O c'è qualche problema di sessione/cookie che mi tiene un
valore a 1 da qualche parte...mah?
Ho un'altra domanda poi non ti perseguiterò più prometto.
Nello script php li sopra ho 2 scelte (if ed else) ma se ce ne fossero molte
di più (di pagine da includere) sarei costretto a usare un sistema
differente per filtrare la variabile, o no? (Comunque questa domanda per ora
è meno importante - per me che voglio capire meglio tutto il funzionamento a
monte...)
Ti ringrazio davvero tanto, sei molto paziente
Grazie
Ciao
J


if($_GET["pagina"]==1)
devi metterne 2 di "uguali".
CIAO

 CIAO
Lo sapevo di essere un pirletta :))
Eh si che l'avevo letto sul manuale di 
php.net
 della sintassi del doppio
uguale...
Che idiota!
Grazie, mi scuso
Ciao
J

 Ti ringrazio davvero tanto, sei molto paziente
=)
Ludovico Grossi

Grazie al doppio uguale ora ho capito :))  (e poi si dice che la legge č
uguale per tutti... in questo caso č uguale uguale, alla Samuele Bersani
^___^)
Cmq son riuscito a switchare con degli else if  aggiuntivi (forse poco
ortodosso ma funzionale).
<?php
 if($_GET["pagina"]==1)
include ("var1.htm") ;
else if($_GET["pagina"]==2)
include ("var2.htm");
else if($_GET["pagina"]==3)
include ("var3.htm");
else include ("novar.htm");
?>
Che dite va bene o ci saranno problemi?
Ora mi metto al lavoro grafico che amo :)
Ciao, notte e grazie davvero!
J

 Che dite va bene o ci saranno problemi?
Solo uno: se "pagina" non esiste ti verrà segnalato come errore.
Rimanendo in linea col tuo stesso procedimento, c'è il modo di ovviare:
   se (pagina esiste) {
        i tuoi "if" senza l'ultimo "else"
   altrimenti
   include ("il default");
Detta in php:
 if (isset($_GET["pagina"])) {
 
     if ($_GET["pagina"]==1) {
     include ("var1.htm") ;
     } else if($_GET["pagina"]==2) {
     include ("var2.htm");
     } else if ($_GET["pagina"]==3) {
     include ("var3.htm");
     }
 
 } else {
 include ("novar.htm");
 }
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

  }
Grazie mille, apporto la modifica!
Ciao, buona giornata
J

 Grazie mille, apporto la modifica!
Aspetta aspetta, non ho tenuto conto di una cosa, sorry: l'utente
potrebbe "divertirsi" a passare una querystring dove la variabile esiste
ma č diversa da 1, 2, 3; in quel caso non si verificherebbe alcun
include(). Lascio intatto il criterio precedente e aggiungo una piccola
"ridondanza":
       [...]
       include ("var3.htm");
       } else {
       include ("novar.htm");
       }
 
   } else {
   include ("novar.htm");
   }
Cosě non dovresti avere problemi in nessun caso.
