Aggiornare dato sul db con php

  • Creatore Discussione Creatore Discussione Malware
  • Data di inizio Data di inizio

Malware

Utente Attivo
19 Lug 2012
112
0
0
Salve a tutti

Sto cercando di capire come funziona ajax :crying:

Ho una pagina, game.php?view_details=1

Qui ho alcune informazioni, e un link che mi fa comparire in un div:

HTML:
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="script/ajax.js"></script>

<form>
<br><br>Nuovo nome polis: <br><input type="text" name="nuovo_nome" id="nuovo_nome" maxlength="15">
<br><br>
<input type="submit" id="bottone" value="Modifica">
</form>

Io vorrei che quando premo il "bottone" il dato "nuovo_nome" aggiornasse quello presente nel database, e venisse mostrato quello aggiornato, senza ricaricare quindi pagina.
Bell'effetto da vedere ma che non riesco a fare.
C'è una discussione simile da cui ho preso spunto, ma non sono riuscito.

File ajax.js:

Codice:
// SCRIPT AJAX  


$(document).ready(function() {  

  //al click sul bottone del form  
  $("#bottone").click(function(){  

    //associo variabili  
    var nome = $("#nuovo_nome").val();  

  //chiamata ajax  
    $.ajax({  

     //imposto il tipo di invio dati   
      type: "POST",  

      //Invio i dati alla pagina php  
      url: "ajax.php",  

      //Dati da salvare  
      data: "nuovo_nome=" + nome ,  
      dataType: "html",  

      //visualizzazione errori/ok  
      success: function(msg)  
      {   
	    document.getElementById("nome_polis").innerHTML=nome;   //mostro il nuovo nome
      },  
      error: function()  
      {  
        //errore? ricarico la pagina
		document.location="game.php?func=view_details=1";
      }  
    });  
  });  
});

Mentre questo è il file ajax.php:

PHP:
<?php

require("config.php"); //dati per connessione al db

$nuovo_nome=$_POST['nuovo_nome'];
//vari controlli sul nome...

$query="UPDATE citta SET nome = '$nuovo_nome' WHERE idcitta = ".$_SESSION["city_da_vedere"];
mysql_query($query) or die (mysql_error());


?>
 
Ciao,
non vedo
HTML:
<div id="nome_polis"></div>
ci deve essere se no lo script non sa dove farti vedere il risultato

in piu devi cercare di non inviare il submit
potresti per esempio cambiare il type da submit a button
Codice:
<input type="button" id="bottone" value="Modifica">

per il resto mi sembra a posto , dovrebbe funzionarti con queste due modifiche

EDIT:
cambia la funzione in caso di successo cosi
Codice:
//visualizzazione errori/ok  
                success: function(response){
                            $("#nome_polis").html(response);
                        }
ti mostra nel divi tutto cio che manderai in output nella pagina ajax.php
 
Ultima modifica:
HTML:
<div id="nome_polis"></div>

Questo c'è nel codice della pagina che non ho incollato.

Comunque eccolo:
PHP:
echo '
	<table id="info_municipio_css" align="center">
		<tr>
			<td id="info_municipio_top_td_css" colspan="2">
			Informazioni città
			</td>
		</tr>
		
		<tr>
			<td id="info_municipio_td_1_css">
			Nome: 
			</td>
			<td id="info_municipio_td_2_css"><div id="nome_polis">
			'.$nome.'
			</div></td>
		</tr>
		
		<tr>
			<td id="info_municipio_td_1_css">
			Dimensione: 
			</td>
			<td id="info_municipio_td_2_css">
			'.$dimensione.'
			</td>
		</tr>
		
	</table>
';

Ho cambiato il successo del file ajax.js:

Codice:
// SCRIPT AJAX  


$(document).ready(function() {  

  //al click sul bottone del form  
  $("#bottone").click(function(){  

    //associo variabili  
    var nome = $("#nuovo_nome").val();  

  //chiamata ajax  
    $.ajax({  

     //imposto il tipo di invio dati   
      type: "POST",  

      //Invio i dati alla pagina php  
      url: "ajax.php",  

      //Dati da salvare  
      data: "nuovo_nome=" + nome ,  
      dataType: "html",  

      //visualizzazione errori/ok  
       success: function(response){
                            $("#nome_polis").html(response);
                        },  
      error: function()  
      {  
        //errore? ricarico la pagina
		document.location="game.php?func=view_details=1";
      }  
    });  
  });  
});

Aggiungo un po' altro in modo da capire meglio come funziona la cosa...le due funzioni javascript (file game.js):

Codice:
function menu_left_costru1() { //municipio
document.getElementById("menu_left_box").innerHTML='<div class="link2" onclick="mostra_form_nuovo_nome_polis();"><img src="images/game/small/el.png"> <a href="#">Modifica nome citt&agrave;</a></div>';
}


function mostra_form_nuovo_nome_polis() {
document.getElementById("view_details_css").innerHTML+='<script src="http://code.jquery.com/jquery-latest.js"></script><script src="script/ajax.js"></script><form><br><br>Nuovo nome polis:<br><input type="text" name="nuovo_nome" id="nuovo_nome" maxlength="15"><br><input type="button" id="bottone" value="Modifica"></form>';
}

File php sempre uguale ma...nessun segno di vita quando premo il button.
 
Hai messo l'echo nella pagina ajax.php?

PHP:
<?php
// probabile che ci vada anche il session_start() provalo con e senza

require("config.php"); //dati per connessione al db

$nuovo_nome=$_POST['nuovo_nome'];
//vari controlli sul nome...

$query="UPDATE citta SET nome = '$nuovo_nome' WHERE idcitta = ".$_SESSION["city_da_vedere"];
mysql_query($query) or die (mysql_error());

// manda in output
echo $nuovo_nome;

?>
 
Inserito l'echo, ma nessun segno di vita.
Nè sul db nè nel div.
Il session_start(); l'ho inserito già perché uso le sessioni.

Ora sto smanettando un po'...
 
io l'ho provato cosi e funziona
HTML:
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
    
    $(document).ready(function() {  

        //al click sul bottone del form  
        $("#bottone").click(function(){  

            //associo variabili  
            var nome = $("#nuovo_nome").val();  

            //chiamata ajax  
            $.ajax({  

                //imposto il tipo di invio dati   
                type: "POST",  

                //Invio i dati alla pagina php  
                url: "ajax.php",  

                //Dati da salvare  
                data: "nuovo_nome=" + nome ,  
                dataType: "html",  

                //visualizzazione errori/ok  
                success: function(response){
                            $("#nome_polis").html(response);
                        },  
                error: function()  
                {  
                    //errore? ricarico la pagina
                    document.location="game.php?func=view_details=1";
                }  
            });  
        });  
    });
</script>

<form>
    <br><br>Nuovo nome polis: <br><input type="text" name="nuovo_nome" id="nuovo_nome" maxlength="15">
    <br><br>
    <input type="button" id="bottone" value="Modifica">
</form>
<div id="nome_polis"></div>
ajax.php
PHP:
<?php
// probabile che ci vada anche il session_start() provalo con e senza

//require("config.php"); //dati per connessione al db

$nuovo_nome=$_POST['nuovo_nome'];
//vari controlli sul nome...

//$query="UPDATE citta SET nome = '$nuovo_nome' WHERE idcitta = ".$_SESSION["city_da_vedere"];
//mysql_query($query) or die (mysql_error());

// manda in output
echo $nuovo_nome;

?>
 
Allora.
Ho inserito il form manualmente senza js prima che esca la tabella (che contiene il div dove mettere il nome).
Il problema era quello.

Facendo questo con javascript però non funziona...

Codice:
function mostra_form_nuovo_nome_polis() {
copia_div=document.getElementById("view_details_css").innerHTML;
document.getElementById("view_details_css").innerHTML='<script src="http://code.jquery.com/jquery-latest.js"></script><script language=Javascript src="script/ajax.js"></script><br><br>Nuovo nome polis:<br><input type="text" id="nuovo_nome" name="nuovo_nome" maxlength="15"><br><input type="button" id="bottone" value="Modifica"><br><br>'+copia_div;
}

Mi sa che a questo punto il form lo faccio comparire con php, cliccando all'indirizzo game.php?view_form=nome_polis...
 
Ho risolto in un'altro modo.

Ora ho inserito il form dentro il div "show_edit_nome_polis"



PHP:
function mostra_form_nuovo_nome_polis() {
	if (document.getElementById('show_edit_nome_polis').style.display=="block") {
	document.getElementById('show_edit_nome_polis').style.display="none";
	}else{
	document.getElementById('show_edit_nome_polis').style.display="block";
	}
}



Comunque per la parte ajax va tutto in modo eccellente.
Come sempre siete i migliori.
Thanks :fonzie:
 

Discussioni simili