Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    9

    Passare variabili Javascript a PHP onclick

    Salve,
    ho iniziato da poco a programmare sia in PHP che Javascript per una web app.

    Al momento ho ottenuto questo:
    Da un dropdown popolato in php riesco a creare dinamicamente un link (onclick) che indica ad una immagine quale mostrare:

    function setCard1() {
    var img = document.getElementById("scelta1");
    if (this.value === ""){
    img.src = 'immagini/collezionabili/void.png';
    }
    else {
    img.src = 'immagini/collezionabili/' + this.value + '.png';
    }
    return false;}
    document.getElementById("menu1").onchange = setCard1;

    l'immagine riesce ad ottenere il value dinamicamente con:

    $(document).ready(function(){
    $("#menu1").change(function(){
    $("img[id=scelta1]").attr("value",$(this).val());
    });
    });


    Ho bisogno di una mano per ottenere un risultato di questo tipo:
    Cliccando sull'immagine devo fare in modo di fare l'update in un record di una tabella del database, dove il value vada a sovrascrivere l'id esistente (chiave primaria).
    Non so se va usata una temporanea o una tabella "fisica" standard va bene per connessioni multiple.
    Non riesco a capire come far interagire quindi un onclick sull'immagine per passare la variabile "value" a PHP (senza refreshare la pagina).
    Ogni aiuto sar� apprezzato!
    Grazie in anticipo,
    Flavio

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    9

    Passare variabili Javascript a PHP onclick

    Edit: doppio dopo unione discussioni.
    Ultima modifica di Alhazred; 25-03-2017 a 15:08

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Benvenuto.
    Vuoi modificare la chiave primaria in una tabella, devi stare molto attento a fare questa cosa, potrebbe avere ripercussioni inaspettate.
    Questa chiave viene usata da qualche altra parte?

    Esempio semplificato per capirci (non si dovrebbe fare mai così):
    C'è la tabella Utenti, la chiave primaria è un codice alfanumerico.
    Poi c'è la tabella Indirizzi, nella quale sono contenuti gli indirizzi di residenza degli utenti e per tenere traccia del proprietario di un indirizzo c'è anche il campo "utente" in cui è contenuto l'id uguale alla tabella Utenti.
    Ora se cambi l'id nella tabella Utenti, devi ricordarti di cambiarlo anche nella tabella Indirizzi, altrimenti ti ritrovi con dati inconsistenti.

    Per quanto riguarda il passaggio di dati da JS a PHP devi usare AJAX, in sostanza devi inviare dati ad una pagina PHP usando JS.
    Per informazioni sull'uso di AJAX devi chiedere nella sezione Javascript, ma se cerchi su internet troverai miliardi di esempi.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    La risposta è ajax. Un esempio.

    Codice PHP:
    <!DOCTYPE html>
    <
    html>
    <
    head>
    <
    title>Untitled</title>
    <
    script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script language="JavaScript" type="text/javascript">
    <!--
    function titi(oggetto) {
       var res    = Math.random();
       var src    = oggetto.src;
       var id     = oggetto.id;
       var param  = '&src='+src+'&id='+id+'&r='+res;
       $.ajax({
                 url  : 'test9191b.php',
                 type : 'POST',
                 data : param, 
        dataType : 'html'
       }).done(function(html) {$('#risultato').html(html)}) ;
    }
    //-->
    </script>
    <meta http-equiv="pragma" content="no-cache" />
    </head>
    <body>
    <img src="immagini/redwood.jpg" id="img01" onclick="titi(this);"/>
    <div id="risultato">
    </div>
    </body>
    </html> 
    test9191b.php
    Codice PHP:
    <?php
    $id  
    $_POST['id'];
    $src $_POST['src'];
    // qui metti il codice per aggiornare i dati
    print "Salvato : $id => $src";
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    9
    Intanto grazie della risposta!
    In sostanza la tabella principale dove vengono estratte le informazioni non viene intaccato, modificato o sovrascritto in alcun modo (quello che popola i dropdown e la fonte di ogni dato necessario all'app).
    Il concetto è questo: ad ogni click devo modificare l'id del record in un'altra tabella che conterrà un massimo di 30 record. Questi record conterranno quindi un id identico alla tabella primaria che contiene tutti i dati, da li nascerà il problema successivo che affronterò per tempo: far matchare ad ogni campo i dati dall'altra tabella in base alle due chiavi primarie che saranno identiche.
    Tutto il progetto consiste in un'unica pagina, i risultati (inviati dal click sull'immagine) verranno quindi mostrati in una tabella html con un echo semplice che richiama un campo dal record necessario.
    Essendo veramente all'inizio mi occorre una mano per impostare tutto questo: la tabella che devo utilizzare deve essere una comune tabella oppure una temporanea così da poter far utilizzare il servizio a più persone contemporaneamente? Speravo di evitare anche AJAX, sarebbe un altro linguaggio da imparare da zero ed in questo momento è un po' troppo! :P

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quote Originariamente inviata da Flaivo Visualizza il messaggio
    ... Speravo di evitare anche AJAX, sarebbe un altro linguaggio da imparare da zero ed in questo momento è un po' troppo! :P
    AJAX non è un altro linguaggio, è un modo di usare Javascript, per questo ti ho indicato di chiedere informazioni in quella sezione.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    9
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    AJAX non è un altro linguaggio, è un modo di usare Javascript, per questo ti ho indicato di chiedere informazioni in quella sezione.
    come avrete capito sono digiuno di molti concetti basilari.
    Provo a capire ed interpretare il codice che badaze mi ha passato, veramente prezioso, grazie mille!

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    9
    <!--
    function titi(oggetto) {
    var res = Math.random();
    var src = oggetto.src;
    var id = oggetto.id;
    var param = '&src='+src+'&id='+id+'&r='+res;
    $.ajax({
    url : 'test9191b.php',
    type : 'POST',
    data : param,
    dataType : 'html'
    }).done(function(html) {$('#risultato').html(html)}) ;
    }
    //-->
    Cerco di interpretare ma non riesco a capire la dichiarazione delle variabili.

    A braccio capisco:
    url : 'test9191b.php', indica dove pescare la funzione php per fare l'update in MySQL
    type : 'POST', tipo di funzione che va utilizzata per inviare i dati al database
    data : param, indica che i valori sono parametri

    Nel corpo c'è un div con id RISULTATO che deduco sia lo "spot" dove viene stampato il risultato della funzione, è corretto?
    .done(function(html) {$('#risultato').html(html)})

    Nel file php abbiamo quindi questo codice:

    <?php
    $id
    = $_POST['id'];
    $src = $_POST['src'];
    // qui metti il codice per aggiornare i dati
    print "Salvato : $id => $src";

    Qui mi perdo completamente, il codice che andrei ad inserire sarebbe questo:

    $sql = "UPDATE TABELLAUTENTE SET name='id'
    WHERE cardId=01";
    $pdo->exec($sql);

    ma ovviamente non funziona. Detesto essere un tale nabbo... ma da qualche parte devo iniziare!

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    url : 'test9191b.php', indica dove pescare la funzione php per fare l'update in MySQL
    type : 'POST', tipo di funzione che va utilizzata per inviare i dati al database
    data : param, indica che i valori sono parametri
    url, type e data sono imposti da jQuery.
    url segna la pagina che verrà richiamata. Il codice presente in test9191b.php non viene pescato cioè non è rimpatriato ma bensi eseguito.
    Per il resto hai azzeccato.

    Nel corpo c'è un div con id RISULTATO che deduco sia lo "spot" dove viene stampato il risultato della funzione, è corretto?
    .done(function(html) {$('#risultato').html(html)})
    E' corretto. Viene richiamato alla fine della chiamata ajax. Puoi anche non mettere .done.

    Codice PHP:
    <?php
     $id  
    $_POST['id'];
    $src $_POST['src'];
    // qui metti il codice per aggiornare i dati
    print "Salvato : $id => $src";

    Qui mi perdo completamenteil codice che andrei ad inserire sarebbe questo:

     
    $sql "UPDATE TABELLAUTENTE SET name='id' 
            WHERE cardId=01"
    ;
     
    $pdo->exec($sql);
    Devi aprire la connessione con il database... e cercare in rete alcuni esempi di update con PDO. Nella query che hai postato assegni la parola 'id' a name non il valore di id.

    Poi non capisco la query. In ogni caso vai a modificare lo stesso record (cardId = 01). Non ha senso secondo me. Perché se siamo in due ad usare la tua pagina andremo tutti e due a modificare lo stesso record.
    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

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    9
    Si, infatti una parte del problema è quella che hai indicato alla fine. Il nodo è: come dico alla query
    $sql = "UPDATE TABELLAUTENTE SET name='id'
    WHERE cardId=01"
    ;
    di prendere il value dell'immagine che clicco. Ho impostato la funzione e (solo per una questione di prova) ho indicato un div specifico per vedere l'uscita della funzione, il risultato è l'intero path dell'immagine, non il suo value. indicando name='id' indico quindi di inserire una stringa denominata 'id' al posto del valore name della tabella, dove l'id (indicato da cardId nel mio caso) è equivalente a 01. Devo capire come indicargli invece che quell'update è una variabile presa da quell'onclick.
    In maniera forse più ingenua l'obiettivo lo avevo centrato con questo script
    $('#scelta1').on('click', function take() { var nome = $('#menu1').select2('data')[0];
    $('#pick02').text(nome.text);
    });
    il problema è sostanzialmente: come indico a php di prendere un valore da una variabile (tipo in questo caso "nome") che non sta in php ma è impostata su js

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.