Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    19

    Passare variabile da button onclick a un div

    Ciao a tutti,
    premessa: sono una principiante in javascript.

    Il mio problema è il seguente:


    Ho un button onclick e un div nascosto.
    cliccando il bottone mostro il div.

    Vorrei contestualmente far passare una variabile al div nascosto.

    La variabile la passerei in php.

    Secondo voi può fare?

    Grazie a tutti

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    Si si può fare!
    Se la variabile e js puoi passarla cosi alla funzione TuaFunzione(TuaVariabile) oppure renderla globale cioè dichiararla al di fuori della funzione var MiaVariabileGlobale=Valore; MiaFunzione(){....}.
    Se la variabile e php devi richiamare la pagina php che genera la variabile con ajax (vedi google per maggiori dettagli su ajax) per passarla alla funzione.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    19
    ciao Andrea, grazie per la tua risposta.

    Ho fatto delle prove e qualcosa di buono forse sta venendo fuori.
    L'unico problema è settare il codice js+ajax nel ciclo while php, attraverso il quale recupero le variabili.

    In pratica con la funzione WHILE prendo i dati da un database e li ciclo.

    il ciclo while/php è così strutturato (evito di scrivere la query):

    codice:
    while($legginotizie= mysql_fetch_array($querynotizie) ){
    
    echo ' 
    <form name="modulo'.$legginotizie['id_notizia'].'">
    
    <input type="hidden" name="id" id="nomeid'.$legginotizie['id_notizia'].'" value="'.$legginotizie['id_notizia'].'">
    
    
    <input type="button" value="Apri un thread" id="bottone'.$legginotizie['id_notizia'].'">		
    	
     </form>
    
    <div id="risultato"></div>	
    
    }

    pertanto nel mio form avrò delle strutture id differenti le une dalle altre grazie all'aggiunta di '.$legginotizie['id_notizia'].' il quale va a prendere il valore del campo id_notizia (chiave primaria) nella tabella notizie del database.


    se ho 3 righe (o record) nella mia tabella notizie e se i rispettivi valori nel campo id_notizia sono 1, 2 e 3, tramite il mio ciclo while/php stamperò 3 bottoni con id diverso:
    nomeid1 - nomeid2 - nomeid3.


    ora il mio bel scriptino jaascript/ajax

    codice:
    $(document).ready(function() {
    
    
      //al click sul bottone del form
      $("#bottone"+id).click(function(){
    	  
     //mostro il div result	  
      $("#result").attr("style", "display:block;");
    
    
        //associo variabili
        var recuperonomeid = $("#nomeid"+id).val();
    
    
      //chiamata ajax
        $.ajax({
    
    
         //imposto il tipo di invio dati (GET O POST)
          type: "POST",
    
    
          //invio i dati alla seguente pagina
          url: "risultato_aggiunta.php",
    
    
          //i dati inviati sono
          data: "recuperonomeid =" + recuperonomeid ,
          dataType: "html",
    
    
          //Inizio visualizzazione errori
          success: function(msg)
          {
            $("#risultato").html(msg); 
          },
          error: function()
          {
            alert("Chiamata fallita, si prega di riprovare..."); // callback in caso di fallimento
          }
        });
      });
    });
    ecco così impostato non funziona. qualche aiuto???

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    19
    rettifico:

    se ho 3 righe (o record) nella mia tabella notizie e se i rispettivi valori nel campo id_notizia sono 1, 2 e 3, tramite il mio ciclo while/php stamperò 3 bottoni con id diverso:
    bottone1 - bottone2 - bottone3

    e le variabili prese dall'input hidden:
    nomeid1 - nomeid2 - nomeid3.

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non so se intendi una cosa del genere.

    Il file test9347a.php serve solo per mostrare il rinvio di valori da php a ajax.

    codice HTML:
    <!DOCTYPE html>
    <html>
    <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script>
    function pippo() {
       document.getElementById('miodiv').style.display = 'block';
       var res    = Math.random();
       $.ajax({
                 url  : 'test9347a.php',
                 type : 'POST',
                 data : {'r' : res}, 
        dataType : 'html'
       }).done(function(html) {$('#miodiv').html(html)}) ;
    }
    </script>
    </head>
    <body>
    <input type="button" value="Clicca" onclick="pippo()"/>
    <div id="miodiv" style='display:none'>
    </div>
    </body>
    </html>

    test9347a.php

    Codice PHP:
    <?php
    print rand 1000 );
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Non funziona perché stai utilizzando una variabile "id" senza averla valorizzata da nessuna parte

    codice:
    $(document).ready(function() {
    
    
    
    
      //al click sul bottone del form
      //$("#bottone"+id).click(function(){//qui id sarà undefined...
      
      $("input[id^="bottone"]).click(function(){
      //associo l'evento ai pulsanti il cui id inizia per "bottone"
      //(sarebbe più comodo usare una classe su questo tipo di pulsanti e poi associare l'evento tramite:
      //$(".bottoni_alpha").click(function(){
    
    
     //mostro il div result   
      $("#result").attr("style", "display:block;");
    
    
    
    
        //associo variabili
        //var recuperonomeid = $("#nomeid"+id).val();
        var recuperonomeid = $(this).attr('name').replace('bottone','');
        //recupero l'id della notizia dall'attributo "name" del pulsante cliccato
        //sarebbe più comodo usare un data-attribute contenente l'id
    
    
    
    
      //chiamata ajax
        $.ajax({
    
    
    
    
         //imposto il tipo di invio dati (GET O POST)
          type: "POST",
    
    
    
    
          //invio i dati alla seguente pagina
          url: "risultato_aggiunta.php",
    
    
    
    
          //i dati inviati sono
          data: "recuperonomeid =" + recuperonomeid ,
          dataType: "html",
    
    
    
    
          //Inizio visualizzazione errori
          success: function(msg)
          {
            $("#risultato").html(msg); 
          },
          error: function()
          {
            alert("Chiamata fallita, si prega di riprovare..."); // callback in caso di fallimento
          }
        });
      });
    });

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    19
    grazie mille sia a badaze che a lucavizzi, per i vostri suggerimenti, ma ho risolto cos�:


    1. creo una query per prelevare i dati dal database

    2. faccio un ciclo while/php

    2. inserisco il codice javascript + ajax all'interno del ciclo while

    3. inserisco un form contenente input hidden e un input button


    la tabella del database si chiama notizia ed � cos� strutturata

    id_notizia - articolo - autore
    1 - bla bla bla a - mario
    2 - bla bla bla b - giovanni
    3 - bla bla bla c - luca




    codice:
    // 1. creo la query
    $query = "SELECT * FROM notizia ORDER BY data DESC";
    $query1 = mysql_query($query);
    
    
    // 2. creo il ciclo while
    while($dati = mysql_fetch_array($query1) ){
    	
    
    
    // 3. inserisco il codice javascript / ajax 	
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
    
    
      //al click sul bottone del form
      $("#<?php echo $dati['id_notizia']; ?>").click(function(){
    
    
        //associo variabili
        var name = $("#n<?php echo $dati['id_notizia']; ?>").val();
        var mansione = $("#m<?php echo $dati['id_notizia']; ?>").val();
    
    
      //chiamata ajax
        $.ajax({
    
    
         //imposto il tipo di invio dati (GET O POST)
          type: "POST",
    
    
          //Dove devo inviare i dati recuperati dal form?
          url: "risultato_aggiunta.php",
    
    
          //Dati da inviare
          data: "name=" + name + "&mansione=" + mansione,
          dataType: "html",
    
    
          //Inizio visualizzazione errori
          success: function(msg)
          {
            $("#risultato").html(msg); 
          },
          error: function()
          {
            alert("Chiamata fallita, si prega di riprovare...");
          }
        });
      });
    });
    </script>
    
    
    // 5. creo il form
    
    <?php echo $dati['articolo']; ?>
    
    <form name="modulo<?php echo $dati['id_notizia']; ?>">
    
    
        <input type="hidden" name="name" value="<?php echo $dati['id_notizia']; ?>" id="n<?php echo $dati['id_notizia']; ?>">
    
    
         <input type="hidden" name="mansione" value="<?php echo $dati['autore']; ?>" id="m<?php echo $dati['id_notizia']; ?>">
    
    
        <input type="button" id="<?php echo $dati['id_notizia']; ?>" value="Invia i dati">
    </form>
    
    
    
    
    }



    laddove � presente un id, lo sostituisco con la variabile $dati['id_notizia'].
    cos�, faccio in modo di avere id e value dei campi input hidden e l'id dell'input button tutti diversi, poich� pescano i dati dalla chiave primaria della tabella notizia.
    in pratica avr�:

    form id=1
    input hidden value=1 id=1
    input hidden value=mario id=1
    input button id=1

    form id=2
    input hidden value=2 id=2
    input hidden value=giovanni id=2
    input button id=2

    form id=3
    input hidden value=3 id=3
    input hidden value=luca id=3
    input button id=3

    allo stesso modo, anche il codice javascript / ajax viene ciclato ed � come se avessi n codici quante sono le righe estratte dalla tabella:

    // primo codice (non lo scrivo tutto...)
    //al click sul bottone del form
    $("#1").click(function(){


    //associo variabili
    var name = $("#n1").val();
    var mansione = $("#m1").val();


    // secondo codice (non lo scrivo tutto...)
    //al click sul bottone del form
    $("#2").click(function(){


    //associo variabili
    var name = $("#n2").val();
    var mansione = $("#m2").val();


    // terzo codice (non lo scrivo tutto...)
    //al click sul bottone del form
    $("#3").click(function(){


    //associo variabili
    var name = $("#n3").val();
    var mansione = $("#m3").val();



    ovviamente ogni codice viene richiamato dal relativo form!


    fatemi sapere se quello che ho scritto � corretto oppure no... ad ogni modo a me funziona...

  8. #8
    Nella tua soluzione c'è troppa ridondanza.
    Sarebbe più elegante avere un unico script che gestisce tutti i forms, ne gioverebbe anche il tempo di caricamento della pagina.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    19
    Tecnicamente il ciclo while � ridondante... ripetendosi finch� non c'� un'interruzione. Ma della sua costruzione io non ne sono responsabile! � fatto cosi!

    Lo script mio � al limite artigianale, ma non ridondante. Anzi. Cercando di avere un id unico non c'� proprio nulla di ridondante. Ripete se stesso, ma diversificandosi.

    Sull'eleganza ti do ragione. Ma bisogna pur scendere a compromessi!

    Alternative se ce ne sono spiegatenelle

  10. #10
    Il costrutto while non è intrinsecamente ridondante, lo rendi ridondante tu ripetendo il codice js ad ogni ciclo.

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.