[PHP] Chat e Scrollbar!
11/07/2011 22:54:29 e modificato da airon il 11/07/2011 22:54:40
wolfkiba94 ha scritto: Sto studiando php e mysql con molta dedizione, preferisco fare una cosa per volta, piano piano crescerò. Questo progetto mi occorre piu per fare esperienza che per avere successo.
Il giorno in cui deciderò di sfondare nel mondo dei gdr a livelli professionali, di sicuro sarò prima reduce da tanti studi, questo gdr è per capire cosa ho imparato fino ad ora ^^.
Ottimo modo, un bel in bocca al lupo ;)
11/07/2011 23:00:39
Grazie tante! Crepi! ^^
12/07/2011 00:51:44 e modificato da ghennadi72 il 12/07/2011 01:08:15
A costo di andare controcorrente, ci sono alcuni elementi dell'html classico considerati 'deprecati' che nell'ambito dei gdr play-by-chat fanno un po' sorridere.
Il frame, iframe o div aggiornato dinamicamente che sia contenente la chat scorrevole non è un contenuto fisso di una pagina consultabile "da fuori".
Ergo vengono meno tutti o quasi i motivi per cui l'uso dei frame é "deprecato": i problemi di accessibilità per chi fa uso di browser per non vedenti/ipovedenti e i problemi di indicizzazione sui motori di ricerca, che ovviamente possono rimandare a contenuti incoerenti e/o difficilmente navigabili, se un sito internet a forte contenuto informativo viene sviluppato facendo un massiccio ricorso ai frame.
Non é proprio il caso di una webchat aggiornata con frequenza continua :-D
Il giorno in cui i produttori di browser e dei motori di rendering si decideranno ad usare tutti un identico boxmodel e un unico DOM, forse si potranno archiviare i frameset e altre features "deprecate" con minori angosce per gli sviluppatori di play-by-chat, senza richiedere l'implementazione di CSS differenziati e codici JS differenziati.. pieni di hacks, di try e di if assolutamente inutili se non come virtuosismo ed esercizio tecnico per lo sviluppatore ma che oggi tocca inserire per forza solo per accontentare i capricci dei diversi produttori e spesso, addirittura, per rispondere alle differenti implementazioni e versioni di uno stesso browser.
Alla fine la domanda é una: ti interessa lavorare nel campo del webdesign? Impara a fare a meno dei frame, armati di pazienza e preparati a implementare hacks differenziati per i css e il codice JS... tempo speso ora, ma tempo guadagnato in futuro.
Intendi mantenerti a un livello amatoriale e imparare quello che ti serve per uno specifico progetto? Fottitene della "deprecation" sui frame e usa quello che ai fatti torna più funzionale per il progetto che vuoi gestire.
Il codice é al tuo servizio, non il contrario.
12/07/2011 01:28:29
L'ultima volta che ho controllato questa era una richiesta di aiuto per una chat a frame, non una discussione filosofica O.o
torniamo on-topic:
Se non sbaglio mi aggiorna la pagina dove sta l'input o.o
eheh, beh insomma io non potevo sapere qual'era il primo frame XD
io ho scritto parent.frame[0] sperando che il frame 0 fosse quello della chat XD
evidentemente non lo è, sarà il frame 1. Allora scriviamo così:
parent.frames[1].location.reload();
12/07/2011 02:27:11
leoblacksoul ha scritto: L'ultima volta che ho controllato questa era una richiesta di aiuto per una chat a frame, non una discussione filosofica O.o
Eheheh non è filosofica é anche pratica. Tremendamente pratica. Ci sono tag e features "deprecate" che sfortunatamente sono dieci volte più comode di quelle consigliate e che possono essere usate senza alcun decremento di prestazioni, e senza "violare" alcuno dei motivi che hanno spinto il W3C a "deprecarle".
Se sei già uno sviluppatore skillato te ne freghi dei vecchi frame. Ma se sei agli inizi e non mediti di lavorare nello stesso campo in cui ti diverti come giocatore, gestore o membro di staff, una valutazione su costi/benefici tocca farla.
Tocca capire se per te è più conveniente scrivere il triplo di codice solo per non essere "deprecato" in un ambito nel quale non sussistono ragioni di deprecazione (il motore di una land NON E' un sito che offe contenuti, non deve necessariamente essere mappabile dai motori di ricerca, non ha il problema di indirizzare male l'utente ipovedente perchè prima del login la parte interna non la "vede") quando alla fine dei conti ai tuoi utenti non cambia assolutamente un tubo.
12/07/2011 11:25:02 e modificato da wolfkiba94 il 12/07/2011 11:35:32
ghennadi72 ha scritto: [quote]leoblacksoul ha scritto: L'ultima volta che ho controllato questa era una richiesta di aiuto per una chat a frame, non una discussione filosofica O.o
Eheheh non è filosofica é anche pratica. Tremendamente pratica. Ci sono tag e features "deprecate" che sfortunatamente sono dieci volte più comode di quelle consigliate e che possono essere usate senza alcun decremento di prestazioni, e senza "violare" alcuno dei motivi che hanno spinto il W3C a "deprecarle".
Se sei già uno sviluppatore skillato te ne freghi dei vecchi frame. Ma se sei agli inizi e non mediti di lavorare nello stesso campo in cui ti diverti come giocatore, gestore o membro di staff, una valutazione su costi/benefici tocca farla.
Tocca capire se per te è più conveniente scrivere il triplo di codice solo per non essere "deprecato" in un ambito nel quale non sussistono ragioni di deprecazione (il motore di una land NON E' un sito che offe contenuti, non deve necessariamente essere mappabile dai motori di ricerca, non ha il problema di indirizzare male l'utente ipovedente perchè prima del login la parte interna non la "vede") quando alla fine dei conti ai tuoi utenti non cambia assolutamente un tubo.
[/quote]
Ti ringrazio per questi consigli, sono utili e importanti, ma già sapevo che il mio sistema avrebbe avuto una struttura datata ma che comunque ho studiato. Sto imparando il php e il mysql con passione, curiosità e denaro ( libri 55 euro ) non mi và, per adesso eh, di prendere un altro libro e studiare che so ASP o Javascript, non perchè li reputo "inferiori" infatti se controlli il ragazzo che mi sta aiutando (leo) mi sta fornendo codici esclusivamente in Javascript il quale non fanno che migliorare drasticamente la chat, ma perchè non riuscirei a seguire troppi linguaggi. Il php è colmo di codici molto semplici ma bisogna pur sempre studiarli con dedizione, specialmente per chi come me non ha mai studiato nulla di programmazione se non il tag <b></b> che si utilizzava in alcuni forum.
Detto questo posso confermare tutte le tue parole, appena termino questo progetto avrò di sicuro incamerato tanta esperienza con il php e il mysql e perchè non provare ad apprendere anche il javascript?
Ti ringrazio un altra volta per il consiglio.
Torniamo a noi leo ^^ che pazienza che hai!
Ora provo sostituendo il numero e vedo un pò che viene fuori.
EDIT:
Nada... sto pensando di lasciar perdere sai? xD
Penso che non si aggiorni perchè i frames sono contenuti in un altra pagina e non in quella dell'input. In poche parole io ho una pagina chiamata Mappa_Chat.php che contiene questo:
Mappa_Chat.php
<frameset rows="*,80" frameborder="no" border="0" framespacing="0">
<frame src="Chat.php" name="Chat" id="Frame_Chat" title="Frame_Chat" />
<frame src="Input.php" name="Input" scrolling="No" noresize="noresize" id="Frame_Input" title="Frame_Input" />
</frameset>
<noframes><body>
</body></noframes>
</html>
E basta, poi ho una pagina chiamata Chat.php dove carico tutte le ruolate dal database e le stampo secondo un echo formattato da me che ordina bene l'ora il nome dell'autore e il messaggio, ed infine ho Input.php un ulteriore pagina contenente il la barra di Input text e il submit ed è lì che sto inserendo il tuo codice. Non ne capisco di javascript ma non credi che il codice non trovando nessun frame nella pagina Input.php vada a vuoto?
Un casino eh? sorry! ^^"
12/07/2011 15:33:20 e modificato da leoblacksoul il 12/07/2011 15:45:15
Ghennadi, però se è deprecato è deprecato. >.< A me piace scrivere codice che segua la pratica migliore indicata dagli enti che se ne occupano, uso la DTD Strict apposta e appena la maggior parte dei browser supporteranno HTML5 a un buon livello passerò a quello.
Che poi sia una pagina privata poco importa, è una questione che io voglio che il mio codice sia ben composto; anche se non è raggiungibile dai motori di ricerca o dai validatori.
Sui frame in particolare, li ho sempre trovati più complicati che usare un semplice include() in PHP e un po' di javascript. Il browser deve fare meno richieste al server e sul server-side ho più controllo su come generare il codice HTML finale piuttosto che usare javascript sul client che è più complesso.
Al giorno d'oggi non devi più preoccuparti di scrivere un codice che faccia tre volte la stessa cosa per riuscire a coprire tutti i browser più comuni; ci sono fior fiore di librerie che lo fanno per te, come jQuery, MooTools e molte altre, che non appesantiscono neanche più di tanto il programma.
Ma comunque, non è questo l'argomento di questa discussione. Stiamo cercando di far funzionare due frame:
wolfkiba94 è bello vedere che ti stai impegnando seriamente per capire come funzionano le cose. :)
io javascript lo scrivo un po' a tentativi >.<
Da Input.php noi gli richiediamo di passare al "parent", cioè alla pagina che contiene i frame, e poi cerchiamo di accedere a un altro frame. Sicuro che non funzioni?
Voglio dire...adesso che ci penso...probabilmente quel codice funziona: cioè lui aggiorna il frame della chat quando fai il submit.
Quello che probabilmente non fa è visualizzare il nuovo messaggio. Ho realizzato ora che usando onSubmit tu stai dicendo al browser di aggiornare il frame della chat PRIMA di inviare il nuovo messaggio al server. Che non era questo che volevamo...
*pensa pensa pensa*
ok....bisognerà farlo diversamente, lo facciamo con un po' più di aiuto da parte di PHP:
cancella la parte onSubmit del <form>.
Non appena viene cliccato il pulsante Invia il frame dell'input invia i dati al server a ricarica la pagina Input.php, giusto?
In Input.php, probabilmente avrai una variabile in PHP che usi per capire se la pagina è stata caricata normalmente o se invece è stata ricaricata dal form. Per esempio $_POST['submit'].
Il tuo codice esistente quindi sarà strutturato tipo così:
if($_POST['submit']){
//qui c'è tutta l'elaborazione degli input e l'inserimento del messaggio nel database
}
//quaggiù c'è il codice HTML per il <form>
Giusto?
Noi aggiungiamo questo codice dentro a quel if, subito dopo l'inserimento del messaggio nel DB, dicendo al browser di ricaricare il frame della chat
//Dopo aver fatto l'inserimento nel DB, sempre dentro all'if, stampiamo questo codice:
echo <<<SCRIPT
<script type="text/javascript">
parent.frames[1].location.reload();
/*Se non va prova con
parent.document.getElementById('Frame_Chat').location.reload();
*/
</script>
SCRIPT;
Vediamo un po' se va
12/07/2011 20:08:38
Diamine lo sai che hai ragione? La logica è quella che mi hai appena spiegato, noi facevamo aggiornare la chat prima dell'invio...
Comunque io ho inserito il tuo script ma non vuole andare, penso però di aver commesso magari un errore di inserimento nel PHP controlli per favore? ^^"
if (ISSET($_POST['Invio'])) {
$MySql = "INSERT INTO Chat (IDMappa, Autore, Destinatario, Data_Evento, Locazione, Messaggio) VALUES ('".$IDMappa."', '".$Autore."', '".$Destinatario."', '".$Data_Evento."', '".$Locazione."', '".$Messaggio."')";
mysql_query($MySql)or die(mysql_error());
echo <<<SCRIPT
<script type="text/javascript">
parent.frames[1].location.reload();
</script>
SCRIPT;
}
?>
12/07/2011 21:38:13 e modificato da ghennadi72 il 12/07/2011 22:58:48
leoblacksoul ha scritto: Ghennadi, però se è deprecato è deprecato. >.< A me piace scrivere codice che segua la pratica migliore indicata dagli enti che se ne occupano, uso la DTD Strict apposta e appena la maggior parte dei browser supporteranno HTML5 a un buon livello passerò a quello.
Che poi sia una pagina privata poco importa, è una questione che io voglio che il mio codice sia ben composto; anche se non è raggiungibile dai motori di ricerca o dai validatori.
Scelta filosofica assolutamente rispettabile, naturalmente. Io preferisco partire dal perchè un tag o una feature è stata "deprecata". In questo caso non una delle ragioni si applica all'uso che viene fatto del frame nell'ambito specifico di cui stiamo parlando: un'applicazione interna che non ha ragione alcuna di essere indicizzata dai motori di ricerca e che non si presta a ingannare/confondere gli ipovedenti.
Più sensibile é il discorso delle compatibilità all'indietro e per il futuro. Sarebbe abbastanza terrificante uno scenario in cui, che so Firefox 7.0 o Explorer 11.0 smettessero di supportare i tag deprecati no? Eppure... Mi limito a un semplice esempio per chiarire quello che intendo:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
{..}
<b><span style="color: rgb(204, 153, 0); font-weight: bold; font-size: 13px;"> › </span>
<a href="/gp/yourstore/pym/ref=pd_pyml_rhf">View and edit your browsing history</a>
</b>
{..}
<a href="/gp/dmusic/mp3/player/ref=sa_menu_mp3_acp1" target="_blank" class="navSaChildItem">Cloud Player for Web</a>
{..}
Questa intenstazione e le porzioni di codice successive non provengono da qualche deprecabile & esecrabile pagina di GDRCD 1.0
Provengono dalla homepage di Amazon.com, assieme ad eBay l'altro enorme e sterminato sito e eCommerce. HTML 4.01, signori.. neanche XHTML trasitional. E siamo nel 2011.
Noterete il deprecato tag B in luogo di STRONG, il deprecatissimo parametro TARGET all'interno del link.. e cercando all'interno della pagina se ne trovano molti altri.
Amazon é celeberrima per aver voluto mantenere a tutti i costi la compatibilità all'indietro, ben consapevole della quantità di versioni di browser, motori di rendering e sistemi operativi circolanti. A costo di usare uno standard ormai sorpassato e di continuare a usare tag deprecati.
Se per questo qualcuno vuol suggerire che Amazon offra alle sue centinaia di migliaia di utenti un servizio scadente, non professionale, non all'altezza o deprecabile, si accomodi pure. :-)
Da 1 a 1000 quante probabilità vi sono che i produttori di Browser smettano di supportare tag e features "deprecate" costringendo alle relative spese di aggiornamento le migliaia di aziende, anche meno importanti di amazon, che si ostinano "incredibilmente" a fare uso di features deprecate, ma sostanzialmente innocue, quali quelle sopra riportate?
13/07/2011 16:33:59
Hey ghennadi72 hem ^^" non è che per caso potresti aiutare me e leo a trovare una soluzione? Poi magari ne parliamo un altra volta di queste cose :(
Non voglio essere scortese, però vorrei tanto risolvere questo problema ^^"
Grazie mille !!!
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
World of Tanks ↗
Storie di Agarthi ↗
State of Survival ↗
Seconda Era ↗
Neverness to Everness ↗
Fallen Gods ↗
RAID Shadow Legends ↗
Imperion ↗
CRSED: F.O.A.D. ↗