Pagina 1 di 2
PHP-calendario.........brutta bestia[RISOLTO]
Inviato: mar 10 mar 2009, 18:28
da dottor3
Ciao mondo!!!
Eccomi con altri ed entusiasmanti problemi!!!!
Dunque....ho creato un calendario con calendar(PEAR).......lui funziona tranquillo ma la mia classe un pochino meno....
Devo far in modo di mantenere una variabile interna alla classe in modo da poterla usare con gli incrementatori/decrementatori di mesi.......
il codice e' su pastebin
CLASSE :
http://rafb.net/p/m1v4Fp23.htm
UTILIZZATORE :
http://rafb.net/p/3Cgi7H26.html
Datemi una mano tnx!!
PS: gia' vedo spina che i insulta per qualche mia castroneria phpiana

Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 8:56
da targzeta
Ciao dottor3, purtroppo ora sono preso da altri impegni

. Ho notato però che il link al codice della classe ritorna un '404 - NOT FOUND'. In realtà poi non ho neanche capito se ci sono dei problemi.
Spina
Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 12:23
da dottor3
MANCA la L di html.........
http://rafb.net/p/m1v4Fp23.html <------Ora funzia
A parer mio nella classe nn ci sono errori........pero' mi chiedo perche' una volta inizializzata la classe nn mantenga i dati interni......ovvero una volta cambiati da un metodo e salvati come attributo privato il metodo chiamato in un altro mometo nn trova l'attributo cambiato ma originale.......
.....chiarissimo no?

Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 12:27
da targzeta
Posta un esempio (anche scritto a mano qui, senza eseguire realmente) di sequenza di invocazioni, di come si modificano le variabili e di come si sarebbero dovute modificare.
Spina
Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 12:40
da dottor3
allora:
__construct: inizzializza la classe e accetta 2 argomenti ($anno, $mese) e li setta come attributi privati
$this->_anno = $anno;
$this->_mese = $mese;
Crea_calendario crea il calendario usando gli attributi privati come argomenti interni.
mese_avanti prende gli attributi aggiunge 1 al mese, se mese>12 aggiunge 1 all'anno e rimette $this->_mese a 1.
Chiama il metodo Crea_calendario.
mese_indietro uguale a sopra ma al contrario
Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 13:15
da targzeta
E l'errore dov'è? Due invocazioni consecutive di mese_avanti creano due calendari con lo stesso mese?
Spina
Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 13:47
da dottor3
Praticamente quando vado ad uare questa classse in una pagina web il calendario nn avanza per piu' di un mese........
La pagina utilizzatrice la scrivo cosi' (stringo il codice):
Codice: Seleziona tutto
<?php
$oggetto_calendario = new calendario(date('Y'), date('n'));
?>
<body>
<form method='post' action='$PHP_SELF'>
<?php
if(isset($_POST['avanti)){
$oggeto_calendario->mese_avanti();
}
if{isset($_POST['indietro'])){
$oggetto_calendario->mese_indietro();
}
if($_POST="" && $_POST['hid'] == '')
{
echo "<input type='hidden' name='hid' value='true'>";
$oggetto_calendario->crea_calendario();
?>
Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 16:35
da targzeta
A parte che invocare il costruttore all'interno della classe è concettualmente sbagliato, io non posso eseguire il codice che posti perchè mi mancano un bel pò di cose, tra file che includi e presumo un database. Prova a fare sostituire la funzione mese_avanti con:
Codice: Seleziona tutto
public function mese_avanti()
{
echo $this->_mese."-".$this->_anno."<br>";
$this->_mese = $this->_mese +1;
/* if($this->_mese > 12)
{
$this->_anno = $this->_anno +1;
$this->_mese = 1;
echo $this->_mese."-".$this->_anno."<br>";
$this->__construct($this->_anno,$this->_mese);
$this->crea_cal_scad($this->_anno, $this->_mese);
}else{
echo $this->_mese."-".$this->_anno."<br>";
$this->crea_cal_scad($this->_anno, $this->_mese);
}*/
}
e posta il risultato di tre invocazioni consecutive.
Spina
Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 18:10
da dottor3
Il metodo mese_avanti funziona bene.....e nn chiama il costruttore all'interno, prima crea_calendario era un metodo public.....mi sono dimenticato di togliere quella riga
comunque il risultao e' il seguente:
2-2009
3-2009
4-2009
5-2009
Ma il problema nn e' questo.....in poche parole e io inizializzo un oggetto all'inizio di una pagina e utilizzo i suoi metodi public per modificare i vari output........come mai appena premo mese_avanti avanza di 1 e si ferma nonostante riprovi ad avanzare?
Non dovrebbe variare l'attributo PRIVATO della classe ad ogni chiamata dei metodi?..........]b]dubbio[/b]........
......submittando una pagina si crea anche un parziale refresh del codice...right?? e quindi lui reinizializza l'oggetto a quella data...e io rimango sempre li........correggimi se sbaglio.....
Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 18:13
da targzeta
Infatti, dovresti passarti la variabile tra una chiamata e l'altra. Tutte le variabili che crei vengono eliminate dopo che il server ha gestito la richiesta. Se vuoi mantenere uno stato, devi:
- creare una sessione
- mandarti le variabili tramite GET o POST
Spina
Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 18:29
da raffaele181188
dottor3 ha scritto:submittando una pagina si crea anche un parziale refresh del codice...right??
E che vuol dire?! PHP è un motore di scripting. Non esiste nessuna "applicazione" o programma nel senso comune del termine che gira sul server fino a quando qualcuno non richiede un documento php. Quando un client richiede il documento il webserver (opportunamente settato) si accorge che è uno script php, lo manda in pasto a zend e il risultato di quello che fa quest'ultimo viene rispedito al client. Quindi non c'è nessun refresh del codice (che poi che diavolo vorrebbe dire

)
Ogni invocazione di un documento PHP provoca la riesecuzione dello script stesso, e non è possibile far sopravvivere lo script stesso per più del tempo necessario alla sua esecuzione. Una volta che arriva al termine del listato lo script muore, quindi tutte le variabili eccetera non esistono più. Non c'è modo di tenere "vivo" un "programma php" sul server in attesa che il client richieda qualcosa alla stessa pagina. L'unica cosa che puoi fare è salvarti da qualche parte (Emanuele suggeriva sessioni (lato server) e get/post (lato client), in casi particolari puoi pure salvare in un file sul server) i dati (=variabili) che descrivono compiutamente l'oggetto che vuoi ricostruire. Ma si tratta di un oggetto nuovo, un clone di quello di prima e non lo stesso
Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 18:40
da dottor3
Avevo pensato anche io alle sessioni........visto che l'applicazione finale di questo progetto sara' molto piu' ampia avevo pensato di utilizzare una tabella nel DB dell'applicazione ed usarla per mantenere i dati di sessione svuotandola al logout.........che ne pensate??
In questo modo i dati sono influenzati solo quando lo decido io.....avrei piu' controllo......

Re: PHP-calendario.........brutta bestia
Inviato: mer 11 mar 2009, 18:54
da raffaele181188
Credo che dovresti essere un po' più preciso in merito a quello che vuoi fare, ma io comunque non ti seguo tanto...
Le sessioni servono a mantenere i dati tra più richieste della stessa pagina. Sono un "trucco" per dare l'effetto di una applicazione che continua a girare
Le variabili di sessione sono automaticamente salvate da PHP e non so perchè vorresti salvarle pure nel database... per richiamarle basta $_SESSION['nome'] e stai apposto, senza tutta la tiritera di scomodare il database
Re: PHP-calendario.........brutta bestia
Inviato: gio 12 mar 2009, 15:54
da nuitari
Esistono motivi per cui è utile savlare sessioni nel database, anche se non si tratta certo del caso specifico.
Ad esempio, in presenza di un cluster, avere le sessioni nel database permette la distribuzione dell'applicazione con i relativi dati di sessione.
Chiaramente l'utilizzo di un Database come backend per le sessioni comporta problemi ulteriori, come la serializzazione degli accessi.
Non mi sembra però il caso specifico, ti consiglio anch'io di usare le normali funzioni session di php per la gestione su file

Re: PHP-calendario.........brutta bestia
Inviato: gio 12 mar 2009, 18:22
da dottor3
Anche io stamattina ho seguito la presentazione MYSQL per l'utilizzo del DB per quanto riguarda le sessioni....
Infatti il mio pregetto finale deve funzionare per moltissime sessioni continue.........il calendario nn e' alro che una particina....
comunque.....o mi sono rimbambito tutto di un botto o c'e' qualche cosa che nn va.....
Se io registro le var di sessione e poi le modifico nei vari form queste dovrebbero avere il valore dell'ultimo form pasato right?
Allora perche' incrementano solo di 1 e basta???