- Home
- Categorie
- Coding e Sistemistica
- Coding
- Creare un form per invio e visualizzazione dati nella stessa pagina
-
Ho provato...ma necessitano di una libreria ahahtext.js che non riesco a trovare in rete...
-
C'è l ho fatta...diciamo che ho seguito lo stile di una shoutbox in php mysql e ajax e tramite la funzionalità di quella l ho riadattata alla mie esigenze..e anche con una mezz oretta di studio sull ajax...:D
-
Perfetto, complimenti!

-
:DGrazie...c'è un solo problemino che non ho capito a freddo come risolvere..se io aggiorno la pagina manulamente mi riscrive gli ultimi record inseriti...
Questa e la pagina che mostra a video [PHP]
<?php
@header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
@header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
@header("Cache-Control: no-store, no-cache, must-revalidate");
@header("Cache-Control: post-check=0, pre-check=0", false);
@header("Pragma: no-cache");
@include 'config.php';
?><html>
<head>
<title>Shoutbox</title>
<script language="JavaScript" type="text/javascript" src="ajax.js">
</script>
</head>
<body><?
$query = "SELECT * FROM shoutbox ORDER BY id DESC";
$result = @mysql_query($query) or die (mysql_error());
if (mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_array($result))
{
$nick = stripslashes($row['nick']);
$testo = stripslashes($row['testo']);
$data = $row['data'];// formattiamo la data in "gg-mm-aaaa" $data = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $data); $sito_web = $row['sito_web']; echo "$nick - $testo - $data <br>\r";}
}
@mysql_close();
?>[/PHP]
Come posso risolvere???
-
Non puoi risolvere... Se aggiorni e rinvii i dati, il server non può distinguere il refresh da un nuovo invio...
Al limite puoi fare un controllo con una query, e vedere se qualcuno ha inviato un messaggio identico nell'arco di tempo di... 10 minuti?
Questa soluzione dovrebbe andare

-
Il problema sta nel file ajax.js
// funzione per la chiamata dell'oggetto XMLHttpRequest function ajax(){ var ajaxRequest; try{ // controllo per i browser diversi da IE ajaxRequest = new XMLHttpRequest(); }catch (e){ // contorollo per IE try{ ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); }catch (e){ try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); }catch (e){ // controllo per i browser che non supportano l'XMLHttpRequest alert("Il browser non supporta questo ShoutBox"); return false; } } } return ajaxRequest; } // funzione per il salvataggio dei dati function salva(){ htmlRequest = ajax(); if (htmlRequest==null){ alert ("Il browser non supporta richieste HTTP"); return; } // controlliamo i parametri obbligatori if(document.form_invio.nick.value == "" || document.form_invio.nick.value == "NULL" || document.form_invio.testo.value == "" || document.form_invio.testo.value == "NULL") { alert('Inserisci sia il Nick che il testo'); return; } // inviamo i parametri al file per l'INSERT nel database htmlRequest.open('POST', 'invia.php'); htmlRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); htmlRequest.send('nick='+document.form_invio.nick.value+'&testo='+document.form_invio.testo.value+'&sito_web='+document.form_invio.sito_web.value); // svuotiamo il modulo per il messaggio document.form_invio.testo.value = ''; document.form_invio.testo.focus(); } // funzione per mostrare i dati function mostra() { htmlRequest = ajax(); // controllo nel caso in cui non possa richiamato l'oggetto Xmlhttp if (htmlRequest==null){ alert ("Il browser non supporta richieste HTTP"); return; } htmlRequest.onreadystatechange = function(){ // Restituisce lo stato della richiesta if(htmlRequest.readyState == 4){ // Restituice il corpo della risposta come stringa document.getElementById("modulo").innerHTML = htmlRequest.responseText; } } // chiamata della pagina PHP che estrae i records htmlRequest.open("GET", "mostra.php", true); htmlRequest.send(null); } // chiamata alla funzione mostra(); // intevallo per l'aggiornamento della pagina setInterval("mostra()",1000);Se io refresho la pagina mi appare il doppione...se la refresho di nuovo invece non crea piu' doppioni...rimane a video solo il messaggio originale e il doppione anche se refresho 10 volte....poi comunque nel database al refresh non avviene nessun inserimento di doppioni quindi credo che il problema deriva dal file js giusto?
-
Non avevi specificato che il doppione è solo a video...
Posta nella sezione js
-
Ok

-
@carlitos1982 said:
[***]
La cosa strana che ho notato ora e che se guardo il codice sorgente della pagina mi da i record senza doppioni mentre a video si....:?
-
E' normale, quando guardi il codice sorgente della pagina il browser ti mostra il codice originale, quello che ha ricevuto quando ha inoltrato la richiesta al server..
Se hai firefox, prova a selezionare una parte e fai "Visualizza Sorgente Selezione" e vedrai che il doppione lo potrai vedere.