Header PHP in due versioni

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Re: Header PHP in due versioni

Messaggio da aschenaz »

Non c'è proprio la chiamata al css!

Ma questa riga l'hai messa?

Codice: Seleziona tutto

    <link rel="stylesheet" type="text/css" href="stylesheets/layout<?php echo $stylenr ?>.css" />

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: Header PHP in due versioni

Messaggio da samiel »

Codice: Seleziona tutto

<?php
isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
$stylesheet = ($pagina !== 'home') ? 'stylesheets/layout2.css' :
'stylesheets/layout3.css';
?>
nonostante il == continua a non caricare i CSS.

Per l'altra faccenda, certo posso impostare il controllo,
ma nella fattispecie è tutto in minuscolo e i nomi sono corretti...

Non riesco ad uscirne :-(

m

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Re: Header PHP in due versioni

Messaggio da aschenaz »

Così è impossibile che non funzioni:

Codice: Seleziona tutto

<?php
    isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
    $pagina != 'home' ? $stylenr='2' : $stylenr='3'; 
?>
    <link rel="stylesheet" type="text/css" href="stylesheets/layout<?php echo $stylenr ?>.css" />

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: Header PHP in due versioni

Messaggio da samiel »

No, infatti così funziona!
SOlo, non riesco a capire gli errori
dei precedenti tentativi...

grazie!
m

paolo1957
Linux 0.x
Linux 0.x
Messaggi: 14
Iscritto il: mar 27 ago 2013, 16:50
Nome Cognome: Paolo Seria
Slackware: slackware64-current
Kernel: 3.10.9
Desktop: kde
Località: Roma

Re: Header PHP in due versioni

Messaggio da paolo1957 »

Codice: Seleziona tutto

<?php>
$pages = array ("index");
if {in_array($_GET["pagina"], $pages)} {
    echo '<header1">'
    } else {
echo '<header2">'
}
?>
Ho riportato qui il codice del primo post.
In effetti, dal punto di vista sintattico, ci sono degi errori. Forse è per questo che non funzionava. In questi casi e molto utile usare un editor specifico per il PHP che evidenzi in rosso tutti gli errori di battitura; come le graffe al posto delle tonde dopo if, i punto e virgola mancanti, eccetera.
I più famosi editor per PHP sono addirittura liberi e gratuiti, su slackware si installano facilmente (dopo aver installato openjdk perchè sono scritti in Java) ed è solo una questione di gusti: https://netbeans.org, http://www.eclipse.org/downloads, http://www.aptana.com/products/studio3/download.
Venendo al punto le soluzioni proposte nei post successivi a me sembrano tutte valide, ma per avere un controllo più fine-graned sulla grafica di un sito, per evitare la duplicazione di codice nelle vaire pagine e soprattutto rendere la vita più facile al webmaster in caso di modifiche sarebbe consigliabile l'adozione dei template. In questo modo sarebbe possibile creare dei blocchi di codice HTML che possono essere composti nella pagina web stessa: l'intestazione, il fondo pagina, le colonne destra o sinistra, la zona centrale. Questi possono contenere solo semplici frammenti di codice PHP: echo, if, foreach e poco altro. Non sarebbe così necessario agire sul foglio di stile, che può rimanere unico, mentre si potrebbe riutilizzare lo stesso blocco ogni volta che, ad esempio, l'intestazione in alcune pagine non cambia. Anche se l'organizzazione dei file richiesta per seguire questo approccio può sembrare complessa, vale sicuramente la pena provare, perchè in seguito se ne otterrano molti vantaggi, anche per piccoli siti.
nessuna

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: Header PHP in due versioni

Messaggio da samiel »

Efficace suggerimento!
Hai qualche link dove approfondire la cosa?

grazie
m

paolo1957
Linux 0.x
Linux 0.x
Messaggi: 14
Iscritto il: mar 27 ago 2013, 16:50
Nome Cognome: Paolo Seria
Slackware: slackware64-current
Kernel: 3.10.9
Desktop: kde
Località: Roma

Re: Header PHP in due versioni

Messaggio da paolo1957 »

Poichè le funzioni che maneggiano i template sono sostanzialmente le stesse queste, storicamente, sono state raggruppate in librerie già pronte scritte in PHP.

La bibliografia spesso le chiama motori di template e inoltre tiene a precisare che già il PHP stesso è un motore di template, se usato come dicevo nel post precedente.

Tuttavia una delle più antiche (almeno che io ricordi) fa parte del progetto PEAR e si chiama HTML_Template_IT, si può visionarne la documentazione a pear.php.net/manual/en/package.html.htm ... .intro.php.
Sostanzialmente usa dei marcatori (placeholder) posti nel codice HTML del template dove al momento della generazione della pagina web avviene la sostituzione con il contenuto della variabilecorrispondente.
Questo permette anche di fare in modo che il contenuto sia un altro template, che diviene a sua volta sub-template incastrato nel template più esterno.

Il passo successivo è quello di fornire un metodo di caching per la visualizzazione del template considerando che anche in un sito dinamico i cambiamenti di contenuto sono poco frequenti.
Sono stati quindi sviluppati dei sofisticati motori di template dotati di compilatori che preparano il template in memoria pronto per essere visualizzato rapidamente dal secondo accesso in poi. Un famoso motore di questo tipo è Smarty e la sua documentazione contiene un utile tutorial che consiglio di provare. http://www.smarty.net/docs/en

Questa organizzazione, tuttavia, da per scontato che esista un unico punto di ingresso al sito (il solito file index.php) e che esista una convenzione che definisca delle variabili passate dal browser con il metodo GET cioè

Codice: Seleziona tutto

index.php?variabile1=valore1&variabile2=valore2...
che serviranno a selezionare quale pagina del sito mostrare. In questo modo c'è una parte in PHP che viene sempre eseguita e che contiene tutte quelle inizializzazioni che sono comuni a tutte le pagine, evitando di duplicare il codice stesso.
La letteratura chiama spesso questo file front-controller, mentre chiama action-controller ognuno dei file, relativi a ogni pagina, che venie incluso dal front-controller dopo le inizializzazioni e dopo aver stabilito quale pagina mostrare. Ogni action-controller ha il
proprio template dove avviene la (o le) sustituzione(i) e quindi ri-spedito come stringa al browser.

Il template è quindi solo una parte del codice di un sito e per venire incontro al webmaster sono nate delle librerie in PHP che fanno da base per una organizzazione del codice come ho illustrato sopra.
I cosiddetti framework PHP.

Per iniziare si può dare un'occhiata a TinyMVC che è molto semplice ma contiene già tutto l'essenziale per funzionare bene (e anche
molto veloce proprio perchè semplice) http://www.tinymvc.com/documentation/in ... umentation

Se si desidera qualche funzionalità in più si può passare a CodeIgniter ellislab.com/codeigniter, qui nel manuale utente ho trovato la spiegazione più chiara fra quelle viste in giro. ellislab.com/codeigniter/user-guide/ove ... pflow.html

Aggiungendo ancora complessità, funzionalità ed estendibilità si arriva a Zend Framework framework.zend.com dove
l'uso del PHP Object-Oriented reggiunge livelli veramente accademici.

Infine aggiungo che con questi framework ci si trova per così dire un gradino sotto i vari Joomla http://www.joomla.org, Drupal drupal.org, Typo3 typo3.org e simili, dove il funzionamento interno si basa sugli stessi principi esposti sopra
(almeno nelle ultime versioni) ma dove sono state fatte delle scelte grafiche e funzionali già predefinite, che sollevano il webmaster dai dettagli relativi al codice PHP, lasciando solo la possibilità di configurare il sito agendo generalmente attraverso un pannello di controllo, anche piuttosto complesso, dove è anche possibile estendere le funzionalità usando dei moduli preconfezionati.


@ ai moderatori e amministratori
Ho perso il conto dei numerosi tentativi che ho fatto, da ieri sera 3/10/2013, per riuscire a inviare questo post :(
nessuna

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Header PHP in due versioni

Messaggio da ZeroUno »

Offtopic:
paolo1957 ha scritto:Offtopic: @ ai moderatori e amministratori
Ho perso il conto dei numerosi tentativi che ho fatto, da ieri sera 3/10/2013, per riuscire a inviare questo post :(
Offtopic: Indicativamente 24 click consecutivi in 8 minuti, di cui 7 in 5 secondi. :)
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Rispondi