- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- Aggiungere gruppo righe a tabella
-
Grazie per il benvenuto e per la risposta.
Scusa se sono stato poco chiaro, provo a spiegarmi.
Ho una tabella (DB mysql) in cui memorizzo i seguenti dati:
"prodotto", "macroprodotto", "magazzino", "quantità".
Tramite PHP creo una pagina html che visualizza questi dati in forma tabellare.
I dati visualizzati sono raggruppati per "macroprodotto", quindi il risultato sarà il seguente:_______________magazzino1 magazzino2 magazzino3
macroprodotto A___quantità1__quantità2___quantità3
+
macroprodotto B___quantità1__quantità2___quantità3
+Tra un macroprodotto e l'altro inserisco un pulsante (+) che dovrebbe attivare il dettaglio per prodotto del macroprodotto stesso come segue:
_________________"magazzino1""magazzino2""magazzino3"
"macroprodotto A"___quantità1____quantità2____quantità3__"prodotto1"_______quantità_____quantità_____quantità
__"prodotto2"_______quantità_____quantità_____quantità
__"prodotto3"_______quantità_____quantità_____quantità"macroprodotto B"___quantità_____quantità_____quantità
+I records della tabella sono veramente tanti quindi non posso creare la pagina staticamente e nascondere o visualizzare parti della stessa perciò devo gestire il tutto dinamicamente.
Con il il metodo DOM-based, per quel che ho potuto capire, posso creare le nuove righe della tabella ma non ho capito come leggere i dati dal DB e visualizzarli nelle strutture create.
Con innerHtml riesco a farlo ma funziona solo su firefox mentre a me serve che funzioni su IE6 e IE7.
Ho cercato qualche esempio a riguardo ma non ho ancora trovato nulla.
Grazie in anticipo
Saluti
vnic96
-
Non riesco a capire come riescie a funzionare con innerHTML.
InnerHTML serve per inserire del codice HTML in un nodo.
Per esempio:document.getElementById("miodiv").innerHTML = '<strong>Esempio</strong>'
Questo metodo non legge comunque i dati dal database.
Per leggere i dati dal database devi effettuare una chiamata asincrona ad un'altra pagina. Questa richiesta va fatta tramite l'oggetto XMLHttpRequest.P.S.: Perchè non utilizzi un framework javascript, per esempio jQuery? Con poche righe faresti ciò che hai descritto.
-
Si, l'ho fatto proprio così ma non ho utilizzato div ma tbody.
è possibile utilizzare un div all'interno di una tabella al posto del tbody in modo da poter appendere un gruppo di righe?
-
@vnic96 said:
è possibile utilizzare un div all'interno di una tabella al posto del tbody in modo da poter appendere un gruppo di righe?
No, non puoi.
Però potresti appendere n righe, oppure una sola riga con una cella in cui è contenuto il div.
-
si ma così perdo l'allineamento con il resto della tabella.
attualmente funziona così come dici tu (se ho ben capito il tuo msg) ma mi richiedono l'allineamento tra le righe del dettaglio e quelle che lo precedono
-
Potrei ovviare con xml.
Potrei farmi un file xml per ogni macroprodotto e leggerlo con una funzione javascript e con il metodo dom potrei aggiungere e popolare le nuove righe.
Non ho mai utilizzato xml, pensi possa essere troppo lento leggere un xml?
-
@vnic96 said:
potrei ovviare con xml
potrei farmi un file xml per ogni macroprodotto e leggerlo con una funzione javascript e con il metodo dom potrei aggiungere e popolare le nuove righe.
Con il javascript non devi leggere obbligatoriamente un file xml, ma anche un file di testo o html.
@vnic96 said:non ho mai utilizzato xml, pensi possa essere troppo lento leggere un xml?
No, non è lento, anzi nelle web application più professionali viene usato xml o json.
-
grazie pe la pazienza
appena possibile proverò a seguire questa strada
Saluti
vnic96
-
@vnic96 said:
grazie pe la pazienza
appena possibile proverò a seguire questa stradaFigurati.
Tieni in considerazione il suggerimento di utilizzare un framework come jQuery o altro equipollente. Ti semplifica di parecchio la vita.
-
rieccomi
con javascript e xml funziona ma su IE7 è di una lentezza spaventosa!!
IExplorer.exe occupa la cpu al 100% fino a quando non ha finito.
Hai qualche suggerimento?
Domani farò altre prove per capire se il problema è nella lettura del file xml o nella generazione della struttura tr/td che vado ad appendere al tbody
-
il problema sta nella costruzione della struttura. funziona perfettamente con FF ma con IE7 e' lentissima.
ecco il codice
var tbody = document.getElementById("details_"+tester); var prodotti = xml.getElementsByTagName("prodotto"); for (var i = 0; i < prodotti.length; i++) { var e = prodotti*;//leggo i nodi var d1 = e.getElementsByTagName("D1")[0].firstChild.data; . . var dn = e.getElementsByTagName("Dn")[0].firstChild.data; row = tbody.insertRow(i + 1); row.insertCell(0).appendChild(document.createTextNode("")); row.insertCell(1).appendChild(document.createTextNode("")); row.insertCell(2).appendChild(document.createTextNode(D1)); row.insertCell(3).appendChild(document.createTextNode("")); row.insertCell(4).appendChild(document.createTextNode(D2)); row.insertCell(5).appendChild(document.createTextNode("")); row.insertCell(6).appendChild(document.createTextNode(D3)); row.insertCell(7).appendChild(document.createTextNode("")); row.insertCell(8).appendChild(document.createTextNode(D4)); row.insertCell(9).appendChild(document.createTextNode("")); row.insertCell(10).appendChild(document.createTextNode(D5)); row.insertCell(11).appendChild(document.createTextNode("")); row.insertCell(12).appendChild(document.createTextNode(D6)); row.insertCell(13).appendChild(document.createTextNode("")); row.insertCell(14).appendChild(document.createTextNode(D7)); row.insertCell(15).appendChild(document.createTextNode("")); row.insertCell(16).appendChild(document.createTextNode("D8")) row.insertCell(17).appendChild(document.createTextNode("")); row.insertCell(18).appendChild(document.createTextNode(D9)); row.insertCell(19).appendChild(document.createTextNode("")); row.insertCell(20).appendChild(document.createTextNode(D10)); row.insertCell(21).appendChild(document.createTextNode("")); row.insertCell(22).appendChild(document.createTextNode("D11")) } document.getElementById('img1_'+prod).style.display="none"; document.getElementById('img2_'+prod).style.display=""; document.getElementById('details_'+prod).style.display=""; ```il bello e' che dovrei ancora aggiungere altre 26 colonne!! esiste un altro modo per creare le righe da aggiungere al tbody? grazie in anticipo Saluti vnic96
-
ho sostituito row.insertcell con createelement per tr e td
cosi' sembra andare decisamente meglio.