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.
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 »

conraid ha scritto: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
Per locale intendi guardando il file direttamente da hard disk senza usare il web server? in questo caso effettivamente la pagina non trova i css, però se usi php per costriure le pagine difficilmente puoi fare a meno del web server per vedere le pagine.
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:
conraid ha scritto: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
Per locale intendi guardando il file direttamente da hard disk senza usare il web server? in questo caso effettivamente la pagina non trova i css, però se usi php per costriure le pagine difficilmente puoi fare a meno del web server per vedere le pagine.
No, intendo con webserver ma in localhost
se metto un / davanti a tutto diventa il path di root. E senza virtual server, etc... è difficile.
Io uso una dir e tutto in sottodir.
Quindi un sito che va per esempio in http://www.slacky.eu nel mio pc sarà http://localhost/slacky
E quindi come puo capire se metto /path lui poi sballa perché cerca il file nella dir htdocs e non htdocs/slacky

Spero di essermi spiegato :-(

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 »

Comunque l'unico libro che ho trovato fatto bene è quello che non hai preso
Azz... e sarebbe?

Dopo cena vedo se riesco a sperimentare un poco...

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:
Comunque l'unico libro che ho trovato fatto bene è quello che non hai preso
Azz... e sarebbe?
Sviluppare applicazioni web con PHP e MySQL, di Mark Wandschneider, Apogeo

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, sopra ho appunto detto che lo sto vedendo!
Però questi "trucchi" e queste strategie non è che le racconti...

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

Messaggio da aschenaz »

conraid ha scritto:No, intendo con webserver ma in localhost
se metto un / davanti a tutto diventa il path di root. E senza virtual server, etc... è difficile.
Io uso una dir e tutto in sottodir.
Quindi un sito che va per esempio in http://www.slacky.eu nel mio pc sarà http://localhost/slacky
E quindi come puo capire se metto /path lui poi sballa perché cerca il file nella dir htdocs e non htdocs/slacky
Io uso un sistema molto semplice (come al solito :) ).
Tengo un file di configurazione in cui definisco i percorsi su delle costanti e lo diversifico tra remoto e locale.
A esempio, il file remoto sarà così:

Codice: Seleziona tutto

define("CONST_URL","http://www.slacky.eu");
define("CONST_PATH","/var/www/htdocs/");
// etc.
Mentre quello locale sarà:

Codice: Seleziona tutto

define("CONST_URL","http://localhost/slacky");
define("CONST_PATH","/home/web/slacky/");
// etc.
Poi includo il file nelle pagine e uso le costanti dove servono...

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:No, sopra ho appunto detto che lo sto vedendo!
Però questi "trucchi" e queste strategie non è che le racconti...

M.
Ricordavo da un precedente post che non l'avevi.
Comunque altro modo è quello indicato un tempo da aschenaz ed altri. Un index.php che richiama altri contenuti. IMHO va contro la semplicità in una situazione poco PHP e per scopi di indicizizzazione, ma è una delle soluzioni al problema che hai incontrato

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

Messaggio da aschenaz »

conraid ha scritto:...IMHO va contro la semplicità in una situazione poco PHP...
In che senso?

Guarda che sono milioni i siti che usano quel sistema, che, in un cero senso, è più economico di quello che usi tu...

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 »

aschenaz ha scritto:
conraid ha scritto:...IMHO va contro la semplicità in una situazione poco PHP...
In che senso?

Guarda che sono milioni i siti che usano quel sistema, che, in un cero senso, è più economico di quello che usi tu...
Per "poco PHP" intendo dove il PHP è usato alla stregua di SSI per esempio.
Cioè un aiuto a non ripetere codice ed usarlo per qualche include con qualche variabile e poco più. Insomma tutto XHTML+CSS e qualcosa di PHP per aiutarti nell'aggiornare e nel non ripetere pezzi di codice.
In una situazione simile usare funzioni, richiami, etc non so quanto sia indicato. Perché quegli utenti lo usano solamente per includere qualcosa.

Diverso dove sviluppo delle applicazioni in PHP.

Tutto qui e tutto IMHO

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

Messaggio da aschenaz »

Beh, io ho fatto (tra le altre cose) un intero cms operativo per la mia intranet (166 file, di cui solo la classe principale sono 1300 righe di codice ed un db mysql di 64 tabelle), gestendolo con l'OOP php e non credo di essermi limitato a quello che dici tu. Se può interessare, lo trovi qui: http://ninobi.altervista.org/index.php?page=isis

In ogni caso, l'inclusione che uso io è molto simile a quella che usi tu, solo che io sono abituato a questa e la trovo molto semplice e lineare...

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 »

Allora... ho sistemato riferimenti e funzioni. Tutto sembre funzionare egregiamente
e in effetti rispetto all'originale c'è molto più ordine e il risparmio di codice inutile.
Da ogni pagina ci si linka correttamente alle altre con semplice file delle funzioni.
Il guaio arriva quando ho cercato di servirmi nuovamente della vecchia soluzione
per creare l'effetto activelink. Vi posto un esempio di codice (che non funziona);
si tratta di un menu di una delle sezioni.
Questo in functions.php:

Codice: Seleziona tutto

function menu_chisiamo () {
echo
<<<EOD
<div id="rightmenu">
  <ul>
    <li><a href="./chisiamo.php" <?php if (ereg ("chisiamo.php", $_SERVER["PHP_SELF"])) echo 'id="activelink_r"';?>>Chi siamo</a></li>
  <p class="rightmenu">La nostra storia</p>
    <li><a href="./inizi.php" <?php if (ereg ("inizi.php", $_SERVER["PHP_SELF"])) echo 'id="activelink_r"';?>>Le nostre letture</a></li>
    <li><a href="./intitolazione.php" <?php if (ereg ("intitolazione.php", $_SERVER['PHP_SELF'])) echo 'id="activelink_r"';?>>L'intitolazione</a></li>
    <li><a href="./inaugurazione.php" <?php if (ereg ("inaugurazione.php", $_SERVER['PHP_SELF'])) echo 'id="activelink_r"';?>>L'inaugurazione</a></li>
    <li><a href="./autonomia.php" <?php if (ereg ("autonomia.php", $_SERVER['PHP_SELF'])) echo 'id="activelink_r"';?>>L'autonomia</a></li>
    <li><a href="./guerra.php" <?php if (ereg ("guerra.php", $_SERVER['PHP_SELF'])) echo 'id="activelink_r"';?>>Guerra e dopoguerra</a></li>
  <p class="rightmenu">Il Franchetti nella vita di Mestre</p>
    <li><a href="./territorio.php" <?php if (ereg ("territorio.php", $_SERVER['PHP_SELF'])) echo 'id="activelink_r"';?>>Il territorio</a></li>
    <li><a href="./risposte.php" <?php if (ereg ("risposte.php", $_SERVER['PHP_SELF'])) echo 'id="activelink_r"';?>>Le risposte del Franchetti</a></li>
    <li><a href="./utenza.php" <?php if (ereg ("utenza.php", $_SERVER['PHP_SELF'])) echo 'id="activelink_r"';?>>L'utenza attuale</a></li>
  <p class="rightmenu">L'organigramma del Franchetti</p>
    <li><a href="./organigramma.php" <?php if (ereg ("organigramma.php", $_SERVER['PHP_SELF'])) echo 'id="activelink_r"';?>>L'organigramma del Franchetti</a></li>
  </ul>
</div>
EOD;
};
e, nella homepage di questa sezione ho messo:

Codice: Seleziona tutto

<?php
$pagina = 'chisiamo.php';
$path = '../';
require_once($_SERVER["DOCUMENT_ROOT"]."functions.php");
head ();
headers ();
?>

<div id="content">
<h2>Chi siamo</h2>
......
La funzione menu_chisiamo vi apparirà come un'ignobile accrocchio
di php e html e in effetti...

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 »

PS
Se date un'occhiata al sito, è provvisoriamente caricato qui:
http://samiel.netsons.org/
Sono validi quasi tutti i link in "Chi siamo" e quello in "Progetti"
relativo allo scambio con gli USA (con immagini).
Così magari mi date anche qualche consiglio tecnico-estetico
(con IE 6 ho delle difficoltà di visualizzazione, ma mi ci applico
una volta definita meglio la struttura).

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

Messaggio da aschenaz »

Hannibal Lecter (Thomas Harris) ha scritto:Prima regola Clarice: semplicità!
Secondo me, non è indispensabile ricorrere a delle funzioni se non è produttivo: se un'operazione la devi ripetere, allora è opportuno farlo (ma meglio se organizzate in classi). Nel tuo caso, perché non inserisci quel codice direttamente nella pagina? E poi, perché non lo organizzi in forma di array, senza dover ripetere la stessa riga per ogni pagina?

Comunque, ora vado al lavoro. Più tardi ci do un'altra occhiata...

EDIT:
Col sistema che hai usato ti sei complicato inutilmente la vita (IMHO). Fammi capire: ogni pagina sta in una sua sottocartella e ogni pagina include header, footer, menu, etc.? Col sistema che ti suggerivo io, bastava creare una index completa di tutto, con le pagine interne composte solo del contenuto specifico, messe tutte in una sola sotto-directory e richiamate col menu fatto da un semplice array. Io ci ho fatto decine di siti così e non ho mai avuto un problema.
Pregi: scrivi meno codice, ripeti poche cose, corri meno rischi di sbagliare, non hai i problemi di percorso che segnali qui, il tutto è più ordinato.
Difetti: ... boh!? Ditemeli voi...

Guarda, ad esempio, la porzione di codice che hai postato qui: hai ripetuto la stessa stringa 10 volte. A parte il fatto che è anti-economico, se devi cambiare qualcosa, la devi cambiare 10 volte!

Il fatto, poi, di scrivere un heredoc con chiamate al php al suo interno... Sinceramente, pensavo non funzionasse neanche.

Se vuoi ascoltare il mio parere, Samiel, riorganizza il sito come suggerisco nel mio mini-tutorial (che, appena trovo un po' di tempo, conto di proseguire...) e vedrai che tutto ti sembrerà più semplice. Tu sei un insegnante e sai che, spesso, il più grave errore degli studenti è quello di imparare le parole, non i concetti. Secondo me, hai affrontato il php col piede sbagliato: ti sei riempito di tomi, quando sarebbe bastato cominciare subito a scrivere del codice, magari sbagliando, ma imparando dagli errori, appoggiandoti al manuale ufficiale (completissimo) e seguendo qualche semplice tutorial. L'importante è sapere cosa si vuole ottenere da uno script; il php, poi, ti offre molteplici soluzioni e sta a te decidere quale usare.

Ho visitato il sito con IE 6: a parte piccoli ritocchi nel css (ricordati di non usare mai il padding, perché IE lo esclude dalla dimensione del blocco, mentre lo standard dice il contrario), il problema principale sta proprio nel percorso delle immagini, che IE non vede...

Scusami Samiel per il tono di questo post, non voglio sembrare supponente: non lo sono; sono pienamente cosciente dei miei limiti. Ma non mi va che ti perdi dietro ad inutili complicazioni...

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 »

Ti posto l'esempio di una pagina completa:

Codice: Seleziona tutto

<?php
$path = '../';
require_once($_SERVER["DOCUMENT_ROOT"]."functions.php");
head ();
headers ();
?>

<div id="content">
<h1>Chi siamo</h1>
<h2>Chi &#232; Raimondo Franchetti</h2>
<p>Un liceo classico, anzi, un &#171;Regio Ginnasio&#187; esisteva a Mestre dal 1931, come sezione staccata del Regio Liceo Ginnasio &#171;Marco Foscarini&#187; di Venezia.</p>
<p>Pur se indipendente da Venezia dal 1935, il Liceo Classico &#171;Franchetti&#187; segna la sua data di nascita ufficiale il giorno 8 Dicembre 1940, in cui si inaugur&#242; l'edificio in cui la scuola risiede ancora. Si &#232; a pochi mesi dall'entrata in guerra dell'Italia. La scuola fu intitolata al barone Raimondo Franchetti, che si era distinto per la sua viva passione per i viaggi di esplorazione in Africa e in Asia, e che era morto in circostanze misteriose nel 1935, vittima di un incidente aereo.</p>
<p>Nato a Firenze il 30 gennaio 1889, Raimondo Franchetti discendeva da una facoltosa famiglia, che aveva fra i suoi antenati Abramo Franchetti, insignito del titolo di barone per essere stato il costruttore delle prime linee ferroviarie italiane, oltre che uno dei pionieri della bonifica della Maremma e della zona di Caorle.</p>
<p>Comp&#236; spedizioni in Malesia, nell'Indocina, in Annam e infine in Africa, esplorando Sudan, Kenia, Uganda ed Etiopia meridionale. Mor&#236; a pochi chilometri dal Cairo e in molti sospettarono che fosse stato vittima di un attentato, con cui si voleva fermare un uomo che, grazie alle sue esplorazioni, collaborava anche alle mire espansionistiche dell'Italia di allora.</p>
<p>&#200; naturale ricordare il profondo mutamento culturale intercorso dall'inaugurazione del &#171;Franchetti&#187; ad oggi.</p>
<p>Negli anni della ricostruzione e del boom economico, segnati da un forte desiderio di riscatto sociale e culturale, i giovani di Mestre trovarono nel &#171;Franchetti&#187; la via maestra agli studi universitari; il liceo favor&igrave; la crescita di quei valori forti di formazione intellettuale e di partecipazione civile che,
anche attraverso serie tensioni, hanno accompagnato la citt&#224; nel suo sviluppo.</p>
<p>Nonostante il ruolo della scuola e dell'istruzione siano profondamente cambiati, il &#171;Franchetti&#187; continua a riconoscere la necessit&#224; di uno sviluppo armonioso della personalit&#224; e l'importanza del valore della cultura come base comune della civilt&#224;.</p>
</div>

<?php
leftmenu ();
menu_chisiamo ();
footer ();
?>
Dici che si può fare in forma ancora più breve?
Le varie parti header, footers e menu vari stanno in un'altra pagina chiamata functions.php.
Basta cambiare in function ad es il menu orizzontale e tutte le pagine riportano la modifica.
Per le immagini, adesso vedo di sistemare.
Poi c'è il problema dell'active linl cui accennavo nel post sopra.
Ma ogni osservazione è la benvenuta!

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

Messaggio da aschenaz »

samiel ha scritto:...Dici che si può fare in forma ancora più breve?...
Certo. Quantomeno non devi ripetere quelle inclusioni in ogni pagina e non hai bisogno di work-around per i percorsi.

Praticamente, in questo caso la pagina "chi siamo" conterrebbe solo il codice html (ma può contenere tranquillamente anche codice php) e non ci sarebbe bisogno di inserirla in una sua directory (puoi metterle tutte in una sotto-directory).

Guarda il tutorial: c'è spiegato tutto, anche il discorso sugli active-link.

Ciao,
nino

Rispondi