Inviare form alla stessa pagina

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Sto cercando un modo tipo i blog che hanno un form nella pagina e una volta inviato lo stampa nella pagina stessa
 
Ciao,
puoi usare Ajax
esempio di chiamata Ajax con Jquery
PHP:
<!DOCTYPE html>
<html>
    <head>
        <title>Ajax</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
    </head>
    <body>    
        <form onsubmit="return false">
            <input type="text" id="nome" name="nome"/>
            <input type="button" id="invia" name="invia" value="Invia"/>
        </form>
        <div id="risultato"></div>
        <script type="text/javascript">
            $("#invia").click(function(){                
                $.ajax({    
                    type: "POST",  
                    url: "dati.php", 
                    data: "nome=" + $("#nome").val(),
                    success: function(response){
                        $("#risultato").html(response);
                    }
                }); 
            });          
        </script>
    </body>
</html>
pagina che elabora i dati
PHP:
<?php
echo "Ciao " . $_POST['nome'];
?>
Tutto quello che mandi in output in dati.php verra stampato nel div indicato
 
Ciao,
puoi usare Ajax
esempio di chiamata Ajax con Jquery
PHP:
<!DOCTYPE html>
<html>
    <head>
        <title>Ajax</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
    </head>
    <body>    
        <form onsubmit="return false">
            <input type="text" id="nome" name="nome"/>
            <input type="button" id="invia" name="invia" value="Invia"/>
        </form>
        <div id="risultato"></div>
        <script type="text/javascript">
            $("#invia").click(function(){                
                $.ajax({    
                    type: "POST",  
                    url: "dati.php", 
                    data: "nome=" + $("#nome").val(),
                    success: function(response){
                        $("#risultato").html(response);
                    }
                }); 
            });          
        </script>
    </body>
</html>
pagina che elabora i dati
PHP:
<?php
echo "Ciao " . $_POST['nome'];
?>
Tutto quello che mandi in output in dati.php verra stampato nel div indicato

Provo, io però non ho ancora capito jQuery, è forse un file-libreria completa da installare e che poi si richiamano i codici con i plugin?
 
Non è da installare e non è necessario usare i plugin
è un modo diverso per scrivere codice javascript
le funzioni che si richiamano dal "file-libreria" sono funzioni javascript
scrivere
$("#elemento").val();
equivale a
document.getElementById('elemento').value;

per la chiamata ajax che ti ho postato in javascript servono decine e decine di righe di codice
nel file di jquery ci sono quelle righe di codice, scritte molto bene, richiamabili con dei semplici comandi
 
Non è da installare e non è necessario usare i plugin
è un modo diverso per scrivere codice javascript
le funzioni che si richiamano dal "file-libreria" sono funzioni javascript
scrivere
$("#elemento").val();
equivale a
document.getElementById('elemento').value;

per la chiamata ajax che ti ho postato in javascript servono decine e decine di righe di codice
nel file di jquery ci sono quelle righe di codice, scritte molto bene, richiamabili con dei semplici comandi
L'ho provato, ma stampa "Ciao" anche se nel form scrivo un altro nome
 
Ciao,
puoi usare Ajax
esempio di chiamata Ajax con Jquery
PHP:
<!DOCTYPE html>
<html>
    <head>
        <title>Ajax</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
    </head>
    <body>    
        <form onsubmit="return false">
            <input type="text" id="nome" name="nome"/>
            <input type="button" id="invia" name="invia" value="Invia"/>
        </form>
        <div id="risultato"></div>
        <script type="text/javascript">
            $("#invia").click(function(){                
                $.ajax({    
                    type: "POST",  
                    url: "dati.php", 
                    data: "nome=" + $("#nome").val(),
                    success: function(response){
                        $("#risultato").html(response);
                    }
                }); 
            });          
        </script>
    </body>
</html>
pagina che elabora i dati
PHP:
<?php
echo "Ciao " . $_POST['nome'];
?>
Tutto quello che mandi in output in dati.php verra stampato nel div indicato

Non so come fa a funzionarti, io ho sostituito questo
PHP:
url: "dati.php",
con la pagina che contiene il form e cioè
PHP:
url: "paginastessa.php",
ma non funziona
 
devono essere due pagine separate
una che contiene il form , il richiamo della libreria e la funzione javascript

e l'altra in php ( quella che richiami da url: "dati.php", ) che contiene solo

PHP:
echo "Ciao" . $_POST['nome'];

la pagina php viene richiamata all'interno del div #risultato e mostra il risultato

se copi e incolli quello che ti avevo postato in due pagine e quella php la chiami dati richiamando la pagina HTML funziona
 
devono essere due pagine separate
una che contiene il form , il richiamo della libreria e la funzione javascript

e l'altra in php ( quella che richiami da url: "dati.php", ) che contiene solo

PHP:
echo "Ciao" . $_POST['nome'];

la pagina php viene richiamata all'interno del div #risultato e mostra il risultato

se copi e incolli quello che ti avevo postato in due pagine e quella php la chiami dati richiamando la pagina HTML funziona
Non si può fare in modo che metto tutti codici nella pagina stessa? Io ho già un form con 2 pagine, ma volevo farlo con una sola pagina
 
non con ajax

puoi inviare il form alla stessa pagina ricaricandola
PHP:
<form action='<?php echo $_SERVER['PHP_SELF'] ?>' method='POST'>
e poi lavori direttamente sui dati del post se sono settati
PHP:
if(isset($_POST['nome'] && !empty($_POST['nome'])) {
    echo "Ciao " . $_POST['nome'];
}
 
non con ajax

puoi inviare il form alla stessa pagina ricaricandola
PHP:
<form action='<?php echo $_SERVER['PHP_SELF'] ?>' method='POST'>
e poi lavori direttamente sui dati del post se sono settati
PHP:
if(isset($_POST['nome'] && !empty($_POST['nome'])) {
    echo "Ciao " . $_POST['nome'];
}

Non stampa, dove sbaglio?

PHP:
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" >

         <input type="text" id="nome" name="nome"/>
            
            <input type="button" id="invia" name="invia" value="Invia"/> 
        </form> 
        <div id="risultato"></div> 
        <script type="text/javascript"> 
            $("#invia").click(function(){                 
                $.ajax({     
                    type: "POST",   
                    url: "stessapagina.php",  
                    data: "nome=" + $("#nome").val(), 
                    success: function(response){ 
                        $("#risultato").html(response); 
                    } 
                });  
            });           
        </script>
         
        <?php 
echo "Ciao" . $_POST['nome']; 
?>
 
ciao
a parte ajax, che non so a che ti serva, prova così
PHP:
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" >
<input type="text" id="nome" name="nome"/>
<input type="button" id="invia" name="invia" value="Invia"/> 
</form>
<?php
if(isset($_POST['invia'])){
	if(empety(trim($_POST['nome'])){
		echo "Ciao gnocco non hai messo il nome";
	}else{
		echo "Ciao" . $_POST['nome'];
	}
}
?>
 
ciao
a parte ajax, che non so a che ti serva, prova così
PHP:
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" >
<input type="text" id="nome" name="nome"/>
<input type="button" id="invia" name="invia" value="Invia"/> 
</form>
<?php
if(isset($_POST['invia'])){
	if(empety(trim($_POST['nome'])){
		echo "Ciao gnocco non hai messo il nome";
	}else{
		echo "Ciao" . $_POST['nome'];
	}
}
?>
Non stampa niente, mancava una parentesi if(empety(trim($_POST['nome'])))
 
ciao
avevo tatto il copy/paste e on mi ero accorto che hai usato button al posto di submit (e ho tolto l'empty)

PHP:
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" >
<input type="text" id="nome" name="nome"/>
<input type="submit" id="invia" name="invia" value="Invia"/> 
</form>
<?php
if(isset($_POST['invia'])){
    if(trim($_POST['nome'])== ""){
        echo "Ciao gnocco non hai messo il nome";
    }else{
        echo "Ciao " . $_POST['nome'];
    }
}
?>
 
ciao
avevo tatto il copy/paste e on mi ero accorto che hai usato button al posto di submit (e ho tolto l'empty)

PHP:
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" >
<input type="text" id="nome" name="nome"/>
<input type="submit" id="invia" name="invia" value="Invia"/> 
</form>
<?php
if(isset($_POST['invia'])){
    if(trim($_POST['nome'])== ""){
        echo "Ciao gnocco non hai messo il nome";
    }else{
        echo "Ciao " . $_POST['nome'];
    }
}
?>
Ora funziona, sto cercando di applicare il tuo principio al mio form ma non mi stampa

PHP:
<form method="post" name="mioform1" id="mioF" action="<?php echo $_SERVER['PHP_SELF'];?>" onkeyup="highlight(event)" onsubmit="return (nomeCampo() &amp;&amp; messaggioCampo() &amp;&amp; validatoreCampo());">
<!-- Prende la data-ora browser del visitatore da script.js WebDate_Scrivimi() -->
 <input type="hidden" id="hdn_data_locale" name="WebDate_Scrivimi" />
  <script type="text/javascript">WebDate_Scrivimi();</script>   
	
	       <fieldset id="contenuto1"> 
             <div class="linea1">
				 <label class="nomi1Scriv">Tuo NOME<span class="asterisco1">&nbsp;*</span></label>
          <input type="text" name="nome" class="campi1" value="<?php echo($_SESSION['nome'])?>" onkeyup="contaNome(); nomeCampo(); parolaNo()" onblur="nomeCampo(); parolaNo(); this.value=this.value.replace(/[\s]*/,'')" /> <!-- E' il Trim di js (onblur rimuove subito in modo visibile spazi prima e alla fine)  -->
           &nbsp;&nbsp;&nbsp;&nbsp;<img src="faccine/cxonfuso.gif" alt="Confuso" title="Confuso" onclick="document.forms.mioform1.messaggio.value+='CONFUSO';focus()" style="cursor:pointer" />
						&nbsp;&nbsp;<img src="faccine/ixmpossibile.gif" alt="Impossibile" title="Impossibile" onclick="document.forms.mioform1.messaggio.value+='IMPOSSIBILE';focus()" style="cursor:pointer" />
					  &nbsp;<img src="faccine/txestardo.gif" alt="Testardo" title="Testardo" onclick="document.forms.mioform1.messaggio.value+='TESTARDO';focus()" style="cursor:pointer" />
                  <div class="N">  
           <div id="nome"></div><div id="contaNome"></div><div id="nomeCampo"></div>
             </div>
                 </div>
				    <div class="linea1">
           <label class="nomi1">Tua CITT&Agrave;</label>
       <input type="text" name="citta" class="campi1" value="<?php echo($_SESSION['citta'])?>" onkeyup="contaCitta(); parolaNo()" onblur="parolaNo(); this.value=this.value.replace(/[\s]*/,'')" />
					&nbsp;&nbsp;&nbsp;&nbsp;<img src="faccine/pxiange.gif" alt="Piange" title="Piange" onclick="document.forms.mioform1.messaggio.value+='PIANGE';focus()" style="cursor:pointer" />
					&nbsp;&nbsp;<img src="faccine/bxacio.gif" alt="Bacio" title="Bacio" onclick="document.forms.mioform1.messaggio.value+='BACIO';focus()" style="cursor:pointer" />
          &nbsp;&nbsp;<img src="faccine/fxelice.gif" alt="Felice" title="Felice" onclick="document.forms.mioform1.messaggio.value+='FELICE';focus()" style="cursor:pointer" />
          <div class="N"> 
          <div id="citta"></div><div id="contaCitta"></div>
         </div>
           </div>
				  <div class="linea1">
			 <label class="nomi1">Tua EMAIL</label>
           <input type="text" name="suoemail" class="campi1" value="<?php echo($_SESSION['suoemail'])?>" onkeyup="contaUser(this); contaEmail(); validaMail()" onblur="validaMail(); this.value=ignoreSpaces(this.value)" />   <!-- Rimuove tutti gli spazi (attacca le parole) -->
				&nbsp;&nbsp;&nbsp;&nbsp;<img src="faccine/rxide.gif" alt="Ride" title="Ride" onclick="document.forms.mioform1.messaggio.value+='RIDE';focus()" style="cursor:pointer" />
           &nbsp;&nbsp;<img src="faccine/oxcchiolino.gif" alt="Occhiolino" title="Occhiolino" onclick="document.forms.mioform1.messaggio.value+='OCCHIOLINO';focus()" style="cursor:pointer" />
					&nbsp;&nbsp;<img src="faccine/cxiao.gif" alt="Ciao" title="Ciao" onclick="document.forms.mioform1.messaggio.value+='CIAO';focus()" style="cursor:pointer" />
            <div class="N"> 
           <div id="contaUser"></div><div id="contaEmail"></div><div id="validaMail"></div>
                  </div>
				 </div>
		<div class="linea1">
			<div class="formattazione1">
			
      <div id="bottoneG">
      <a href="javascript:insert_tag('G');" title="Grossetto"><span style="font-weight: bold;">G</span></a> 
      </div>
      <div id="bottoneC"> 
      <a href="javascript:insert_tag('C');" title="Corsivo"><span style="font-size: 16px; font-style: italic;">C</span></a>	
      </div>
      <div id="bottoneS"> 
      <a href="javascript:insert_tag('S');" title="Sottolineato"><span style="text-decoration: underline;">S</span></a>
      </div> 
      
&nbsp;&nbsp;<select class="campoColori1" name="colori" onchange="insert_tag('COLOR',this.options[this.selectedIndex].value);this.selectedIndex=0;">
<option>Color</option> 
<option class="cayenne-bg" value="cayenne">Cayenne</option>
<option class="rosso-bg" value="rosso">Rosso</option>
<option class="verde-bg" value="verde">Verde</option>
<option class="grigio-bg" value="grigio">Grigio</option>
 </select>
      </div> <!-- formattazione1 -->
			</div>  <!-- linea1 -->
  
	  <div id="contSX">
		<span class="testoMess">Testo</span><span class="asterisco1">&nbsp;*</span>
		<br />
		 <br />
  <div id="charCount">Rimanenti</div><span class="formattaNumero"><div id="Contatore">1000</div></span>
<div id="charCount1">caratteri</div>
</div>

<div id="messaggio"></div><div id="messaggioCampo"></div>

<textarea name="messaggio" id="txtScrivimi1" cols="0" rows="0" onkeyup="conta(this); messaggioCampo(); parolaNo()" onblur="messaggioCampo(); parolaNo(); this.value=this.value.replace(/[\s]*/,'')"><?php echo($_SESSION['messaggio'])?></textarea>

<div id="contDXScrivimi1">	  
   <img src="faccine/pxaura.gif" alt="Paura" title="Paura" onclick="document.forms.mioform1.messaggio.value+='PAURA';focus()" style="cursor:pointer" />
   </div>
   
	 <div id="footer-basso">
	
	 <div id="footer-sxScrivimi1">
    <span class="campiObb">Campi obbligatori</span><span class="asterisco1">&nbsp;*</span>
					</div>
					<div id="footer-ctScrivimi1">
           	 <button type="submit" name="send" id="submit" class="manina-guest">Invia</button>
						</div>
						
						<div id="footer-dxScrivimi1">
           <span class="red">Scrivi questo codice</span>
					 <br />
        	<input type="text" name="validator" class="validator" onkeyup="contaValid(); validatoreCampo()" onblur="validatoreCampo(); this.value=ignoreSpaces(this.value)" />
			      <script type="text/javascript">Captcha();</script>
				    </div>
				<div id="contaValid"></div><div id="validatoreCampo"></div> 
	</div>	<!--footer -->
	</fieldset> <!-- contenuto1 -->
      </form>
<?php
if(isset($_POST['invia'])){
    if(trim($_POST['nome'])== ""){
        echo "Inserire il nome";
    }else{
        echo " " . $_POST['nome'];
    }
}
?>
 
In un qualche modo sto riuscendo a farlo funzionare, io in un file esterno ho i codici js e css, ma mi richiama solo i css :confused:
 
Diciamo che ho quasi risolto tutto, in base al tuo codice quando compio il campo lo stampa, ma poi se lo riempio ancora stampa quello nuovo ma cancella il precedente devo fare in modo che li stampa uno sotto l'altro senza cacellarli.


PHP:
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" > 
<input type="text" id="nome" name="nome"/> 
<input type="submit" id="invia" name="invia" value="Invia"/>  
</form> 
<?php 
if(isset($_POST['invia'])){ 
    if(trim($_POST['nome'])== ""){ 
        echo "Ciao gnocco non hai messo il nome"; 
    }else{ 
        echo "Ciao " . $_POST['nome']; 
    } 
} 
?>
 

Discussioni simili