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.
samiel
Staff
Staff
Messaggi: 5504
Iscritto il: ven gen 16, 2004 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Header PHP in due versioni

Messaggioda samiel » ven ago 23, 2013 22:49

Nuovo problemino PHP.
In un sito vorrei che la home avesse lo header di un certo tipo:
titolo su più righe, e sotto il consueto menu orizzontale.
Nelle altre pagine invece vorrei che lo header fosso assai più ristretto:
titolino su una riga e sotto ancora il menu.
Avevo pensato a una cosa del tipo

Codice: Seleziona tutto

<?php>
$pages = array ("index");
if {in_array($_GET["pagina"], $pages)} {
    echo '<header1">'
    } else {
echo '<header2">'
}
?>

avendo poi uno header1 e uno header2.
Ma poiché tutto l'ambaradan dei menu è lo stesso,
e ciò che varia è solo la formattazione del titolo,
mi sembra di sparare ai passeri col cannone
perché tutto lo header è per il resto identico
sia in header1 sia in header2.
Che soluzione più adeguatamente economica posso adottare?

Grazie
m

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 4894
Iscritto il: ven giu 02, 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

Messaggioda ZeroUno » sab ago 24, 2013 0:10

i css.
Su una pagina applichi uno stile grosso e su una pagina uno stile piccolo
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

samiel
Staff
Staff
Messaggi: 5504
Iscritto il: ven gen 16, 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

Messaggioda samiel » sab ago 24, 2013 0:25

Il problema è come far sì che PHP lo applichi,
visto che lo header è generato "automaticamente"
e una volta sola in index.php

m

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 4894
Iscritto il: ven giu 02, 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

Messaggioda ZeroUno » sab ago 24, 2013 0:49

quello che vari è lo stylesheet (css)

<head>
<?php
se index {
echo
<style>
.titoli { formattazione per grandi }
</style>
}else{
echo
<style>
.titoli { formattazione per piccoli }
</style>
}
?>
</head>
<span class="titoli">intestazioni</span>

(oppure div, o simile)

se gli stili sono grossi puoi mettere file esterni, sempre dentro <head></head>

if(index){echo <link href="grande.css" rel="stylesheet" type="text/css">}
else{echo <link href="piccolo.css" rel="stylesheet" type="text/css">}
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

samiel
Staff
Staff
Messaggi: 5504
Iscritto il: ven gen 16, 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

Messaggioda samiel » dom ago 25, 2013 15:20

Vero! Ancora più semplice:

Codice: Seleziona tutto

<?php
  echo ($pagina != "home") ?
  '<h2>Titolo ridotto/h2>' :
   <h1>Titolone</h1>
   <h2>Sottotitolo</h2>';
?>


grazie
m

marcomg
Linux 1.0
Linux 1.0
Messaggi: 13
Iscritto il: sab lug 27, 2013 16:01
Desktop: KDE
Distribuzione: Debian Sid

Re: Header PHP in due versioni

Messaggioda marcomg » dom set 15, 2013 14:12

Beh, così non è molto "pulito".
Windows is what you open when you want fresh air from outside.

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3949
Iscritto il: lun apr 25, 2005 0:00
Slackware: 13.1
Desktop: fluxbox
Località: Varese

Re: Header PHP in due versioni

Messaggioda Paoletta » dom set 15, 2013 20:37

marcomg ha scritto:Beh, così non è molto "pulito".


concordo, direi meglio cosi' (come diceva ZeroUno):

Codice: Seleziona tutto

if(index){echo <link href="grande.css" rel="stylesheet" type="text/css">}
else{echo <link href="piccolo.css" rel="stylesheet" type="text/css">}

samiel
Staff
Staff
Messaggi: 5504
Iscritto il: ven gen 16, 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

Messaggioda samiel » mer ott 02, 2013 1:31

Scusate, ho perso di vista la discussione travolto da eventi tutt'altro che informatici.
Adesso mi si ripropone il problema. Ho provato alcine soluzioni.

Soluzione 1.

Codice: Seleziona tutto

<?php
isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
$stylesheet = ($pagina != 'home') ? 'stylesheets/layout2.css' :
'stylesheets/layout3.css';
?>

Risultato: non mi trova nemmeno un css

Soluzione 2.

Codice: Seleziona tutto

<?php
isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
$stylesheet = ($pagina != 'home') ? 'stylesheets/layout2.css' :
'stylesheets/layout3.css';
?>

Risultato: mi applica solo il css2 e non applica il css3 alla home.
RIcevo infatti il messaggio:

Codice: Seleziona tutto

Notice: Undefined index: pagina in /home/samiel/public_html/fornero3/index.php on line 766


Correzioni precise al codice? Grazie mille!!!!!!!!!!!!!!

m

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4541
Iscritto il: mer lug 28, 2004 0:00
Nome Cognome: Nino
Slackware: current 64bit
Kernel: as in current
Desktop: XFCE
Località: Reggio Calabria
Contatta:

Re: Header PHP in due versioni

Messaggioda aschenaz » mer ott 02, 2013 8:38

samiel ha scritto:...travolto da eventi tutt'altro che informatici.

Ciao Mauro, problemi?

Soluzione 1.

Codice: Seleziona tutto

<?php
isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
$stylesheet = ($pagina != 'home') ? 'stylesheets/layout2.css' :
'stylesheets/layout3.css';
?>

Risultato: non mi trova nemmeno un css

Soluzione 2.

Codice: Seleziona tutto

<?php
isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
$stylesheet = ($pagina != 'home') ? 'stylesheets/layout2.css' :
'stylesheets/layout3.css';
?>

Risultato: mi applica solo il css2 e non applica il css3 alla home.
RIcevo infatti il messaggio:

Codice: Seleziona tutto

Notice: Undefined index: pagina in /home/samiel/public_html/fornero3/index.php on line 766

...

Qual è la differenza tra i due codici? Non la vedo...
Comunque, l'if in questo formato non sono sicuro che sia corretto (di sicuro funziona con echo, ma con l'assegnazione della variabile non l'ho mai provato.
Io la scriverei così:

Codice: Seleziona tutto

isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
$pagina != 'home' ? $stylesheet='stylesheets/layout2.css' : $stylesheet='stylesheets/layout3.css';


Oppure, visto che io sono fissato con la sintesi:

Codice: Seleziona tutto

isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
$pagina != 'home' ? $stylenr='2' : $stylenr='3';

...e poi...

Codice: Seleziona tutto

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


Comunque, quell'avviso sembrerebbe riferirsi a qualche altro problema. Cosa c'è in quella riga (766)?
Possibile, poi, che tu abbia una index di 766 righe e oltre?

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4541
Iscritto il: mer lug 28, 2004 0:00
Nome Cognome: Nino
Slackware: current 64bit
Kernel: as in current
Desktop: XFCE
Località: Reggio Calabria
Contatta:

Re: Header PHP in due versioni

Messaggioda aschenaz » mer ott 02, 2013 14:13

Copia-incolla quella porzione del codice nel sorgente della pagina.
Ma il percorso è corretto?

In ogni caso, la seconda soluzione è anche valida, ma sporca: infatti, non fa altro che caricare il primo css e poi annullare le varie chiamate a favore del secondo. Fai fare al server un lavoro inutile...

EDIT: non vedo più il tuo messaggio.

samiel
Staff
Staff
Messaggi: 5504
Iscritto il: ven gen 16, 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

Messaggioda samiel » mer ott 02, 2013 14:17

La seconda soluzione carica sempre il CSS 2
la prima nemmeno uno.
si, certo che il percorso è corretto
anche se ho l'impressione
che mi sfugga qualcosa di enormemente banale....

m

samiel
Staff
Staff
Messaggi: 5504
Iscritto il: ven gen 16, 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

Messaggioda samiel » mer ott 02, 2013 14:26

Invece il codice

Codice: Seleziona tutto

<link rel="stylesheet" type="text/css" href="stylesheets/layout2.css" />
<?php
$pages = array ("home");
if (in_array($_GET["pagina"], $pages)){
echo '<link rel="stylesheet" type="text/css" href="stylesheets/layout3.css">';
}
?>

mi carica sempre il CSS2 e nella home mi dice:

Codice: Seleziona tutto

 Notice: Undefined index: pagina in /home/samiel/public_html/fornero3/index.php on line 765

dove la riga in questione è

Codice: Seleziona tutto

if (in_array($_GET["pagina"], $pages)){



m

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4541
Iscritto il: mer lug 28, 2004 0:00
Nome Cognome: Nino
Slackware: current 64bit
Kernel: as in current
Desktop: XFCE
Località: Reggio Calabria
Contatta:

Re: Header PHP in due versioni

Messaggioda aschenaz » mer ott 02, 2013 14:35

Prova la soluzione che ti ho prospettato, poi richiama il sorgente della pagina e posta le righe di codice interessate.

samiel
Staff
Staff
Messaggi: 5504
Iscritto il: ven gen 16, 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

Messaggioda samiel » mer ott 02, 2013 14:51

Se uso la riscrittura che hai fatto del mio codice,
non viene applicato nessun CSS. Il srogente:

Codice: Seleziona tutto

<!--inizializzo le variabili-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it">
<head>
<title>Giovanni Fornero - Filosofia e bioetica</title>

<meta name="generator" content="Quanta Plus" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta name="descriptions" content="Materiali, documenti e recensioni sulle opere del filosofo
      italiano Giovanni Fornero
"
/>

<meta name="keywords" content="giovanni fornero, fornero, giovanni fornero sito ufficiale,
      giovanni fornero recensioni, giovanni fornero libri, giovanni fornero
      opere, bioetica, bioetica cattolica, bioetica laica, laicita, laicita
      forte, laicita debole, etica, etica laica, etica cattolica,
      disponibilita della vita, indisponibilita della vita, qualita della
      vita, sacralita della vita, stato laico, stato pluralista, etsi deus
      non daretur, storia della    filosofia, storiografia filosofica,
      dizionario di filosofia, filosofia del novecento, filosofie del
      novecento, manuali per i licei
"
/>

<meta name="robots" content="index,follow" />

<body>
<div id="header">

Del CSS non c'è traccia...

m

miklos
Linux 3.x
Linux 3.x
Messaggi: 1403
Iscritto il: lun lug 16, 2007 17:39
Slackware: 14.1 64bit
Kernel: 3.16.3
Desktop: openbox 3.5.2
Località: Roma

Re: Header PHP in due versioni

Messaggioda miklos » mer ott 02, 2013 15:42

rispondo per dei possibili errori che ho visto io
samiel ha scritto:Soluzione 2.

Codice: Seleziona tutto
<?php
isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
$stylesheet = ($pagina != 'home') ? 'stylesheets/layout2.css' :
'stylesheets/layout3.css';
?>


Risultato: mi applica solo il css2 e non applica il css3 alla home.
prova ad utilizzare il controllo tra stringhe in questo modo

Codice: Seleziona tutto

$stylesheet = ($pagina !== 'home') ? 'stylesheets/layout2.css' :
    'stylesheets/layout3.css';
nota il !== nella condizione.
I vari notice sono 'normali' e dovrebbe essere buona regola controllare sempre se una variabile esiste con isset ed eventualmente utilizzare un valore di default.
samiel ha scritto:Invece il codice

Codice: Seleziona tutto
<link rel="stylesheet" type="text/css" href="stylesheets/layout2.css" />
<?php
$pages = array ("home");
if (in_array($_GET["pagina"], $pages)){
echo '<link rel="stylesheet" type="text/css" href="stylesheets/layout3.css">';
}
?>


mi carica sempre il CSS2 e nella home mi dice:
questo invece puo' avere problemi perchè la funziona in_array quando viene utilizzata con delle stringhe (il contenuto $_GET['pagina'] nel tuo caso) applica una ricerca case sensitive, quindi se per caso come parametro della url hai scritto

Codice: Seleziona tutto

index.php?pagina=Home
non funziona.. ti conviene, secondo me fare un uppercase(o lowercase) dei parametri per evitare questo tipo di problemi.

ciau
ho visto cose che voi astemi non potete immaginare


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti