Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Javascript+Php

  1. #1

    Javascript+Php

    Ho un form in cui l'utente dopo aver fatto il login può vedere le informazioni che vengono prese da database e può modificarle...quando premo il tasto aggiorna, la pagina si ricarica.

    Ho un problema: se faccio una modifica ad un campo, la pagina si ricarica presentando le vecchie informazioni, allo stesso tempo però, nel database le informazioni vengono modificate, se ricarico la stessa pagina senza varie modifiche, mi riporta quelle fatte precedentemente...

    il ricaricamento della stessa pagina la faccio con action=$_SERVER['PHP_SELF'] come attributo della form...ho provato pure a disabilitare la cache, però non cambia niente...

    cosa sbaglio?

  2. #2
    Credo che tu possa ovviare al problema usando ajax al posto di php eventualmente con metodo post per evitare l'accesso a dati cached.

  3. #3
    dato che sono uno studente, la traccia vietava l'utilizzo di ajax...solo javascript+php...ho provato pure a mettere gli header però niente da fare...non capisco il motivo quale sia...

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    1. per aggiorna intendi quello del browser (F5)?
    2. perchè non posti il codice?

  5. #5
    Per aggiornare intendo ricaricare la pagina in un altro browser o facendo anche f5 senza rimandare i dati.... il database ha questa struttura:
    Nome, Cognome, Password, Professione, Nascita

    in $_SESSION['user'] è praticamente il 'nome' della tabella del database e in $_SESSION['pass'] la password relativa
    in connect.php c'è la connessione al database
    codice:
    <?php
    session_start();
    if (!isset($_SESSION['pass']) && !isset($_SESSION['pass']))
    {
    	echo "<h1 align=center>Devi fare il login <a href=index.php>qui</a></h1>";
    }
    else
    {
    		include ("connect.php");
    		$query="SELECT * FROM ese080707 WHERE Nome='".$_SESSION['user']."'";
    		$ris=mysql_query($query);
    		$riga=mysql_fetch_row($ris);
    		echo "<fieldset>";
    		echo "<form name=myForm action=$_SERVER[PHP_SELF] method=post>";
    		echo "<h2>Benvenuto $riga[0]</h2>
    ";
    		echo "Cognome: <input type=text name=cog value=$riga[1]>
    ";
    		echo "Professione: <input type=text name=pro value=$riga[3]>
    ";
    		echo "Data di nascita: <input type=text name=data value=$riga[4]>
    ";
    		echo "Password: <input type=password name=pass1 value=$riga[2]>
    ";
    		echo "Password: <input type=password name=pass2 value=$riga[2]>
    
    ";?>
    		Le due password devono essere uguali.
    
    		<input type=submit value=aggiorna onClick=testhis()>
    		<input type=button value=logout onClick=location.href="logout.php">
    		
    
    		<?php 
    		if (isset($_SESSION['val']))
    		{
    			if ($_SESSION['val']=="si")
    			{
    				echo "<h2>Aggiornamento dati avvenuto</h2>";
    				$_SESSION['val']="no";
    			}
    		}
    		?>
    		</form>
    		</fieldset>
    <?php
    }
    ?>
    
    <script type="text/javascript">
    function testhis()
    {
    	cog = document.myForm.cog.value;
    	pro = document.myForm.pro.value;
    	data = document.myForm.data.value;
    	pass1 = document.myForm.pass1.value;
    	pass2 = document.myForm.pass2.value;
    	if (cog=="" || pro=="" || data=="" || pass1=="" || pass2=="")
    	{
    		alert("Inserire tutti i campi");
    	}
    	else if (pass1!=pass2)
    	{
    		alert("Le 2 password devono coincidere");
    	}
    	else
    	{
    		<?php $_SESSION['val']="si"; 
    		include("connect.php");
    		$query="UPDATE ese080707 SET Professione='".$_POST[pro]."', Cognome='".$_POST[cog]."', Password='".$_POST[pass1]."', Professione='".$_POST[pro]."', Nascita='".$_POST[data]."' WHERE Nome='".$_SESSION[user]."'";
    		$ris=mysql_query($query);
    		?>
    	}
    }
    
    </script>

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Immagino che ci sia un errore sul controllo iniziale, controlli due volte che sia settata $_SESSION['pass'], mentre penso che una delle due sia $_SESSION['user']

    Se un form ha l'attributo action puntato alla pagina in cui si trova, specificare l'attributo action diventa superfluo.

    La parte in php viene eseguita fintanto che la richiesta viene elaborata dal server, dunque quel codice in php nella parte javascript non viene eseguito al click sul pulsante. Per eseguire codice lato server allo scatenarsi di eventi lato client occorre utilizzare ajax.

    Tuttavia cambiando un pò il tuo codice puoi fare tutto quanto, senza ajax.

    Codice PHP:

    <?php
    session_start
    ();
    if (!isset(
    $_SESSION['pass']) && !isset($_SESSION['user']))
    {
        echo 
    "<h1 align=center>Devi fare il login <a href=index.php>qui</a></h1>";
    }
    else
    {
                    
    $successo 0;
                    
    //qui ti gestisci le varie variabili pervenute $_POST dal form, e farai l'update al db se l'update avrà successo allora qui setterai a 1 la variabile flag $successo

            
    include ("connect.php");
            
    $query="SELECT * FROM ese080707 WHERE Nome='".$_SESSION['user']."'";
            
    $ris=mysql_query($query);
            
    $riga=mysql_fetch_row($ris);
            echo 
    "<fieldset>";
            echo 
    "<form name=myForm method=post>";
            echo 
    "<h2>Benvenuto $riga[0]</h2>
    "
    ;
            echo 
    "Cognome: <input type=text name=cog value=$riga[1]>
    "
    ;
            echo 
    "Professione: <input type=text name=pro value=$riga[3]>
    "
    ;
            echo 
    "Data di nascita: <input type=text name=data value=$riga[4]>
    "
    ;
            echo 
    "Password: <input type=password name=pass1 value=$riga[2]>
    "
    ;
            echo 
    "Password: <input type=password name=pass2 value=$riga[2]>

    "
    ;?>
            Le due password devono essere uguali.

            
            

            
            </form>
                    <button onClick=testhis()>aggiorna</button>
            <button onClick=location.href="logout.php">logout</button>
                    <?php 
            
    if ($successo==1)
            {
                echo 
    "<h2>Aggiornamento dati avvenuto</h2>";
            }
            
    ?>
            </fieldset>
    <?php
    }
    ?>

    <script type="text/javascript">
    function testhis()
    {
        cog = document.myForm.cog.value;
        pro = document.myForm.pro.value;
        data = document.myForm.data.value;
        pass1 = document.myForm.pass1.value;
        pass2 = document.myForm.pass2.value;
        if (cog=="" || pro=="" || data=="" || pass1=="" || pass2=="")
        {
            alert("Inserire tutti i campi");
        }
        else if (pass1!=pass2)
        {
            alert("Le 2 password devono coincidere");
        }
        else
        {
            document.myForm.submit();
        }
    }

    </script>

    lascio a te il lavoro in php per trattare le variabili $_POST sarebbe poco consono alla sezione del forum (javascript). Tale parte di codice andrà al posto del commento

  7. #7
    grazie 1000, gentilissimi come sempre

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.