Visualizzazione risultati 1 fino 14 di 14

Discussione: [html/js] passare valori a pagina PHP (senza usare GET, usando POST o altro)

  1. #1
    esotica non è connesso Utente giovane
    Data registrazione
    08-05-2008
    Messaggi
    87

    Predefinito [html/js] passare valori a pagina PHP (senza usare GET, usando POST o altro)

    ho questo problema:
    ho molte variabili da passare a una pagina PHP che il metodo GET non puo' essere utilizzato.

    Codice HTML:
     function modifica_data(d,a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,f1,f2,g1,g2,h1,h2,i1,i2,j1,j2) {
          var finestra = window.open("oggetti_vari_elaborazioni.php?operazione=MODIFICA-DATA&d=" + d + "&a1=" + a1 + "&a2=" + a2 + "&b1=" + b1 + "&b2=" + b2 + "&c1=" + c1 + "&c2=" + c2 + "&d1=" + d1 + "&d2=" + d2 + "&e1=" + e1 + "&e2=" + e2 + "&f1=" + f1 + "&f2=" + f2 + "&g1=" + g1 + "&g2=" + g2 + "&h1=" + h1 + "&h2=" + h2 + "&i1=" + i1 + "&i2=" + i2 + "&j1=" + j1 + "&j2=" + j2,"_blank","top=150,left=250,width=550,height=450");
    
    
       }
    Ho provato con il metodo post, ma non funziona, mi carica e si vede per un attimo la pagina bianca, ma subito torna indietro alla pagina dove ho premuto il link.

    Codice HTML:
       function modifica_data(d,a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,f1,f2,g1,g2,h1,h2,i1,i2,j1,j2) {
    
    document.write('<FORM name="moduloC" method="POST" target="_blank" action="elaborazioni.php">');
    document.write('<input type="hidden" name="operazione" value="MODIFICA-DATA">');
    document.write('<input type="hidden" name="d" value=" ' + d + ' ">');
    document.write('<input type="hidden" name="a1" value=" ' + a1 + ' ">');
    document.write('<input type="hidden" name="a2" value=" ' + a2 + ' ">');
    document.write('<input type="hidden" name="b1" value=" ' + b1 + ' ">');
    document.write('<input type="hidden" name="b2" value=" ' + b2 + ' ">');
    document.write('<input type="hidden" name="c1" value=" ' + c1 + ' ">');
    document.write('<input type="hidden" name="c2" value=" ' + c2 + ' ">');
    document.write('<input type="hidden" name="d1" value=" ' + d1 + ' ">');
    document.write('<input type="hidden" name="d2" value=" ' + d2 + ' ">');
    document.write('<input type="hidden" name="e1" value=" ' + e1 + ' ">');
    document.write('<input type="hidden" name="e2" value=" ' + e2 + ' ">');
    document.write('<input type="hidden" name="f1" value=" ' + f1 + ' ">');
    document.write('<input type="hidden" name="f2" value=" ' + f2 + ' ">');
    document.write('<input type="hidden" name="g1" value=" ' + g1 + ' ">');
    document.write('<input type="hidden" name="g2" value=" ' + g2 + ' ">');
    document.write('<input type="hidden" name="h1" value=" ' + h1 + ' ">');
    document.write('<input type="hidden" name="h2" value=" ' + h2 + ' ">');
    document.write('<input type="hidden" name="i1" value=" ' + i1 + ' ">');
    document.write('<input type="hidden" name="i2" value=" ' + i2 + ' ">');
    document.write('<input type="hidden" name="j1" value=" ' + j1 + ' ">');
    document.write('<input type="hidden" name="j2" value=" ' + j2 + ' ">');
    document.write('</FORM>');
    
    document.moduloC.submit();
    
    
       }
    Come posso risolvere ?

    GRAZIE

  2. #2
    Guest

    Predefinito

    Prova a mettere method="GET" e cambiare la finestra con questo link:
    oggetti_vari_elaborazioni.php
    Ciao! ^^

  3. #3
    esotica non è connesso Utente giovane
    Data registrazione
    08-05-2008
    Messaggi
    87

    Predefinito

    ma se mettp GET uso il metodo GET che ha come limite i 255 caratteri di indirizzo o sbaglio. Perche' con il primo pezzo di codice che ho postato gia' uso il GET e se il link non supera il limite massimo di caratteri funziona alla grande.
    Siccome devo passare 22 var, di cui 20 che possono avere un valore fino a 50 caratteri cadauna, il metodo GET puo' non funzionare.

    Pensavo che il post non avesse questo limite. Mi sono accorto che se passo valori piccoli funziona, se passo valori grandi no.

    Come posso passare le 22 variabili ?

    Vi prego aiuto ... ANCORA GRAZIE

    PS: nel secondo pezzo di codice volutamente rimando alla pagina "elaborazioni.php" che l'ho fatta per testare il passaggio di dati (e ripeto funziona con valori piccoli).

  4. #4
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Col POST si possono inviare svariati MB, per cui è la strada giusta.

    Ma esattamente cosa ti arriva via POST? O meglio: cosa non arriva?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  5. #5
    esotica non è connesso Utente giovane
    Data registrazione
    08-05-2008
    Messaggi
    87

    Predefinito

    esattamente col codice postato sopra nel secondo pezzo:

    1- ho la mia pagina aperta con il link;
    2- premo il link -> e apre una pagina tutta bianca (quella fatta con tutti i document.write -> l'ho visto dal sorgente)
    3- subito mi apre un'altra pagina che e' elaborazioni.php

    QUINDI TUTTO FUNZIONA.

    Pero' fa cosi' solo se i dati sono pochi. Meno del limite del GET. Se i dati sono tanti fa:

    1- premo il link -> rimette la pagina a top senza caricare niente (che poi e' la stessa cosa che fa con GET quando si supera il limite).

    E' come se POST avesse lo stesso limite del GET ... ma perche' visto che mi confermi che col post si possono inviare svariati mega di roba ?

  6. #6
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Facendo due prove penso che il problema risieda nel fatto di usare "document.write()" dopo che la pagina è stata generata. Puoi ovviare in diversi modi. Per esempio:

    * Crei il form al momento di generare la pagina e popoli i vari campi alla chiamata di modifica data
    * Crei il form a posteriori usando il DOM/innerHTML

    La cosa strana, per me, è che la tua soluzione abbia potuto funzionare in precedenza.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  7. #7
    esotica non è connesso Utente giovane
    Data registrazione
    08-05-2008
    Messaggi
    87

    Predefinito

    Ho provato a cambiare il codice in questo modo

    Codice HTML:
       function modifica_data(d,a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,f1,f2,g1,g2,h1,h2,i1,i2,j1,j2) {
    
      elemento1 = document.createElement("div");
      elemento1.innerHTML = "<input type="hidden" name="operazione" value="MODIFICA-DATA">";
    
      // aggiunge l'elemento appena creato e il suo contenuto al DOM
      var luogo_inserimento = document.getElementById("punto_inserimento");
    
    document.body.insertBefore(elemento1,luogo_inserimento);
    
       }
    E poi nella parte html ho messo prima di chiudere questo:

    Codice HTML:
    <DIV ID="punto_inserimento">&nbsp;</DIV>
    Pero' non fa nulla.

    Mi puoi spiegare le due alternative, che non sono molto esperto avendo iniziato un mese fa a studiare HTML poi PHP. E da una settimana JAVASCRIPT.

    Ti RINGRAZIO TANTO

  8. #8
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Guarda, una soluzione è questa:

    Inserisci nella pagina un DIV vuoto (tanto per avere un elemento in cui inserire qualcosa):
    Codice HTML:
    <div id="usami"></div>
    E poi modifichi la funzione Javascript in questo modo:
    Codice HTML:
    <script type="text/javascript">
    function modifica_data(d,a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,f1,f2,g1,g2,h1,h2,i1,i2,j1,j2) {
    	s = '<FORM name="moduloC" method="POST" target="_blank">';
    	s += '<input type="hidden" name="operazione" value="MODIFICA-DATA">';
    	s += '<input type="hidden" name="d" value=" ' + d + ' ">';
    	s += '<input type="hidden" name="a1" value=" ' + a1 + ' ">';
    	s += '<input type="hidden" name="a2" value=" ' + a2 + ' ">';
    	s += '<input type="hidden" name="b1" value=" ' + b1 + ' ">';
    	s += '<input type="hidden" name="b2" value=" ' + b2 + ' ">';
    	s += '<input type="hidden" name="c1" value=" ' + c1 + ' ">';
    	s += '<input type="hidden" name="c2" value=" ' + c2 + ' ">';
    	s += '<input type="hidden" name="d1" value=" ' + d1 + ' ">';
    	s += '<input type="hidden" name="d2" value=" ' + d2 + ' ">';
    	s += '<input type="hidden" name="e1" value=" ' + e1 + ' ">';
    	s += '<input type="hidden" name="e2" value=" ' + e2 + ' ">';
    	s += '<input type="hidden" name="f1" value=" ' + f1 + ' ">';
    	s += '<input type="hidden" name="f2" value=" ' + f2 + ' ">';
    	s += '<input type="hidden" name="g1" value=" ' + g1 + ' ">';
    	s += '<input type="hidden" name="g2" value=" ' + g2 + ' ">';
    	s += '<input type="hidden" name="h1" value=" ' + h1 + ' ">';
    	s += '<input type="hidden" name="h2" value=" ' + h2 + ' ">';
    	s += '<input type="hidden" name="i1" value=" ' + i1 + ' ">';
    	s += '<input type="hidden" name="i2" value=" ' + i2 + ' ">';
    	s += '<input type="hidden" name="j1" value=" ' + j1 + ' ">';
    	s += '<input type="hidden" name="j2" value=" ' + j2 + ' ">';
    	s += '</FORM>';
    
    	document.getElementById('usami').innerHTML = s;
    
    	document.moduloC.submit();
    }
    </script>
    Praticamente faccio la stessa cosa che facevi prima con i document.write, ma in maniera diversa. Dovrebbe funzionare.
    Ultima modifica di saitfainder : 08-07-2008 alle ore 16.39.30


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  9. #9
    esotica non è connesso Utente giovane
    Data registrazione
    08-05-2008
    Messaggi
    87

    Predefinito

    si funziona come il mio ossia con valori piccoli.

    Per chi legge: pero' hai dimenticato di metter "Id" in document.getElementById, l'ho scritto se dovesse servire a qualcuno, ovviamente e' un errore di battitura.

    Ho pero' isolato il problema... lo fa se nelle variabili stringa c'e' il simbolo «'», pero' io i valori delle variabili stringa li metto detro i doppi apici «"».
    Non dovrebbe creare problemi, o sbaglio?

    in sostanza la parte di testo di cui sto parlando e' cosi' formattata:

    onclick='_nome_funzione("_contenuto_variabile_test o_","_contenuto_variabile_testo_","_contenuto_vari abile_testo_", ... )'
    Ultima modifica di esotica : 08-07-2008 alle ore 16.16.20

  10. #10
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Il contenuto viene generato da PHP al momento di generare la pagina, giusto?

    E' chiaro che se uno dei contenuti contiene un apice chiude l'attributo e quelli seguenti non vengono considerati.

    Se effettivamente stai usando PHP dovresti far passare le stringhe attraverso la funzione addslashes (http://it.php.net/addslashes).


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  11. #11
    esotica non è connesso Utente giovane
    Data registrazione
    08-05-2008
    Messaggi
    87

    Predefinito

    anche facendo rimanere il caratte " \ " prima dell' apice(') non funziona. Se al posto dell'apice metto un altro carattere come il "-" va tutto bene.

    adsso il richiamo della funzione e' cosi':

    onclick='_nome_funzione("_valore_variabile_con_l\' apice_", "_valore_variabile_con_l\'apice_", ...)'

  12. #12
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Non è che avresti una pagina di esempio con i dati reali?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  13. #13
    esotica non è connesso Utente giovane
    Data registrazione
    08-05-2008
    Messaggi
    87

    Predefinito

    Mi hai preceduto, ti posto la pagina con la funzione javascript:

    Codice HTML:
    <HTML>
    <HEAD>
    <SCRIPT language="javascript">
    <!--
       function modifica_data(d,a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,f1,f2,g1,g2,h1,h2,i1,i2,j1,j2) {
    
    	s = '<FORM name="moduloC" method="POST" target="_blank" action="elaborazioni.php">';
    	s += '<input type="hidden" name="operazione" value="MODIFICA-DATA">';
    	s += '<input type="hidden" name="d" value=" ' + d + ' ">';
    	s += '<input type="hidden" name="a1" value=" ' + a1 + ' ">';
    	s += '<input type="hidden" name="a2" value=" ' + a2 + ' ">';
    	s += '<input type="hidden" name="b1" value=" ' + b1 + ' ">';
    	s += '<input type="hidden" name="b2" value=" ' + b2 + ' ">';
    	s += '<input type="hidden" name="c1" value=" ' + c1 + ' ">';
    	s += '<input type="hidden" name="c2" value=" ' + c2 + ' ">';
    	s += '<input type="hidden" name="d1" value=" ' + d1 + ' ">';
    	s += '<input type="hidden" name="d2" value=" ' + d2 + ' ">';
    	s += '<input type="hidden" name="e1" value=" ' + e1 + ' ">';
    	s += '<input type="hidden" name="e2" value=" ' + e2 + ' ">';
    	s += '<input type="hidden" name="f1" value=" ' + f1 + ' ">';
    	s += '<input type="hidden" name="f2" value=" ' + f2 + ' ">';
    	s += '<input type="hidden" name="g1" value=" ' + g1 + ' ">';
    	s += '<input type="hidden" name="g2" value=" ' + g2 + ' ">';
    	s += '<input type="hidden" name="h1" value=" ' + h1 + ' ">';
    	s += '<input type="hidden" name="h2" value=" ' + h2 + ' ">';
    	s += '<input type="hidden" name="i1" value=" ' + i1 + ' ">';
    	s += '<input type="hidden" name="i2" value=" ' + i2 + ' ">';
    	s += '<input type="hidden" name="j1" value=" ' + j1 + ' ">';
    	s += '<input type="hidden" name="j2" value=" ' + j2 + ' ">';
    	s += '</FORM>';
    
    	document.getElementById('usami').innerHTML = s;
    
    	document.moduloC.submit();
       }
    
    //-->
    </SCRIPT>
    </HEAD>
    
    <BODY>
    
    <A HREF='#' onClick='javascript:modifica_data("2008-06-06","casella-grande-ma-molto-grande-anzi-grandissima-no-di-piu-enorme proprio enormissima-che-non-finisce-mai-come-dovrebbe-essere-quando-di-passano-valori-con-il-metodo-POST-A1","casella-A2","casella-B1","casella-B2","casella-C1","casella-C2","casella-D1","casella-D2","casella-E1","casella-E2","casella-F1","casella-F2","casella-G1","casella-G2","casella-H1","casella-H2","casella-I1","casella-I2","casella-J1","casella-J2")'>
    
       <SPAN STYLE="font-size: 24px; color: red; font-weight: bold;">cliccami per provare</SPAN>
    </A>
    
    
    
    <DIV ID="usami"></DIV>
    
    </BODY>
    
    </HTML>
    Ecco la pagina php che dovrebbe ricevere i dati
    Codice PHP:
    <?php
    echo "<HTML><BODY>";

    $z1 = $_POST['operazione'];
    $z2 = $_POST['d'];
    $z3 = $_POST['a1'];
    $z4 = $_POST['a2'];
    $z5 = $_POST['b1'];
    $z6 = $_POST['b2'];
    $z7 = $_POST['c1'];
    $z8 = $_POST['c2'];
    $z9 = $_POST['d1'];
    $z10 = $_POST['d2'];
    $z11 = $_POST['e1'];
    $z12 = $_POST['e2'];
    $z13 = $_POST['f1'];
    $z14 = $_POST['f2'];
    $z15 = $_POST['g1'];
    $z16 = $_POST['g2'];
    $z17 = $_POST['h1'];
    $z18 = $_POST['h2'];
    $z19 = $_POST['i1'];
    $z20 = $_POST['i2'];
    $z21 = $_POST['j1'];
    $z22 = $_POST['j2'];

    echo
    "OPERAZIONE [".$z1."]<BR>";
    echo
    "D [".$z2."]<BR>";

    echo
    "A1 [".$z3."]<BR>";
    echo
    "A2 [".$z4."]<BR>";
    echo
    "B1 [".$z5."]<BR>";
    echo
    "B2 [".$z6."]<BR>";
    echo
    "C1 [".$z7."]<BR>";
    echo
    "C2 [".$z8."]<BR>";
    echo
    "D1 [".$z9."]<BR>";
    echo
    "D2 [".$z10."]<BR>";
    echo
    "E1 [".$z11."]<BR>";
    echo
    "E2 [".$z12."]<BR>";
    echo
    "F1 [".$z13."]<BR>";
    echo
    "F2 [".$z14."]<BR>";
    echo
    "G1 [".$z15."]<BR>";
    echo
    "G2 [".$z16."]<BR>";
    echo
    "H1 [".$z17."]<BR>";
    echo
    "H2 [".$z18."]<BR>";
    echo
    "I1 [".$z19."]<BR>";
    echo
    "I2 [".$z20."]<BR>";
    echo
    "J1 [".$z21."]<BR>";
    echo
    "J2 [".$z22."]<BR>";

    echo
    "</BODY></HTML>";
    ?>
    come le ho postate io funziona. Se pero' nel primo pezzo di codice metti dopo il "piu" l'apice preceduto dal simbolo "\" al posto del meno vedrai cosa succede.

    Ti ringrazio dell'aiuto prezioso.
    Ultima modifica di esotica : 09-07-2008 alle ore 12.08.32

  14. #14
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Soluzione finale:

    Sostituisci gli apici con la relativa entità HTML: &# 39; (da scrivere tutto attaccato e-commerciale cancelletto 39 punto-e-virgola). In questo modo non dovresti avere problemi (provato).

    Però devi continuare a mettere lo slash davanti alle virgolette per cui o applichi prima la sostituzione degli apici e poi aggiungi gli slash come hai già fatto, oppure applichi gli slash escludendo gli apici e poi li sostituisci con l'entità.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •