Repository 32bit  Forum
Repository 64bit  Wiki

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.

Header PHP in due versioni

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

Re: Header PHP in due versioni

Messaggioda ZeroUno » ven ago 23, 2013 23: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
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4414
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: Header PHP in due versioni

Messaggioda samiel » ven ago 23, 2013 23:25

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

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

Re: Header PHP in due versioni

Messaggioda ZeroUno » ven ago 23, 2013 23: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
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4414
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: Header PHP in due versioni

Messaggioda samiel » dom ago 25, 2013 14:20

Vero! Ancora più semplice:
Codice: Seleziona tutto
<?php
  echo ($pagina != "home") ?
  '<h2>Titolo ridotto/h2>' :
   <h1>Titolone</h1>
   <h2>Sottotitolo</h2>';
?>


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

Re: Header PHP in due versioni

Messaggioda marcomg » dom set 15, 2013 13:12

Beh, così non è molto "pulito".
Windows is what you open when you want fresh air from outside.
marcomg
Linux 1.0
Linux 1.0
 
Messaggi: 11
Iscritto il: sab lug 27, 2013 15:01
Slackware: 14
Distribuzione: Debian Sid

Re: Header PHP in due versioni

Messaggioda Paoletta » dom set 15, 2013 19: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">}
Avatar utente
Paoletta
Staff
Staff
 
Messaggi: 3907
Iscritto il: dom apr 24, 2005 23:00
Località: Varese
Slackware: 13.1
Desktop: fluxbox

Re: Header PHP in due versioni

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

Re: Header PHP in due versioni

Messaggioda aschenaz » mer ott 02, 2013 7: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?
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4435
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.18
Desktop: KDE 4.10.5

Re: Header PHP in due versioni

Messaggioda aschenaz » mer ott 02, 2013 13: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.
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4435
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.18
Desktop: KDE 4.10.5

Re: Header PHP in due versioni

Messaggioda samiel » mer ott 02, 2013 13: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: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Header PHP in due versioni

Messaggioda samiel » mer ott 02, 2013 13: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
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Header PHP in due versioni

Messaggioda aschenaz » mer ott 02, 2013 13:35

Prova la soluzione che ti ho prospettato, poi richiama il sorgente della pagina e posta le righe di codice interessate.
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4435
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.18
Desktop: KDE 4.10.5

Re: Header PHP in due versioni

Messaggioda samiel » mer ott 02, 2013 13: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
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Header PHP in due versioni

Messaggioda miklos » mer ott 02, 2013 14: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
miklos
Linux 3.x
Linux 3.x
 
Messaggi: 1273
Iscritto il: lun lug 16, 2007 16:39
Località: Roma
Slackware: 14.1 64bit
Kernel: 3.16.3
Desktop: openbox 3.5.2

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite