Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: problema con query

  1. #1

    problema con query

    ciao a tutti,
    ecco il problema:

    ho due tabelle: categorie e prodotti
    sono collegate attraverso l'id_categorie.

    Come posso visualizzare in html una cosa del genere:

    <tr> categoria1
    <td>prodotto1 categoria1<td>prodotto2categ1<td>prodotto3categ1
    <tr>
    <tr>categoria2
    <td>prodotto1categ2<td>prodotto2categ2
    etc... etc...

    ecco la struttura
    codice:
    #
    # Struttura della tabella `categorie`
    #
    
    CREATE TABLE categorie (
      id_cat int(2) NOT NULL auto_increment,
      categoria varchar(150) NOT NULL default '',
      foto varchar(255) default NULL,
      PRIMARY KEY  (id_cat)
    ) TYPE=MyISAM;
    # --------------------------------------------------------
    
    #
    # Struttura della tabella `offerte`
    #
    
    CREATE TABLE offerte (
      id_offerte int(3) NOT NULL auto_increment,
      categorie int(2) default NULL,
      localita varchar(150) NOT NULL default '',
      desc_pic varchar(255) default NULL,
      desc_big text,
      prezzo float(6,2) default NULL,
      link varchar(150) default NULL,
      foto1 varchar(100) default NULL,
      foto2 varchar(30) default NULL,
      foto3 varchar(30) default NULL,
      foto4 varchar(30) default NULL,
      foto5 varchar(30) default NULL,
      vetrina enum('si','no') NOT NULL default 'no',
      paese varchar(100) default NULL,
      viaggia enum('si','no') default 'no',
      link_mail varchar(150) default NULL,
      link_paese varchar(150) default NULL,
      PRIMARY KEY  (id_offerte)
    ) TYPE=MyISAM;

  2. #2

    scusate...

    la tabella offerte e' quella dei prodotti!!!

    grazie mille!!! :bhò:

  3. #3

    Re: scusate...

    Originariamente inviato da capeweb
    la tabella offerte e' quella dei prodotti!!!

    grazie mille!!!
    Parli di html .... ti interessa una query o come smistare i risultati?

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

  4. #4
    h?: mi interessa la query,
    ho fatto dei tentativi studiando i cicli for e do-while
    :d :d
    ma non ho ottenuto nulla...

    se le categorie sono fisse (10)
    e io voglio tre prodotti per ognuna,
    come posso fare la query?
    qualcosa che sostituisca
    10 query:
    select * from prodotti, categorie where prodotti.id_cat=categorie.id_categorie AND id_categorie=1 (-->10)

    spero di essere stato piu' chiaro...

  5. #5
    Fai una JOIN.... come gia' fai...

    SELECT * FROM prodotti p, categorie c
    where p.categorie = c.id_cat
    order by p.categorie, p.prodotto

    almeno presumo perche' la seconda tabella pare non c'entri...

    poi fai il tuo ciclo while con una if di controllo
    codice:
    $num = 0;
    
    while($row = mysql_fetch_assoc($res)) {
    
     if($num == 0) {
           echo "<tr><td> $row[prodotto] - $row[categoria]</td>";
           $num = 1;
           } 
           elseif($num == 1 ) { 
             echo "<td> $row[prodotto]</td>";
             $num = 2;
             }
             else { 
                echo "<td> $row[prodotto]</td> </tr>";
                $num = 0;
                }
    }
    Qualcosa di simile mi par di capire.... altrimenti non ho capito...


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

  6. #6
    ok! intanto grazie mille dell'aiuto!

    provo e poi ti dico

  7. #7
    Originariamente inviato da capeweb
    ok! intanto grazie mille dell'aiuto!

    provo e poi ti dico
    Attento alla modifica ... non avevo incrementato $num....

    e poi devi aggiungere un controllo sulla categoria, in modo da cambiare alla terza volta.... ecc...

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

  8. #8
    ...
    in effetti ti chiederei se puoi spiegarmi un po il codice che mi hai postato,
    ... ci provo...
    la query seleziona e collega le due tabelle
    ordinando i risultati per categorie e offerte (non c'e' piu' prodotti)

    poi il ciclo if:
    $num = 0; il contatore??

    while($row = mysql_fetch_assoc($res)) {cosa intendi per $res, il risultatodella query??

    if($num == 0) {
    echo "<tr><td> $row[prodotto] - $row[categoria]</td>";
    ...
    }
    elseif($num == 1 ) {
    echo "<td> $row[prodotto]</td>";
    }
    else {
    echo "<td> $row[prodotto]</td> </tr>";
    $num = 0;
    }
    }[/CODE]

    grazie

  9. #9
    Si, un contatore e poi invece ho supposto $res per l'id resource di mysql_query....
    $res = mysql_query...

    Per quanto riguarda il controllo sulla categoria dovrebbe bastare una and sulla if.... (forse)..
    codice:
    $num = 0;
    $pippo = '';  //   aggiungi ... per evitare il NOTICE 
    while($row = mysql_fetch_assoc($res)) {
    
     if($num == 0  AND $row['categoria'] != $pippo ) {
           echo "<tr><td> $row[prodotto] - $row[categoria] </td>";
           $num = 1;
           } 
           elseif($num == 1 ) { 
             echo "<td> $row[prodotto]</td>";
             $num = 2;
             }
             elseif($num == 2 ) {  //  cambia da else a elseif 
                echo "<td> $row[prodotto]</td> </tr>";
                $num = 0;
                }
     $pippo = $row['categoria'];  // mettilo fuori dalla if
    }
    Provaci....

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

  10. #10
    tenendo ferma la query,
    ho provato cosi':
    codice:
    <?php   
    $num = 0;
    while($row = mysql_fetch_assoc($row_rs_offerte)) {
    if($num == 0) {
           echo "<tr><td colspan='3'> $row_rs_offerte['localita']; - $row_rs_offerte['categoria'];</td></tr>";
           } elseif($num == 1 ) { 
             echo "<tr><td> $row_rs_offerte['localita'];</td>";
    		 }
             else { 
                echo "<td> $row_rs_offerte['localita'];</td> </tr>";
                $num = 0;
                }
    }
    ?>
    ma niente da fare mi rimane la pagina bianca
    eppure la struttura sembra giusta!

    dov'e' che devo far incrementare $num???
    :master: :master:

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.