Newsgroup: it.comp.www.php
Titolo: F5 = Aggiorna

Ecco il mio piccolo problema (premetto che, al momento, ho trovato un 
rimedio di comodo):
Nella pagina A inserisco dei dati
La pagina A chiama la pagina B
La pagina B inserisce i dati pervenuti con POST in un archivio.
Se l'utente, dopo aver visualizzato la pagina B chiude....tutto a posto.
Se l'utente aggiorna la pagina B (F5) la pagina crea un altro record 
nell'archivio.
Come posso impedire questa nuova scrittura?
P.S.
Considerato che
1) uno dei campi che invio con il metodo POST è il giorno...
2) che subito dopo avviene il controllo ($_POST[giorno] deve avere una 
lunghezza 2)
alla fine dei calcoli della pagina B ho inserito $_POST[giorno]=0;
pensando che, dopo aver aggiornato la pagina B, giunto al controllo ed 
accorgendosi che il campo adesso ha una lunghezza 1, il programma 
invalidasse l'inserimento.
Invece...diciamo che se ne frega e crea un altro record nel file
-- 
-----------------------------------
Distinti saluti,
Salvatore Paci
www.salvatorepaci.it
es...Cogito, ergo sum

 Come posso impedire questa nuova scrittura?
Nella pagina A inserisco dei dati
La pagina A chiama la pagina B
La pagina B inserisce i dati pervenuti con POST in un archivio
La pagina B chiama la pagina C
La pagina C non fa una mazza
;-)
-- 
シ  I miei due cents  렌

 La pagina C non fa una mazza
----
si tratta proprio della soluzione di comodo di cui parlavo...
:D 

Partendo dalla pagina A-1: apri la pagina A (quella contenente il form)
in una popup tramite javascript:
PAGINA A - 1
* intestazione
<script type="text/javascript">
 <!--
     function popup() {
		window.open('pagina A.php', '', 'top=10, left=10, width=1000,
height=700, status=no, menubar=no, toolbar=no scrollbar=no');
		}
-->
		</script>
* con un link così nel body:
<a href="javascript:popup()">PAGINA A</a>.
ALL'INTERNO DELLA POPUP
Pagina A
L'utente compila il form nella pagina A. Se fa reload nessun problema.
Preme submit.
All'interno della popup si carica la pagina B che scrive il record, ma
all'interno della stessa scrivi:
<meta http-equiv="Refresh" content="3; url=javascript:window.close();">
I dati sono stati salvati, questa pagina si chiuderà entro 3 secondi.
Note:
(1) nella funzione popup puoi modificare le dimensioni della finestra e
se visualizzare toolbars, la barra dei menu o le barre di scroll. Io ho
messo no, ma puoi settare tu.
(2) nella refresh io ho scritto 3 secondi ma possono essere 1 o 10, fai
tu.
In questo modo nessuno si ferma nella pagina B e non ci sono pericoli
che vi ritorni premendo il tasto Indietro del browser.
Spero di esserti stato utile.
Buon lavoro!

 rimedio di comodo):
Tutte le pagine che danno un insert nel db ti conviene non farle mai dare 
alcun output.
A= form
B= insert
C= conferma
A->B
**script B**
$sql= "insert ecc. ecc.";
if(mysq_query($sql)) {
    header("location:C.php?op=operazione+completata");
}
else {
    header("location:C.php?op=errore");
}
*****
Con questo metodo non B non apparirą neanche nella cronologia.
ciao,
Luca(riello) 

 ha scritto nel messaggio 
news:1163417122.9...@k70g2000cwa.googlegroups.com...
Partendo dalla pagina A-1: apri la pagina A (quella contenente il form)
Grazie mille!
Ho seguito il tuo consiglio: è perfetto! 

 *****
Lavoro con i file di testo. Non so se è lo stesso... 

A me avevano dato una risposta cosě e mi pare funzioni...
Nella pagina che fa la chiamata metti un:
$_SESSION['no'] = 1;
Nella pagina che riceve i dati:
if($_SESSION['no'] ==1){
codice da eseguire
$_SESSION['no'] = 2;
}else{
echo "devi ricompila' i dati";
}

 Lavoro con i file di testo. Non so se č lo stesso...
La chiave č la funzione header("location:url");
;)
ciao,
Luca(riello)

 Luca(riello)
entro in questo forum mentre mi scappero due secondi e nel forum php
cosa leggo?????
fai il girotondo con pagine e poi chiudi il browser...  ma dove siamo
all'oratorio?
i l'ho fatto e ne sono fiero perche' so programmare e mi e' stato
veramente immediato trovare una soluzione efficiente!
e quando inserisco i dati con un form, do' ok e poi clicco indietro non
mi fa ne doppioni, ne post data tutto liscio come l'olio. Eheheh eh ed
e' semplicissimo....  ma non te lo dico :p

all'oratorio?
eh?

 e' semplicissimo....  ma non te lo dico :p
NO COMMENT!

 ma non te lo dico :p
Allora sei inutile in questo ng. :-)
rob4you


sicuramente... dato che si riferirą probabilmente a soluzioni tipo AJAX.
Certo se il browser non lo supporta sono affari suoi :D
ciao,
Luca(riello) 

 Luca(riello)
no ma visto che mi sto scaccolando pure ora posso consumarmi le mani a
rispondere a voi scervellati!
e' semplice:
metti una variabile time() in un hidden value del form
questa viene chekkata nel momento in cui passi i dati
se e' differente dalla sua copia $_SESSION che viene aggiornata ogni
volta che carichi la pagina significa che quel fottuto form e' scaduto
e che l'utonto sta ricaricando erroneamente la pagina o peggio tornando
indietro a casaccio!1!! quando la pagina scade  bypassi il send del
form...
pensare che potevate arrivarci... doohh...  spero che facciate anche
vuoi buone azioni aiutando qualcun altro :P
XD - D j   S y N k o -  - --> Remember my name....

 Luca(riello)
AJAX ???   prova il mastrolindo che esce pure il nanetto che ti aiuta

Caro SyNko, potresti anche essere il dio del php o della
programmazione,
per quel che mi riguarda in Google Gruppi non c'è post (ah ah... che
battutona!) per l'arroganza e la presunzione che paventi.
Se hai voglia di fornire alternative senza tirartela ma condividendo
ben venga, se no vai a stronzeggiare da un'altra parte, cosa ne dici?
Volevi dei complimenti?

Al3xw ha scritto:

mi fa semplicemente inorridire pensare che c'e' gente che da soluzioni
troppo affretate e improprie quando se cerchi in google due minuti
trovi quello che stai chiedendo senza scassare a nessuno. Casomai se
non riesci dovresti postare un post per chiedere come fare a definire
le parole chiavi e la ricerca. no?

Caro SyNko,
Please do not feed the troll
http://en.wikipedia.org/wiki/Internet_troll
ciao,
Luca(riello) 

Luca(riello) ha scritto:

siisi. il troll che pero' ti ha fornito la soluzione migliore al
problema. Bravo bravo

 problema.
A dir la verità più che fornire LA soluzione al problema, hai fornito la TUA 
soluzione al problema, che non necessariamente è la migliore, visto che ti 
basi con un campo hidden (comunque manipolabile). Ah....e ad esser sincero, 
sarà per il tuo modo di "spiegare", non ci ho capito quasi una mazza.....mi 
sa che hai postato con codifica "KOI8-U Ukrainian"........applicherò una 
trasformazione prima di interpretarla...;-)
rob4you 

rob4you ha scritto:

manipolabile
perche' cosi' uno fa lo sbatti di sincronizzare il suo orologio con il
server spaccato al secondo per gabbare una procedura di registrazione
ed inserire un doppione????  ehhhhh???
basta mettere un controllo successivo che filtra il doppione e il
pisciaturo fara' fare un postdata inutile e buttera' via del tempo come
lo sto facendo io a scrivere a voi che non sapete neanche cosa vuol
dire esprimere, ragionare, imparare.
Continuate pure a floodare questi server news di feci ma ricordate che
non ci sara' piu' nessuno serio a rispondere fra un po'...
questa spacca!

rob4you ha scritto:

allora apri bene le tue antennine:
&& ($_SESSION["actual_time"] == $_POST["expired"] )  //controllo da
aggiungere  a dove ce' l'if o lo start della procedura per mandare il
form
piu' sotto poco prima del form vero e proprio ci metti
//time check
$_SESSION["actual_time"] = time();
e poi in aggiunta in ogni form ci metti:
echo "<input type=\"hidden\" name=\"expired\"
value=\"".$_SESSION["actual_time"]."\">ripigliati";
-----------------------------FINE--------------
cosicche' se torni indietro o ricarichi il sistema aggiornera' la
variabile session che nn matchera' + pero' con l'expired contenuto
nell'hidden e che quindi fara' bypassare in automatico in send evitanto
la noiosissima alert che segnala se vuoi rimandare post data.  E che a
voi nooob era meritatissima
e adesso rimangiati le tue parole che meglio, magari le digerisci e
servono a sviluppare qualche enzima nel cervello che ti aiuta a
meditare...

 meditare...
E' arrivato il biologo........d'ora in poi ricorderò: "GLI ENZIMI AIUTANO A 
MEDITARE!".
Ciao dalai lama......la conoscenza, ammesso che conoscenza sia, è totalmente 
INUTILE se sai esprimerti.
Quindi, prima di postare di nuovo:
1) fai un corso accelerato di italiano
2) rivedi le tue idee di programmazione
In seguito io rimangerò molto volentieri le mie parole, e svilupperò gli 
"enzimi per meditare".
rob4you

 MEDITARE!".
e' una metafora permaloso
hai sprecato troppo tempo in parole.
Io cmq faccio i form di inserimento che vanno tutti in una pagina :p
non faccio girotondi
ecco perche' forse nn ci siamo capiti al volo.
mi dovete ringrazia che vi ho aiutato
e' come la mafia costruisce con le parole la realta' fine a se
stessa... vergogna!   
XD  un po' e' pure vero

mi dovete ringrazia che vi ho aiutato
Tralsciando la discussione trolleggiante, e il modo con cui non sono affatto 
convinto funzioni quel codice (l'alert di reinviare i dati dovrebbe comunque 
esserci)...
Non amo mischiare pagine di output con pagine di aggiornamento database in 
un minestrone di php e html.
Se qualcuno dovesse chiedermelo, lo sconsiglierei vivamente... ma ognuno ha 
il suo modo di "programmare".
Inoltre per un semplice form questo metodo usa una sessione che a sua volta 
utilizzerà un cookie (cosa che potrei benissimo bloccare a prescindere) o un 
valore GET per trasmettere l'id. Non mi piace (ammesso che funzioni).
Insomma... l'autore dovrebbe sforzarsi di più per fare lo "script dell'anno" 
:)
ciao,
Luca(riello) 

 :)
ah ah..  la morale e': puoi dire la tua tanto chi dice stupidaggini non
verra' ma scovato e punito. E chi si impegna a dare qualcosa di valido
verra' ostacolato e deriso fino alla nausea.
Doh! fortuna che gioco in multiplayer a tribes vengeance cosi' scarico
le tensioni e non faccio danni ;)
cmq buona fortuna e programmazione!!!
ps= ma come fai a non mischiare mai il php con i tag html? sei malato
:p e' il primo principio di un server page!!!
nn usi nemmeno:
es.
<? PHP
if ($neuroni>20){
?>
<html>
<p>ok sopravvivi</p>
</html>
<?PHP
}
?>
uh?

nn usi nemmeno:
[cut]
Si può ridurre al minimo o evitare completamente costruendoti qualche 
funzione, in un file da includere a parte ad inizio pagina, che automatizza 
il codice html... e ti costruisce il template base.
ciao,
Luca(riello) 

 ecco perche' forse nn ci siamo capiti al volo.
La domanda di Salvatore era chiara......cosě come le risposte degli altri 
che si sono cimentati a rispondere....la tua NO.
Ecco perché TU non hai capito al volo, e non hai contribuito in modo utile 
al ng.
Un controllo in una stessa pagina, richiede non piů di un giorno di 
conoscenza di un linguaggio di programmazione....resta sempre da stabilire 
se il metodo da te proposto funzioni...visto che non sei ancora riuscito a 
spiegare decentemente in cosa consista.
E come ti ha giŕ risposto Luca, dell'utilizzo del time() in campi hidden se 
ne č giŕ parlato diverse volte, se quindi sei contento di aver riscoperto 
l'acqua calda, godi di ciň.
ps: umiltŕ e chiarezza prima di tutto, ancor prima della conoscenza.
rob4you

 ps: umiltà e chiarezza prima di tutto, ancor prima della conoscenza.
guarda che io nella vita sono una persona umile, peccato che poi quando
leggo certe cose forse sbaglio a scrivere in modo aggressivo, ma
qualcosa almeno ho smosso. E non ho semplicemente riempito un altro
topic di cose ovvie e scontate :p

 il codice html... e ti costruisce il template base.
certo come l'head e i menu, chi n lo fa'?  quindi mischiare l'html al
php e' la norma credo, no?
vabbe' dai alla fine ci siamo capiti....
peace love and understanding

 nell'archivio.
Sempre Dio Setec una volta scrisse una funzione per questo scopo:
http://setecastronomy.redirectme.net/index.php?page=functions&type=detail&IDContent=47
prova a darci un'occhiata, non so cosa faccia perché non la ho nemmeno 
letta, ma stando alle premesse, fa esattamente ciò che chiedi. :-)
rob4you
www.outofmind.eu
 

 topic di cose ovvie e scontate :p
Allora...benvenuto tra noi! :-)
ps: Dio Setec aveva scritto anni fa una funzione identica alla tua, una 
goccia più "fine":
http://setecastronomy.redirectme.net/index.php?page=functions&type=detail&IDContent=47
quindi....mi sa che devi dare a lui i diritti d'autore! :-)
rob4you
www.outofmind.eu

php e' la norma credo, no?
none... tabelle, div, forms... puoi tutto automatizzare.
ciao,
Luca(riello) 

> tabelle, div, forms... puoi tutto automatizzare.
Luca, in che modo?
rob4you 

 Luca, in che modo?
http://tinyurl.com/y9dfyy
questo per il template di base (all'epoca era comunque da perfezionare, 
l'idea è quella).
poi per ogni tabella, o form o div o lista standard puoi crearti funzioni 
personalizzate, esempio per creare un box con un titolo sopra, ti crei la 
funzione in un file da includere (common.php) che gestisce anche il layout 
come sopra detto:
function creabox($titolo,$testo) {
    global $output;
    // $output è la variabile che viene sostituita nel body
    $output.='<div class="titlebox">'.$titolo.'</div>';
    $output.='<div class="box">'.$testo.'</div>';
}
con i css a parte dichiari margini, colori, formattazione testo, e 
dimensioni del box.
e nel file php:
*************
<?php
include("common.php");
creabox("News del giorno","bla bla bla bla bla");
creaTemplate();
?>
*************
3 righe ti fa una pagina senza tag html.
Puoi crearti ogni funzione per fare qualsiasi altra cosa... comodo per i 
menu di navigazione. Le funzioni le scrivi una volta per tutte e puoi usarle 
per qualsiasi altro script.
Ogni costrutto che utilizzi spesso lo puoi automatizzare in questo modo. Per 
gli altri puoi fare lo stesso, oppure concederti di scrivere qualche tag nel 
file php, non muore nessuno. :)
Io mi trovo molto bene... poi... beh .. de gustibus :p
ciao,
Luca(riello)

 letta, ma stando alle premesse, fa esattamente ciò che chiedi. :-)
Dà sempre l'alert per il re-invio dei dati però.
ciao,
Luca(riello) 

 come sopra detto:
Caspita....l'idea mi piace......e pure parecchio! :-)
Certo, si possono sempre fare dei miglioramenti, ma č una bella idea, 
grazie!
rob4you 

 
Allora perchè inventare l'acqua calda? con diverse ore di apprendimento 
si ottengono buoni risultati:
http://pear.php.net/manual/en/package.html.html-quickform.php
	Francesco


Interessante il link....si può fare l'ira di DIO...forse anche troppo! :-)
Ma per caso c'è qualcosa non solo per i form?
rob4you 

 Ma per caso c'è qualcosa non solo per i form?
Dai un occhio a PEAR: c'e' una miriade di classi con un piccolo 
problema: manca la documentazione!
Piccolo consiglio: cerca la classe che ti serve e cerca di implementare 
solo ciò che ti serve (senza voler pretendere troppo), altrimenti spendi 
una vita nello studio delle classi.
	Francesco

 Allora perchè inventare l'acqua calda?
Perché non invento l'acqua calda... me la faccio da me.
Conoscevo già il PEAR e lo sto usando per la gestione database in un 
progetto (ma sinceramente non mi entusiasma granché).
Lo svantaggio è che perdo tempo,ma lo perdo una e una sola volta, a 
costruire! Svantaggio relativo: quello che perdo io a costruire lo perdi tu 
ad imparare cose già fatte o a cercare funzioni che non esistono e non lo 
sai.
Il vantaggio è che so con precisione dove mettere le mani, cosa posso e non 
posso fare. Che se ho bisogno di qualcosa, che le classi pear possono non 
avere, so come costruirlo.
Il fatto di appoggiarsi alla conoscenza dei predecessori è ciò che ha reso e 
rende l'umanità sempre più ricca, è vero. Ma non stiamo parlando di scoperte 
e di teorie.
Stiamo parlando di prodotti... sarebbe come dire all'AlfaRomeo: "Che le fai 
a fare le automobili? Le fa già la Mercedes".
Non ritengo questo modo di pensare condivisibile...
ma è il mio :)
ciao,
Luca(riello) 

 sai.
La mia era una risposta a Roby indicavo, se non lo conosceva, un 
repository di package.
<Opinione personale>
Sono sicuro che scrivendo una classe da te impari molto, ma questo 
spesso e volentieri non è sempre possibile.
Ognuno è libero di utilizzare la classe/package che vuole, la mia era 
solo un'indicazione su una libreria contenente tantissimi oggetti (altri 
utili, altri meno), ben mantenuta ma sfortunatamente poco documentata.
A questo punto si potrebbe parlare di framework e tutto quello che 
esiste di "alto" livello per rendere la programmazione più snella e 
veloce (e diciamoci la verità anche più sicura, visto che le tali 
pacchetti vengono testati da n persone, rispetto ad una classe fatta e 
utilizzata in proprio)
Bada bene, non critico assolutamente il fatto che ti sei scritto una 
classe da te, ma se una persona ha una *buona* conoscenza del linguaggio 
di programmazione (in questo caso php) utilizzare classi/framework seri 
(non lo script scritto dal "cugino" con i piedi) è formativo: ovviamente 
la devi spulciare e studiare, non leggere le due righe di faq e tirarla su.
</Opinione personale>
	Francesco

rob4you ha scritto:

ma lui e' molto piu' malato, ha pure codificato in md5!!

 }
Mi è venuto un dubbio: ma se successivamente voglio aggiungere un altro 
elemento (esempio un altro div, o roba simile) all'interno del div appena 
creato, dovrei lavorare sull'inserimento di figli, con espressioni regolari, 
o xml, giusto?
rob4you
www.outofmind.eu
 

 regolari, o xml, giusto?
Non ho capito cosa intendi... comunque nel testo puoi inserire l'html. 
Oppure puoi crearti un'altra funzione che dia il div che vuoi come ritorno. 
Insomma ti ho dato l'idea... poi te la devi sviluppare tu come meglio credi 
e assecondando le tue esigenze :p
ciao,
Luca(riello) 

> Non ho capito cosa intendi...
Si certo, è chiaro che si può inserire l'html nel testo, ma miriferivo a 
un'altra cosa.
Ti spiego (o almeno cerco :-) ) con un esempio:
- creo un div con la funzione createDIV($testo), funzione creata in 
precedenza, e inserisco come contenuto del div (cioè la stringa $testo), una 
cosa tipo:
"questo è il contenuto di questo div. <div>e già che ci sono inserisco pure 
un altro div</div>"
Così facendo ho quindi una stringa di $output bell'e fatta contenente il mio 
div, con il suo contenuto;
- se io adesso volessi successivamente, in un altro punto del codice php, 
inserire un altro div, potrei come sempre richiamare la funzione 
createDIV($testo) e inserire il contenuto che voglio, ad esempio "questo è 
il contenuto del secondo div.".
Così facendo la variabile $output adesso conterrà una stringa contenente una 
cosa tipo:
"<div>questo è il contenuto di questo div. <div>e già che ci sono inserisco 
pure un altro div</div></div><div>questo è il contenuto del secondo 
div.</div>"
Bene, se io invece volessi inserire, a posteriori, l'ultimo div INTERNAMENTE 
al primo, magari in coda, ma pur sempre internamente, come dovrei fare? Se 
volessi cioè ottenere:
"<div>questo è il contenuto di questo div. <div>e già che ci sono inserisco 
pure un altro div</div><div>questo è il contenuto del secondo 
div.</div></div>"
come dovrei operare? Nei modi che ho elencato nel precedente mex?
Non so se mi son spiegato, in pratica io vorrei poter scrivere tutto il 
codice html/testo/ecc. che voglio, ma non tutto in una botta, e non in 
ordine sequenziale, magari potendo annidare i div a mio piacimento, e non 
solo poterne fare l'append alla stringa $output ogni volta che chiamo la 
funzione createDIV.
rob4you 

 funzione createDIV.
Usa le funzioni DOM.
(Scusate se le pubblicizzo sempre, ma me ne sono praticamente innamorato :)
Bye.

 funzione createDIV.
Beh il problema si pone ugualmente con le funzioni echo e print! Se l'hai 
risolto con quelle, lo risolvi pure con createDiv.
Sinceramente non capisco in quale caso ti possa servire... perché io uso le 
funzioni di output eslcusivamente per il blocco centrale dove va il testo. 
Per il resto (menu, header, footer, opzioni... insomma blocchi in cui la 
posizione è fissa nel layout) uso altre funzioni che riempiono altre 
variabili del template. In questo caso posso riempire il menu quando voglio.
Se proprio ne hai bisogno... tieni presente che tu riempi la variabile 
$output, se vuoi inserire in mezzo ad essa altro testo devi trattare questa 
variabile... lo puoi fare contando i numeri dei div e inserire dopo il 2o o 
3o div l'altro contenuto. Ma non so quanto possa convenire.
ciao,
Luca(riello) 

 :)
Si ci avevo pensato in effetti....mi sa che me ne innamorerò presto anche 
io. ;-)
rob4you 

 il 2o o 3o div l'altro contenuto. Ma non so quanto possa convenire.
Infatti...a questo punto, mi conviene utilizzare il DOM come diceva 
Alessandro, magari assegnango ai div creati un id, così sono anche legato a 
sforzarmi di creare documenti xhtml :-).
rob4you 

 a sforzarmi di creare documenti xhtml :-).
Puoi anche farti due funzioni: una che apre un div e l'altra che lo chiude:
startDiv(); // inserisce il <div>
// ci metti l'output che vuoi
endDiv(); // chiude con </div>
Ma non so... sinceramente lo trovo inutile :p
ciao,
Luca(riello) 

 endDiv(); // chiude con </div>
Ci avevo pensato, ma ovviamente crea altri problemi, e cioè mi devo 
ricordare di chiudere tutti i tag aperti....mi sa che non è cosa. :-)
Meglio fare come fai tu, in una botta, o al limite, chiedere al signor DOM 
un aiuto. ;-)
rob4you

E usare un array??
Lo indicizzi e ci metti i tuoi pezzi di div...
O ancora meglio per il tuo scopo...
Fai una classe con un metodo di inizio che apre il tag, metodi di
inserimento del contenuto e metodo finale di chiusura tag. Il metodo
finale deve contare i tag aperti e chiuderli pedestramente (o più
finemente in base a dove trova un inizio tag). Tu inizializzi la classe
nel tuo script, chiami varie volte i metodi di inserimento e alla fine
chiami il metodo di chiusura...
rob4you , in data 17/11/2006 00:21 :


Ficco il mio naso anche qui :p
@SyNko
Magari il tuo metodo è relativamente semplice da fare...ma se fai così
per ogni pezzo di codice che scrivi...quando fai debugging o devi fare
cambiamenti nelle funzioni diventi scemo alla lunga...magari anzi,
peggio ancora, hai la stessa funzione identica o con poche variazioni in
più parti del tuo codice (più pagine) perchè "è più facile scrivere
tutto insieme"...dai retta...se puoi separare il codice il blocchi (e
quindi pagine per così dire) logici (tipo come con le classi e gli
oggetti nella programmazione OO) è decisamente meglio...impieghi più
tempo all'inizio per fare il codice in modo "corretto" e funzionante, ma
se devi debuggare o ampliare o modificare ci metti moooooolto meno che
se hai tutto insieme
(ovviamente parlo da programmatore OO)
SyNko , in data 15/11/2006 11:50 :


> Magari il tuo metodo è relativamente semplice da fare...
Scusami, ma non ho capito una cosa: a che metodo ti riferisci? :-)
rob4you

 chiami il metodo di chiusura...
L'idea non è cattiva, ma mi vengono alcuni dubbi in merito.
- chiamo il metodo di inizio che apre il primo tag (esempio un "div")
- poi chiamo il metodo di inserimento che inserisce del contenuto 
(esempio del semplice testo: "prova")
- chiamo ancora il metodo di inserimento che inserisce del contenuto 
(questa volta, voglio inserire un "div", cosa faccio, lo inserisco "a 
mano" o nuovamente con il metodo di inizio?)
- se adesso chiamo il metodo di fine, come posso decidere se devo 
chiudere solo l'ultimo "div" inserito o entrambi?
Come sempre un esempio è ben accetto. ;-)

Usare un array nel senso che nell'array metti tutti i div che ti pare e
poi cicli e lo sputi nell'output...liscio in ordine o manipolandolo con
degli indici.
Quello della classe invece intendo...
metodo iniziale crea un div, chiami metodo che inserisce il testo,
metodo di inizio, testo, metodo, testo....metodo di fine.
esempio
class pippo{
function inizio(){
scrive "div"
}
function testo(){
scrive il testo
}
function fine(){
cicla e chiude i div
}
}
Il ciclo lo puoi fare o intercettando un <div> (escluso il primo) e
anteponendo un </div> in modo da chiudere ogni blocco DIV e farlo
risultare a se stante (<div>testo</div><div>testo 2</div>...) oppure
chiudendo in sequenza (<div>testo<div>testo 2<div>testo 3</div></div></div>)
oppure
function scrivi_div($testo, $fine){
$this->output .= "<div>" . $testo;
if ($fine){
$this->output .= "</div>";
}
}
così puoi decidere se chiuderlo o meno subito e fai una funzione in
meno, evitandoti di ricordarti di aprire il DIV con chiamate a
funzione.Con un minimo di tuning lo rendi intelligente e puoi scegliere
se aprire e chiudere a tuo piacimento...
rob4you , in data 17/11/2006 11:02 :


 (ovviamente parlo da programmatore OO)
certo era quello che dicevo io, poi pero' mischi quando vai a fare lo
specifico della pagina che non puoi generalizzare con funzioni...
nonostante il css ti aiuta abbastanza ;)

 


 facilissimo...e molto semplice da implementare e manutenere ;)
In che senso in alcune "pagine" una cosa e in altre un'altra cosa?
rob4you

:o
Una pagina ci metti le funzioni di logica (una o più pagine) che
ovviamente chiami con gli include, un'altra la struttura del sito
(sempre come classi se preferisci) che sono quelle che ti daranno
l'output o che comunque formattano l'output generato dalla logica (la
logica ovviamente costruisce pezzi piccoli di parti)
Serve un esempio??
rob4you , in data 18/11/2006 01:00 :


Esempio.
Pagina di logica
#mainclass è una classe "super" generica che si occupa di molte cosine
tipo variabili di sessione e altro...non è importante per ora COSA fa
esattamente.
.....
#caricamento del tempalte HTML
$this->mainclass->load_template('skin_main');
....
#varie elaborazioni per recuperare ad esempio i dati da visualizzare
...
$this->mainclass->compiled_templates['skin_main']->shop_item_row($cur_row);
Pagina del template
function shop_item_row($rows="") {
$HTML = "";
//--starthtml--//
$HTML .= <<<EOF
<table class="class" width="100%">
	<b>{$rows[1]}</b>{$rows[2]}
</table>
EOF;
//--endhtml--//
return $HTML;
}
ovviamente la super-classe deve occuparsi di caricare il template e di
metterlo in qualche variabile (in questo caso in un array
compiled_templates[] e ovviamente ogni pagina di logica deve caricarsi
la super classe inizializzata e manipoalre le sue variabili (come
appunto compiled_templates[])
Spero di essere chiaro...non voglio riempire il canale con un post da
3000 righe :S
rob4you , in data 18/11/2006 01:00 :


 3000 righe :S
Si, più o meno ho capito ciò che intendi per grandi 
linee....certo...devo giusto riuscire a capire come poter usare 
"sempre" in ogni "progetto" questo sistema.
Grazie di tutti i consigli.
rob4you

 se aprire e chiudere a tuo piacimento...
Si certo, c'è un po' da lavorarci per poter tirarne fuori una cosa ben 
fatta, utile e funzionante, ma l'idea è sicuramente buona. :-)
rob4you