Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    Si può creare una datagrid?

    Ciao a tutti, premetto che sto facendo la mia prima applicazione in PHP che tra l'altro mi serve anche per esportare dei dati di lavoro e quindi non è un'applicazione che sto facendo solo per imparare un po' di php.
    Sono arrivato ad un ottimo punto, nel senso che quello che dovrebbe fare già lo fa, solo che ora mi sono messo in testa di fare il figo e voglio tentare di ottimizzarla.
    Lo script che ho creato, non fa altro che prendere dei dati da un database, ordinarli e spararli in un file di testo con un determinato formato che mi è stato richiesto.
    A questo punto, volevo aggiungere la possibilità di avere una lista con tutte le voci da esportare e poter selezionare solo alcune voci a discrezione dell'utente.
    Per fare questo ho iniziato a inserire tutti i valori in una listbox, però avendo più campi da inserire vorrei che venissero visualizzati tutti incolonnati correttamente e questo dopo svariati tentativi ho visto che non è possibile.
    Ho pensato che a questo punto una griglia (datagrid) potrebbe essere la soluzione, però ho fatto un po' di ricerche ma trovo solo script con decine e decine di files da inserire nel server (cosa che vorrei evitare) e mi chiedevo se non esiste già qualcosa di molto semplice incorporato nel sistema (come per esempio la listbox).
    Scusate la domanda che per voi magari sembrerà banale, ma per me che sto iniziando ora con php/html/mysql è tutto un po' un'impresa
    Grazie.
    Stefanoxjx

  2. #2
    Non ho ben capito in sostanza cosa vorresti avere come risultato?

  3. #3
    Penso che l'unico modo sia simulare il datagrid attraverso javascript.
    Per esempio, prima di tutto ti crei una tabella, con tutti i tuoi valori ben incolonnati, poi, trasformi in valori in link (puoi mascherarli facilmente con un po' di css).
    A questo punto, nel campo header dei link , inserisci la funzione javascript per, selezionare/deselezionare, possiamo chiamarla seleziona(), e come argomento passi il numero della riga. A questo punto, crei un array multidimensionale javascript, contenente un array per ogni riga, in cui inserirai tutti i valori che ti interessano della riga, in più un valore "selected".
    La funzione selezione, non andrà a fare altro che andare a controllare se l'array della riga il cui indice è passato come argomento, ha il campo selected impostato su true, in tal caso impostarlo su false e viceversa.
    Infine, alla pressione di un pulsante, reindirizzi con javascript alla pagina php che elaborerà i dati, passando via get una stringa contenente, in qualche modo, tutto l'array.

    Grazie a javascript potrai poi apportare varie migliorie grafiche, come evidenziare la riga selezionata.

    Mi dispiace non poterti essere stato molto utile, ma non so quasi nulla di javascript, per cui ti consiglio di chiedere all'apposito forum.

    Auguri per i tuoi studi!

  4. #4
    Ti ringrazio comunque della risposta, anche se quello che mi hai detto, per il mio livello attuale forse è ancora un po' troppo complicato
    Stefanoxjx

  5. #5
    Originariamente inviato da Samleo
    Non ho ben capito in sostanza cosa vorresti avere come risultato?
    Cerco di spiegarmi meglio............
    Praticamente, ho un database con alcune tabelle tra cui quella che interessa a me che contiene svariati campi, per esempio "codice, descrizione, categoria e prezzo".
    Avrei necessità di inserire alcuni o tutti questi campi in una lista di selezione, cosa che ho provato a fare tramite listbox, però il risultato non è molto leggibile, mentre mi servirebbe che i vari campi venissero incolonnati per bene in modo da rendere il tutto leggibile a colpo d'occhio.
    Ho fatto varie prove ma nella listbox non mi riesce di incolonnare per bene i vari campi e il risultato è quello che puoi vedere nell'immagine qui sotto:

    Qui c'è solo il campo descrizione e categoria, ma dovrei aggiungerne altri due.
    Come puoi vedere ho tentato di suddividere anche la descrizione dalla categoria con un pipe, però la leggibilità lascia molto a desiderare
    Quindi ho pensato che forse un datagrid potrebbe essere la soluzione, però sono aperto anche ad altri consigli
    Grazie.
    Stefanoxjx

  6. #6
    Il risultato deve essere necessariamente un file di testo?

  7. #7
    Originariamente inviato da Samleo
    Il risultato deve essere necessariamente un file di testo?
    Attenzione, il file di testo già lo creo attraverso una serie di apposite istruzioni, non è quello il problema.
    La listbox viene popolata tramite una query e serve solo per poter selezionare dei record che poi verranno trasportati nel file di testo.
    Tutto quello che ti ho detto finora già lo faccio senza problemi, il mio problema è quello di riuscire ad avere una listbox che al posto di mostrarmi i record in questo modo:

    codice:
    codice|descrizione|categoria|prezzo
    2343|descrizione bella bella|bella|88888
    67|descrizione corta|corta|7777
    me li mostri in questo modo:
    codice:
    codice  descrizione                categoria     prezzo
      2343  descrizione bella bella      bella        88888
        67  descrizione corta            corta         7777
    perchè se i recordo sono 10 può andare bene lo stesso anche se non proprio in ordine, ma se iniziano ad essere 1000 diventa un po' un problema capire quali selezionare.
    Spero di essermi spiegato un po' meglio
    Stefanoxjx

  8. #8
    Be', a questo punto, la soluzione più semplice, mi sembra usare, nella listbox, un carattere a spaziatura fissa, come courier, e, per incolonnare i risultati aggiungere un certo numero di spazi tra un campo e l'altro:
    codice:
    Campo        |Altrocampo |bla   |ecc
    CampoPiùLungo|Altrocampo1|blabla|ecc
    Capisci cosa intendo?
    Puoi fare ciò molto semplicemente attraverso php:
    Perima d scrivere i risultati, controlli colonna per colonna il database, trovando il record con la lunghezza maggiore per ogni colonna (usa strlen($record)). A quest punto, quando scrivi i dati, aggiungi dopo ogni record (prima di inserire "|"), tanti spazi quanta è la differenza di lunghezza con il record più lungo (usa str_repeat()), in questo modo, ottieni i risultati perfettamente incolonnati, senza usare javascript o altro. L'unica cosa da tenere a mente, è usare i CSS per cambiare il font del listbox: puoi farlo con l'attributo html style="font-family:Courier;"

    Spero di esserti stato utile, se posti lo script con cui estrai i dati dal database, ti posso dare una mano a modificarlo!

  9. #9
    Non puoi molto semplicemente usare una tabella?

  10. #10
    @k.b.: Avevo pensato la stessa cosa, ma se poi stampa la tabella dentro il file di testo, vedrà i vari tag <table> <tr> <td>...

    Per questo avevo chiesto se gli serviva per forza nel file di testo!

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.