Alla ricerca delle funzioni perdute

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: 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

Alla ricerca delle funzioni perdute

Messaggio da samiel »

Sto cercando di impostare un sito con quelle poche comodità che conosco
e che offre php. Ho creato (vedi qualche post fa) un file con le funzioni
e funziona egregiamente. C'è solo un meccanismo che non riesco a implementare.
Creo la hunzione head:

Codice: Seleziona tutto

<?php
function head () {
echo
<<<EOD
<?xml version="1.0" encoding="utf-8"?>
[cut]
  <link rel="stylesheet" type="text/css" href="layout.css" />
</head>
EOD;
};
?>
Ma ovviamente le pagine nelle subdir e subsubdir non troveranno mai il .css.
C'è una soluzione più economica e funzionale che copiare il .css in ogni dir?

Grazie
M.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Alla ricerca delle funzioni perdute

Messaggio da conraid »

samiel ha scritto:Sto cercando di impostare un sito con quelle poche comodità che conosco
e che offre php. Ho creato (vedi qualche post fa) un file con le funzioni
e funziona egregiamente. C'è solo un meccanismo che non riesco a implementare.
Creo la hunzione head:

Codice: Seleziona tutto

<?php
function head () {
echo
<<<EOD
<?xml version="1.0" encoding="utf-8"?>
[cut]
  <link rel="stylesheet" type="text/css" href="layout.css" />
</head>
EOD;
};
?>
Ma ovviamente le pagine nelle subdir e subsubdir non troveranno mai il .css.
C'è una soluzione più economica e funzionale che copiare il .css in ogni dir?

Grazie
M.

eheheeheheh.
Ogni volta uso un metodo diverso, a seconda del sito in questione.
Una soluzione che usano molti cms è usare un path assoluto o un URI per il 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: Alla ricerca delle funzioni perdute

Messaggio da samiel »

mmmmm... altre soluzione? Tanto per capire...
Il sito attualmente per prova è su Netsons...
Che strategia mi consigli?
Certo che se i volumoni su php che ho comperato
a non meno di 50 € cadauno fossero un tantino
più pragmatici...

Mille grazie
M.

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: Alla ricerca delle funzioni perdute

Messaggio da samiel »

Ho provato a mettere:
<link rel="stylesheet" type="text/css" href="ftp://samiel.netsons.org/layout.css" />
Ma quando cerco di caricare la pagina,
il browser sta fermo mentre sotto leggo:
"inizio transazione FTP".
Mi sa che ho sbagliato qualcosa...

M.

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: Alla ricerca delle funzioni perdute

Messaggio da samiel »

Ah ecco... mi chiede nome utente e password per caricare il file,
come per una normale transazione ftp. E suppongo che i visitatori
del sito non dovrebbero avere il mio nome utente e la mia password
per poter vedere il sito con tanto di funzioni e css... Dunque,
qualcosa non torna....

M.

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: Alla ricerca delle funzioni perdute

Messaggio da cymon »

samiel ha scritto:Ho provato a mettere:
<link rel="stylesheet" type="text/css" href="ftp://samiel.netsons.org/layout.css" />
Ma quando cerco di caricare la pagina,
il browser sta fermo mentre sotto leggo:
"inizio transazione FTP".
Mi sa che ho sbagliato qualcosa...

M.
Perché fai la chiamata in ftp e non in classico http?

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: Alla ricerca delle funzioni perdute

Messaggio da samiel »

Perché avevo sbagliato...
Adesso funge, grazie.
Si vede il logo e funziona i CSS, au quiali ho conferito un path assoluto.

Però ho 2 altri problemi. Inizio qui con primo, poi smanetto
e magari domani posto il secondo.
Vedete qui:
http://samiel.netsons.org/
La home page è tutta a posto.
Se però cliccate sulla voce "Progetti",
la pagina caricata è totalmente bianca.
Eppure la struttura è del tutto uguale
a index.php. Oppure non lo è, ma attualmente
mi sfugge la causa...

M.

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: Alla ricerca delle funzioni perdute

Messaggio da samiel »

No, mi correggo, avevo commesso una distrazione.
Se uso questo codice:

Codice: Seleziona tutto

<?php
function head () {
echo
<<<EOD
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>Liceo Ginnasio Franchetti - Mestre (VE)</title>
  <meta name="GENERATOR" content="Quanta Plus" />
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="description" content="Liceo Ginnasio Franchetti" />
  <meta name="keywords" content="Liceo Ginnasio Franchetti" />
  <link rel="stylesheet" type="text/css" href="http://samiel.netsons.org/layout.css" />
</head>
EOD;
};
?>

<?php
function firstpagecss () {
echo
<<<EOD
<style type="text/css">
div#content{padding-bottom:350px}
</style>
EOD;
};
?>

<?php
function headers () {
echo
<<<EOD
<body>
<div id="container">
<div id="header">
<img id="logoleft" src="http://samiel.netsons.org/pics/logo.gif" alt="Logo Franchetti" title="Logo Franchetti"/>
<img id="logoright" src="http://samiel.netsons.org/pics/logo.gif" alt="Logo Franchetti" title="Logo Franchetti"/>
<h3 class="header">Liceo Ginnasio Statale &#171;Raimondo Franchetti&#187;<br />
Corso del Popolo 82 - 30172 MESTRE VENEZIA<br />
Tel. 041 5315531 - Fax 041 5328524</h3>
<div id="navbarwrapper">
<div id="navbar">
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="chisiamo/chisiamo.php">Chi siamo</a></li>
<li><a href="contatti/contatti.php">Contatti</a></li>
<li><a href="news/news">News</a></li>
<li><a href="pof/pof.php">POF</a></li>
<li><a href="progetti/progetti.php">Progetti</a></li>
<li><a href="agenda/agenda.php">Agenda</a></li>
<li><a href="segreteria/segreteria.php">Segreteria</a></li>
</ul>
</div>
</div>
</div>
EOD;
};
?>

<?php
function leftmenu () {
echo
<<<EOD
<div id="leftmenu">
<ul>
<li><a id="activelink_l" href="index.php">Home</a></li>
<li><a href="circolari.php">Circolari</a></li>
<li><a href="scuolanet">Scuolanet</a></li>
<li><a href="newsletter.php">Newsletter</a></li>
<li><a href="biblioteca.php">Biblioteca</a></li>
<li><a href="studenti.php">Studenti</a></li>
<li><a href="circolari.php">Circolari</a></li>
<li><a href="siti.php">Siti utili</a></li>
</ul>
</div>
EOD;
};
?>

<?php
function menu_chisiamo () {
echo
<<<EOD
<div id="rightmenu">
<ul>
<li><a id="activelink_r" href="chisiamo.php"></a></li>
<p class="rightmenu">La nostra storia</p>
<li><a href="inizi.php">Gli inizi</a></li>
<li><a href="intitolazione.php">L'intitolazione</a></li>
<li><a href="inaugurazione.php">L'inaugurazione</a></li>
<li><a href="autonomia.php">L'autonomia</a></li>
<li><a href="guerra.php">Guerra e dopoguerra</a></li>
<p class="rightmenu">Il Franchetti nella vita di Mestre</p>
<li><a href="territorio.php">Il territorio</a></li>
<li><a href="risposte.php">Le risposte del Franchetti</a></li>
<li><a href="utenza.php">L'utenza attuale</a></li>
<p class="rightmenu">L'organigramma del Franchetti</p>
<li><a href="organigramma.php">Organigramma</a></li>
</ul>
</div>
EOD;
};
?>

<?php
function menu_progetti () {
echo
<<<EOD
<div id="rightmenu">
<ul>
<li><a href="referenti.php" title="Referenti ai progetti">Referenti ai progetti</a></li>
<li><a href="ecdl/ecdl.php" title="patente europea del computer">ECDL</a></li>
<li><a href="australia/australia.php" title="Scambio con l'Australia">Scambio con l'Australia</a></li>
<li><a href="statiuniti/statiuniti.php" title="Scambio con gli Stati Uniti)">Scambio con gli Stati Uniti</a></li>
</ul>
</div>
EOD;
};
?>

<?php
function footer () {
echo
<<<EOD
<div id="footer">© Liceo Ginnasio Statale &#171;Raimondo Franchetti&#187; - 2008</div>
</div>
</body>
</html>
EOD;
};
?>
e quinci creo il file index.php

Codice: Seleziona tutto

<?php
require "http://samiel.netsons.org/functions.php";
?>

<?php
head ();
?>

<?php
firstpagecss ();
?>

<?php
headers ();
?>

<div id="content">
<img class="picright" src="pics/portone.jpg" alt="Portone Franchetti" title="Portone Franchetti"/>
<p class="blockquote">Un classico non ha mai finito di dire <br />
quello che ha da dire</p>
<p class="blockquote">Italo Calvino</p>
</div>

<?php
leftmenu ();
?>

<?php
footer ();
?>
non si vede più nessuna pagina...

Sconsolatamente...
M.

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: Alla ricerca delle funzioni perdute

Messaggio da samiel »

Ho fatto le 3 ma ne è valsa la pena:
require_once($_SERVER["DOCUMENT_ROOT"]."functions.php");

:-)
M.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Alla ricerca delle funzioni perdute

Messaggio da conraid »

Intanto non capisco perché tutte quelle aperture di sezioni php
Se un file è solo php basta <?php all'inizio
E poi non puoi fare require di un file esterno.
Il require lo fai di file inclusi nel tuo path
Il percorso assoluto lo metti nel richiare css per esempio.

Anche se io uso una soluzione diversa, te la posto appena posso

UPDATE: vedo che ci eri arrivato da solo :-)

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Alla ricerca delle funzioni perdute

Messaggio da conraid »

Allora.
Sito con molte sezioni e sottosezioni, fatto anni fa.

Risolsi la cosa facendo così.

header.inc.php

Codice: Seleziona tutto

<?php
if (!isset($path)) {
        $path = "";
}
?>
<style type="text/css"  media="screen">
<!--
@import url(<?=$path;?>css/gb.css);
-->
</style>
  <div class="hidden">Menu di navigazione principale:</div>
  <a href="<?=$path;?>servizi/index.php">SERVIZI</a> |
<a href="<?=$path;?>soluzioni/index.php">SOLUZIONI</a> |
  <a href="<?=$path;?>tecnologie/index.php" >TECNOLOGIE</a> |
  <a href="<?=$path;?>news/index.php">NEWS</a> |
  <a href="<?=$path;?>azienda/index.php">ABOUT</a>&nbsp;
Naturalmente c'era anche altro nel file, ma per farti capire

In ogni file delle sottosezioni all'inizio c'era

Codice: Seleziona tutto

<?php
$path = '../';
include '../include/header.inc.php';
?>
Oppure niente se era nella root

Spero di essermi spiegato.
Per il CSS non preoccuparti, devi mettere i path da dove è lui e non da dove viene richiamato.
Così rimaneva tutto "relativo"

Wordpress per esempio usa delle funzioni che indicano il percorso assoluto di un determinato file, in un modo simile a come hai messo tu. Per esempio

Codice: Seleziona tutto

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
Dove

Codice: Seleziona tutto

<?php bloginfo('stylesheet_url'); ?>
rilascia il percorso assoluto del file css

E ricorda che dentro il CSS puoi usare il percorso "relativo" a quel file CSS, conta dove si trova e non da dove viene chiamato

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: Alla ricerca delle funzioni perdute

Messaggio da samiel »

Grazie per la molto articolata risposta.
Fra oggi e domani vedo di riconsiderare il tutto
alla luce delle tue annotazioni.
Io sto vedendo il Wandschneider, di cui si parla
molto bene, e pur essendomi più utile di altri
testi sul tema, fatico a trovare le soluzioni
che tu mi stai sottoponendo. Ma non c'è
una risorsa precisa e pragmatica su questi temi?
Intendo una risorsa online o cartacea,
oltre a Conraid...

M.

PS
Il fatto è che sto provando a sistemare il sito
della mia scuola. Considera che il suo autore (non io,
quello che in origine lo ha realizzato) usa PHP,
ma, per dire, in un modo tale da essere costretto
a infilare un funzioni.php e un css in ogni dir...........

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Alla ricerca delle funzioni perdute

Messaggio da conraid »

Senti, secondo me no. Devi provarlo sulla tua pelle.
Comunque l'unico libro che ho trovato fatto bene è quello che non hai preso :-)
Ma anche quello da info generiche.
Guarda il codice di progetti "famosi" per questo.

Avatar utente
puzuma
Linux 2.x
Linux 2.x
Messaggi: 482
Iscritto il: mar 4 lug 2006, 17:14
Nome Cognome: Stefano Salvador
Slackware: current
Kernel: 2.6.32.2
Desktop: KDE 4.4.0
Località: Udine
Contatta:

Re: Alla ricerca delle funzioni perdute

Messaggio da puzuma »

samiel ha scritto:

Codice: Seleziona tutto

<link rel="stylesheet" type="text/css" href="layout.css" />
C'è una soluzione più economica e funzionale che copiare il .css in ogni dir?
scusa ma perchè non usare un path assoluto tipo:

Codice: Seleziona tutto

<link rel="stylesheet" type="text/css" href="/stylesheets/layout.css" />
dove sostituisci stylesheets con la directory a partire dalla document root dove hai piazzato i tuoi stili, non occorre che metti anche l'intero host dentro l'href.

di solito questo è il sistema standard di linkare gli stili, con i path relativi ne esci matto.

Poi secondo me devi rivedere i tuoi piani di apprendimento, prima di cercare qualcosa di pragmatico devi assolutamente conoscere un po' di teoria "astratta", tipo com'è fatta una richiesta http, che differenza c'è con ftp, almeno una base di programmazione partendo da esempi semplici. Non dico di leggerti gli RFC (non l'ho fatto neanch'io) ma in rete ci sono siti che lo spiegano in 2 pagine.
Non puoi sperare che i libri o le guide ti risolvano i tuoi problemi specifici perché sono troppo varie le possibiltà che offre un linguaggio come il php. Spesso identici risultati si ottengono con approcci profondamente diversi, se ti rivedi l'altro thread per un problema avevi almeno 3 soluzioni completamente diverse il cui unico criterio di scelta possibile è il gusto personale.
The quiet ones are the ones who change the world. The loud ones only take the credit.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Alla ricerca delle funzioni perdute

Messaggio da conraid »

puzuma ha scritto: scusa ma perchè non usare un path assoluto tipo:

Codice: Seleziona tutto

<link rel="stylesheet" type="text/css" href="/stylesheets/layout.css" />
Ti rispondo nel mio caso: perché in locale non funziona in questo modo. Ed ho bisogno di far si che mi funzioni sempre in egual modo

Rispondi