Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303

    [jQuery] $.each e passaggio parametri

    Ciao a tutti,
    sono abbastanza digiuno di jQuery... ho una funzione che tramite $.each mi restituisce una serie di parametri

    Codice PHP:
    var scrivi = $("<tr />", {}).html("<td>" var1 "</td>" "<td>" var2 "</td>" "<td>" var3 "</td>")
    $(
    "#dataLS").append(scrivi); 

    in pratica mi visualizza una tabella con questa struttura:

    VAR1a VAR2a VAR3a
    VAR1b VAR2b VAR3b
    VAR1c VAR2c VAR3c
    VAR1x VAR2x VAR3x

    In totale ho 100 righe (record).

    Ora, vorrei caricare in un database questi dati: ho gia' predisposto la parte php+mysql con relativa richiesta JSON e funziona, ma sto pensando che in questo modo (inserendo la richiesta http nel ciclo), andrei a creare ad ogni ciclo 100 richieste http (e relative query) e non mi sembra il massimo della funzionalita', soprattutto per il database.

    A questo punto stavo pensando di visualizzare comunque il risultato come tabella, come gia' accade, ma in basso aggiungere un pulsante "INVIA AL SERVER" col quale decidere se inviare i dati o meno.

    A questo punto pero' non saprei come muovermi... la cosa che mi viene in mente e' quella di inserire 300 <input type="hidden"> e passarli in una volta sola con jQuery allo script php, ma mi sembra un po' complessa come cosa.

    Come potrei uscirne

    Grazie a tutti!

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, secondo me ti converrebbe creare un array di oggetti (json) che rispecchia la tua struttura.
    Così avrai un oggetto pulito da ciclare sia per inviarlo al server quando vuoi che per costruirci l'html della tabella.
    Esempi

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303
    Grazie m4rko80, non avevo pensato agli array... Stavo pensando di memorizzare tutto su un db locale, poi quando necessario recuperare i dati e mandarli su mysql, ma ho sempre il problema di ciclare la query.
    Tu dici invece di usare le 3 variabili var1, var2, var3 di creare un array che le contiene, ma in che modo?
    Dovrei fare una cosa del genere?
    codice:
    var dati = [
        {"var1":"VAR1a", "var2":"VAR2a", "var3":"VAR3a"}];
    
    Ma dopo non ho comunque 100 array da caricare? (nel caso precedente avevo 300 variabili ma ad ogni ciclo ne caricavo 3), quindi avrei sempre fatto 100 cicli.



    Grazie, buon lavoro.

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    se sai che sono 100 esatte non hai necessità di fare alcun ciclo in verità. puoi accedere ad ogni gruppo semplicemente con l'indice.
    anche se non sono 100, sia con js che con php, puoi contare il numero di elementi nell'array e ragionare su quelli.

    per metterle nel db puoi fare un'unica query ma il vantaggio dell'array è proprio il ciclo che ti evita di scrivere codice ripetitivo.

    perchè odi i cicli?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303
    Ciao Ciro,
    a dire il vero non sono sicuro che sono 100... possono essere da 0 a 130, ovviamente con 0 non avvio nemmeno la scrittura.
    Ci sto studiando sopra, ma per il momento non ho ancora capito come fare in modo di fare un'unica query anziché 100 (o il numero che sarà).

    Grazie, a presto!

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Quote Originariamente inviata da carloscara Visualizza il messaggio
    Ciao Ciro,
    a dire il vero non sono sicuro che sono 100... possono essere da 0 a 130, ovviamente con 0 non avvio nemmeno la scrittura.
    Ci sto studiando sopra, ma per il momento non ho ancora capito come fare in modo di fare un'unica query anziché 100 (o il numero che sarà).

    Grazie, a presto!
    In merito ti consiglio di chiedere spiegazioni sul forum PHP. Qui non siamo in argomento.
    Suggerimento: è sufficiente creare una query sql che abbia più values.....
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303
    Certamente...
    con PHP più o meno me la cavo ma il problema credo risieda ancora qui.

    Ho aggiunto un passaggio intermedio, in pratica invece di salvare subito su mySQL, salvo prima in locale su SQLite, poi con un'altra funzione lo "estrapolo" e lo carico su mySQL tramite PHP.

    All'interno del ciclo ho inserito questa funzione:

    codice:
    db.transaction(function(tx) {    tx.executeSql("INSERT INTO tabella (campoA, campoB, campoC, campoD) VALUES (?,?,?,?)", [valA, valB, valC, valD], function(tx,res){
           alert("database aggiornato");
    });
    }, function(err){
        alert("errore");
    });
    Per funzionare funziona... il problema e' che il codice sopra postato lo eseguo 100 volte. Se ci fosse un modo per eseguirlo in una volta sola sarebbe il massimo.
    Magari in questo caso non succede niente (essendo in locale) ma se genero 100 richieste http in pochi secondi non è il massimo.

    Spero di aver chiarito meglio il problema.

    Grazie

  8. #8
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Quote Originariamente inviata da carloscara Visualizza il messaggio
    Certamente...
    con PHP più o meno me la cavo ma il problema credo risieda ancora qui.

    Ho aggiunto un passaggio intermedio, in pratica invece di salvare subito su mySQL, salvo prima in locale su SQLite, poi con un'altra funzione lo "estrapolo" e lo carico su mySQL tramite PHP.

    All'interno del ciclo ho inserito questa funzione:

    codice:
    db.transaction(function(tx) {    tx.executeSql("INSERT INTO tabella (campoA, campoB, campoC, campoD) VALUES (?,?,?,?)", [valA, valB, valC, valD], function(tx,res){
           alert("database aggiornato");
    });
    }, function(err){
        alert("errore");
    });
    Per funzionare funziona... il problema e' che il codice sopra postato lo eseguo 100 volte. Se ci fosse un modo per eseguirlo in una volta sola sarebbe il massimo.
    Magari in questo caso non succede niente (essendo in locale) ma se genero 100 richieste http in pochi secondi non è il massimo.

    Spero di aver chiarito meglio il problema.

    Grazie
    devi costruire appunto la query in un ciclo foreach.

    normalmente sarebbe

    codice:
    insert into table (a,b,c) values ('a','b','c')
    devi quindi fare in modo di avere

    codice:
    insert into table (a,b,c) values ('a','b','c'),('a','b','c')
    ora devi vedere come realizzare la seconda stringa ma penso che ti basti vedere la documentazione della classe che usi per interagire col db.

    solo un consiglio: non ha senso fare le cose prima in locale e poi in remoto. è un doppio lavoro inutile.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303
    Quote Originariamente inviata da ciro78 Visualizza il messaggio
    devi quindi fare in modo di avere

    codice:
    insert into table (a,b,c) values ('a','b','c'),('a','b','c')
    Quindi in sostanza sarebbe in modo da avere una cosa del genere, giusto?

    codice:
    insert into table (a,b,c) values ('a1','b1','c1'),('a2','b2','c2'),
    ('a3','b3','c3'),('ax','bx','cx'), e così via fino a ('a100','b100','c100')

    Basterebbe mettere nel ciclo solo la parte dopo values a questo punto... credo sia fattibile in questo modo; provo il prima possibile...

    Grazie

  10. #10
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Quote Originariamente inviata da carloscara Visualizza il messaggio
    Quindi in sostanza sarebbe in modo da avere una cosa del genere, giusto?

    codice:
    insert into table (a,b,c) values ('a1','b1','c1'),('a2','b2','c2'),
    ('a3','b3','c3'),('ax','bx','cx'), e così via fino a ('a100','b100','c100')

    Basterebbe mettere nel ciclo solo la parte dopo values a questo punto... credo sia fattibile in questo modo; provo il prima possibile...

    Grazie
    esatto. occhio che non so come sqllite è messo con le sql injection...mettere dati direttamente nel db può essere dannoso....
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


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.