Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    11

    estrazione dati mysql senza ripetizione

    Buongiorno.

    Non sapevo cosa mettere nel titolo per esporre il mio problema quindi passo alla descrizione:

    praticamente ho una tabella nel mio database così composta:

    nome
    produttore
    prodotto
    caratteristiche
    descrizione
    prezzo

    ho creato un form che permette di ricercare determinati prodotti in base a dei campi di ricerca senza specificare il produttore perchè nel form non occorre. Poi ho creato la query che estrae i dati e tutto funziona regolarmente.

    Io però vorrei che una volta eseguita la query mi estraesse i dati raggruppati per produttore in questo modo:

    produttore 1
    tutti i suoi prodotti

    produttore 2
    tutti i suoi prodotti

    produttore 3
    tutti i suoi prodotti

    etc...

    Come posso fare?

    grazie in anticipo!!

  2. #2
    usa group by.

    select produttore, prodotto
    from tabella
    where .. (se serve)
    GROUP BY produttore, prodotto
    order by produttore, prodotto

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    11
    Innanzitutto ti ringrazio per la rapida risposta. Ho provato ad utilizzare il codice che mi hai suggerito e funziona in parte ovvero mi estrae i dati ma per ognuno dei produttori estrae solo un prodotto pur essendocene di più.

    I nomi dei prodotti possono esser più volte uguali. Quello che cambia in ogni prodotto sono la descrizione e le caratteristiche... non so se questo può essere un problema in quanto la ricerca si base esclusivamente sul nome del prodotto.

    Senza il tuo suggerimento vengono estratti tutti quante le voci però io vorrei che si ripetesse solo una volta il nome del produttore e sotto tutti i suoi prodotti.

    Spero di essere stato più chiaro e di aver specificato più informazioni!

  4. #4
    il nome del produttore lo devi gestire sul result set con php. Se uguale al record precedente lo scarti altrimenti lo stampi.

    Se hai piu' prodotti con lo stesso nome dovresti aggiungere una ulteriore differenziazione se usi il raggruppamento altrimenti non usare il group by.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    11
    Originariamente inviato da piero.mac
    il nome del produttore lo devi gestire sul result set con php. Se uguale al record precedente lo scarti altrimenti lo stampi.

    Se hai piu' prodotti con lo stesso nome dovresti aggiungere una ulteriore differenziazione se usi il raggruppamento altrimenti non usare il group by.
    Mi faresti un esempio per capire come fare??

    per quanto riguarda group by ho capito perfettamente.

    Ti ringrazio ancora per il tuo aiuto!!

  6. #6
    Originariamente inviato da surfweb
    Mi faresti un esempio per capire come fare??
    codice:
    $resource = mysql_query(......)
    
    $nome = '';
    
    while ($row = mysql_fetch_assoc($resource) ) {
    
    if($row['produttore'] != $nome) {
       echo $row['produttore'];
       $nome = $row['produttore'];
       } 
    
    echo "tutto il resto...";
    }

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    11
    Originariamente inviato da piero.mac
    codice:
    $resource = mysql_query(......)
    
    $nome = '';
    
    while ($row = mysql_fetch_assoc($resource) ) {
    
    if($row['produttore'] != $nome) {
       echo $row['produttore'];
       $nome = $row['produttore'];
       } 
    
    echo "tutto il resto...";
    }
    ti ringrazio infinitamente... ora funziona come vorrei!!

    Ciao e buona domenica!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    11
    Salve... scrivo ancora in questo post in quanto è sempre lo stesso script che ho intenzione di modificare.

    Praticamente io vorrei estrarre nuovamente i produttori, duplicandoli quindi, ma che stiano fuori dal flusso in questo modo:

    codice:
    
    <ul>[*]produttore 1[*]produttore 2[*]produttore 3[*]produttore n...[/list]
    
    
    <ul>[*]produttore 1
    <ul>[*]prodotto[/list]
    [*]produttore 2
    <ul>[*]prodotto[/list]
    [*]produttore 3
    <ul>[*]prodotto/ul>
    [*]produttore n...
    <ul>[*]prodotto[/list]
    [/list]
    Spero di essere stato chiaro e che anche questa modifica si possa apportare!!

    Grazie!

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    se ho capito bene vuoi stampare una lista di tutti i produttori

    prova così

    Codice PHP:
    $resource mysql_query(......)  

    //codice aggiunto per la lista
    echo '<ul>';
    while (
    $row mysql_fetch_assoc($resource) ) { 
    echo 
    '[*]' $row['produttore'] . '';
    }
    echo 
    '[/list]';
    //qui continui con il tuo codice
    //... 

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    11
    Originariamente inviato da clasku
    se ho capito bene vuoi stampare una lista di tutti i produttori

    prova così

    Codice PHP:
    $resource mysql_query(......)  

    //codice aggiunto per la lista
    echo '<ul>';
    while (
    $row mysql_fetch_assoc($resource) ) { 
    echo 
    '[*]' $row['produttore'] . '';
    }
    echo 
    '[/list]';
    //qui continui con il tuo codice
    //... 
    La tua risposta è corretta però il problema è che io, per eseguire ciò che tu mi hai scritto, dovrei creare una seconda query.... giusto? io vorrei, se possibile ovviamente, poter sfruttare sempre una sola query e stamapre a video la lista dei produttori e poi stampare quello che ho già!

    Grazie mille per il tuo aiuto!!!

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.