Visualizzazione dei risultati da 1 a 10 su 10

Discussione: "Confronta prodotti"

  1. #1

    "Confronta prodotti"

    Ciao

    Per un sito di ecommerce devo sviluppare la consueta funzionalità "confronta prodotti": l'utente seleziona da una lista 4 prodotti e ottiene una pagina di riepilogo caratteristiche tecniche. La tabella html che impagina il confronto è formata da 5 colonne, 1 per il nome delle caratteristiche ed una per ciascun prodotto (con i relativi valori).

    Avevo pensato di creare una sotto-tabella per ciascun prodotto, (con una sola query ed un ciclo while risolvevo tutto) ma cosi facendo non ottengo una corretta impaginazione (ogni tabella è indipendente dall'altra e, se una caratteristica di un prodotto occupa più spazio, i risultati vengono graficamente sfalsati).

    Come posso risolvere? Dovrei eseguire una query per ciascuna caratteristica per ciascun prodotto, ma mi sembra assurdo fare 120 query.. Posso risolvere con gli array?

  2. #2
    5 colonne o 5 righe?
    invece di creare una tabella con il while non puoi creare una riga per ogni prodotto? :E

  3. #3
    crei una tabella con tante colonne quanti sono i prodotti selezionati dal cliente, nella prima riga stampi il campo [nome prodotto] di tutti i record, poi passi alla seconda riga e stampi tutti i valori del secondo campo e così via.
    Se hai modo di automatizzare il tutto (magari inserendo preventivamente i nomi dei campi in un array con qualche ciclo te la cavi senza scrivere km di codice).

    è la prima soluzione che mi è venuta in mente, fammi sapere.
    ciao
    t.

  4. #4
    e come faccio?

    ho una query che estrae il nome di tutte le caratteristiche
    ex peso, banda, display, antenna ecc.

    se ho il prodotto "nokia 3330", per saperne il peso devo eseguire una query.

    select valore from caratteristiche_prodotti where id_prodotto=12 and id_caratteristica=11

    poi estraggo il valore e scrivo
    echo "<td>$valore</td>";

    perfetto, funziona. Ma in questo modo devo eseguire 120 query ...

  5. #5
    Originariamente inviato da Tymba
    crei una tabella con tante colonne quanti sono i prodotti selezionati dal cliente, nella prima riga stampi il campo [nome prodotto] di tutti i record, poi passi alla seconda riga e stampi tutti i valori del secondo campo e così via.
    Se hai modo di automatizzare il tutto (magari inserendo preventivamente i nomi dei campi in un array con qualche ciclo te la cavi senza scrivere km di codice).

    è la prima soluzione che mi è venuta in mente, fammi sapere.
    ciao
    t.
    si è quello che pensavo, credo che la soluzione migliore siano gli array associativi

  6. #6
    Già devi usare gli array se vuoi fare solo 4 query :E

  7. #7
    non capisco perchè 4 query,
    mysql non supporta la sintassi ".... where id in (1,2,3,4,5)"?

    in questo modo fai una query che ha gli id = ai valori di una lista che gli dai tu.

    però se vuoi fare per forza 4 query vedi tu.

  8. #8
    infatti ho detto una stronzata, sorry

  9. #9
    No scusate, forse mi sono spiegato male.

    Tabella caratteristiche
    id_caratteristica
    nome_caratteristica

    Tabella prodotti
    nome_prodotto
    id_caratteristica
    valore_caratteristica

    Risultato desiderato (tralascio la prima riga con i nomi dei prodotti, quella non è un problema):

    <table>
    <tr>
    <td>Display</td>
    <td>Verde</td>
    <td>Ambra</td>
    <td>Colori</td>
    <td>Verde</td>
    </tr>
    e cosi via, una riga per ciascuna caratteristica tecnica.

    Soluzione 1: anzichè un'unica tabella a 5 colonne, crearne 6 (una che impagina 5 colonne che a loro volta contengono una tabella per ciascun prodotto). Pro: con due query risolvo tutto. Contro: se una caratteristica è lunga, fa "spanare" tutta la tabella verso il basso e le righe non combaciano, visto che sono tabelle distinte.

    Soluzione 2: una query per ciascuna caratteristica, stampo una riga alla volta (con order by sono sicuro che alla prima colonna scriverò il primo prodotto e cosi via). Contro: serve almeno una query per caratteristica tecnica, quindi almeno 30..

    Soluzione 3: array associativi e variabili dinamiche.. risolvo con un paio di query ma ci perdo la testa

    altri suggerimenti?

  10. #10
    Ma come ci perdi la testa...?

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.