inserimento o eliminazione record mysql senza cambio pagina

crashall

Nuovo Utente
29 Ott 2014
14
0
0
salve ragazzi, ho un problemino :crying:
ho creato una pagina con 2 menu a comparsa che quando sono valorizzati visualizzano sotto, una pagina php.... in questa pagina si possono effettuare delle scelte e cliccando su salva deve essere eseguito uno script php ma senza uscire dalla pagina.
ho fatto tutto tranne appunto la parte di esecuzione dello script per non far uscire dalla pagina...
provo a spiegarmi con delle immagini.

all'apertura la pagina si presenta così
1.jpg

alla valorizzazione delle 2 tendine, tramite ajax, viene richiamata la pagina php
2.jpg

seleziono/deseleziono le spunte e clicco su salva... qui interviene uno script php, a cui passo un array con i valori delle spunte, che elimina/inserisce dei record in tabella.
al momento funziona e mi appare la seguente schermata, che poi mi indirizza di nuovo alla prima schermata...
3.jpg

quello che invece vorrei fare è di restare sulla seconda schermata, con magari un qualcosa che dica salvataggio eseguito.

grazie per l'aiuto.
 
ho cercato di inserirti solo un esempio necessario per avere un menù a tendina che fa apparire una pagina sotto come nel mio caso

HTML:
<script type="text/javascript">
	var xmlhttp;
	function mostraInfo(str,anno)
	{
		xmlhttp=GetXmlHttpObject();
		if (xmlhttp==null)
		{
			alert ("Browser does not support HTTP Request");
			return;
		}
		var url="pagina_da_caricare.php";
		xmlhttp.onreadystatechange=stateChanged;
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);
	}

	function stateChanged()
	{
		if (xmlhttp.readyState==4)
		{
			document.getElementById("info").innerHTML=xmlhttp.responseText;
		}
	}

	function GetXmlHttpObject()
	{
		if (window.XMLHttpRequest)
		{
			return new XMLHttpRequest();
		}
		return null;
	}
</script>

<?php
	$q_pers= "SELECT p.id,p.cognome, p.nome  
                         FROM persone
		   ORDER BY cognome";
?>
<form>
	Iscritto:
    <select name="persona" id="persona" onChange="mostraInfo(persona.value,anno.value)">
		<option value="0">Scegli...</option>
	<?php
		$q = $db->prepare($q_pers);
		$q->execute();
		$q->setFetchMode(PDO::FETCH_ASSOC);
		while($row = $q->fetch()) { 
			echo "<option value='$row[id]'>$row[cognome] $row[nome]</option>";
		}
	?>	
	</select>
</form>
<br />
<div id="info"></div>
 
ho cercato di inserirti solo un esempio necessario per avere un menù a tendina che fa apparire una pagina sotto come nel mio caso

HTML:
<script type="text/javascript">
var xmlhttp;
function mostraInfo(str,anno)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url="pagina_da_caricare.php";
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("info").innerHTML=xmlhttp.responseText;
}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
return new XMLHttpRequest();
}
return null;
}
</script>

<?php
$q_pers= "SELECT p.id,p.cognome, p.nome  
                         FROM persone
   ORDER BY cognome";
?>
<form>
Iscritto:
    <select name="persona" id="persona" onChange="mostraInfo(persona.value,anno.value)">
<option value="0">Scegli...</option>
<?php
$q = $db->prepare($q_pers);
$q->execute();
$q->setFetchMode(PDO::FETCH_ASSOC);
while($row = $q->fetch()) { 
echo "<option value='$row[id]'>$row[cognome] $row[nome]</option>";
}
?>
</select>
</form>
<br />
<div id="info"></div>
Ottimo grazie. Fammi sapere se risolvi con i link che ti ho postato.
 
puoi usare la stessa tecnica che hai usato per caricare la pagina,
crei l'url come se lo scrivessi nella barra di navigazione del browser,
PHP:
var xURL = "script.php?id1="+valore1+"&id2="+valore2+"&id3="+valore3+"&id4="+valore4
definisci lo script come ti interessa, per esempio
PHP:
<?php
include_once ......;
$opt = new ......;
if(empty($_GET)) $risposta = "0";
else
{
  extract($_GET, EXTR_OVERWRITE);

  qui esegui quello che ti serve con tutte le variabili che sono restituite dall'istruzione precedente';

  $data = $opt->risultato dal database;

  $risposta = ......
}
echo $risposta;
?>
la risposta la usi nel form, attento solo a verificare come ti arriva la risposta
per esperienza, comportamento differente tra piattaforma apache e IIS di conseguenza altri browser verso IE
se vuoi un consiglio, echo lo cambi in,
PHP:
echo "#mytag#".$risposta."#/mytag#";
poi nel js quando ricevi la risposta, la gestisci con
PHP:
var n1 = 7 + risposta.indexOf("#mytag#");
var n2 = risposta.indexOf("#/mytag#");
risposta = risposta.substring(n1, n2);
ma fai delle prove e verifica con debugger

spero di aver interpretato bene il tuo pensiero
ciao
Marino
 
Ultima modifica:
ho risolto!
solo che ora ragazzi ho un grande problema...
esempio:
io ho la pagina "page1" con un bottone SALVA che tramite script ajax esegue una pagina php e memorizza dei dati nel DB e fin qui tutto ok.
ma se io la "page1" non la apro direttamente ma viene richiamata da uno script ajax della "page0" non mi viene più eseguito il "SALVA".

sapete darmi un aiuto??
 
essendo che le mie pagine sono un pò complesse perchè contengono più sezioni ho ricreato un esempio base per far capire il funzionamento.

page0.php... è la pagina che da un menù a tendina ti fa apparire una pagina php
Codice:
<form action="" method="post">
	Persona:
    <select name="persona" id="persona" class="persona">
		<option value="0">Pippo</option>
		<option value="0">Paperino</option>
	</select>
</form>
<script type="text/javascript">
	$(document).ready(function() {
		$('select.anno').change(function(){
			$.ajax({
					type: 'POST',
					url: 'page1.php',
					data: {idper: $('select.persona').val()},
					dataType: 'html',
					success: function(msg)
					{$("#info").html(msg);},
					error: function()
					{alert("Chiamata fallita, si prega di riprovare...");}
			});
		});
	});
</script>


page1.php ... è la pagina che ti fa selezionare vari corsi e cliccando su salva richiama una pagina php che inserisce a DB, il tutto tramite Ajax per evitare aggiornamenti della pagina
Codice:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<form id="corsi" action="#">
<input name="corsi[]" type="checkbox" value=1>Italiano<br>
<input name="corsi[]" type="checkbox" value=2>Storia<br>
<input name="corsi[]" type="checkbox" value=2>Matematica<br>
<input id="salva" type="button" value="Salva" />
</form>
<script>
    $("#salva").click(function(){
		var dati = $("#sel-corsi").serialize();		
		$.ajax({
			type: "POST",
			url: "page2.php",
			data: dati+"&idper=<?php echo $_POST['idper'] ?>",
			dataType: "html",
			success: function(msg)
			{alert("Salvataggio eseguito correttamente");},
			error: function()
			{alert("Chiamata fallita, si prega di riprovare...");}
		});
	});
</script>


page2.php ... è la pagina con il codice PHP per inserire dati a DB


spero che l'esempio sia utile :fonzie:
 

Discussioni simili