leggere le righe del risultato di sql

  • Creatore Discussione Creatore Discussione benfy85
  • Data di inizio Data di inizio

benfy85

Nuovo Utente
15 Feb 2009
14
0
0
Salve a tutti,
è da un po che mi scervello per riuscir a leggere più risultati di una query..
Ho fatto le query direttamente nel database e funzionano, ma in php non mi stampa le righe richieste.
il codice è un po incasinato, però il succo è:
Data una scelta dell'utente di una certa Cantina (es. Cantina Merlo), dovrei trovare tutti i vini di quella cantina.
I vini hanno delle partite, se un vino ha diverse partite, devo considerare quella con un prezzo inferiore.
PHP:
echo"<table border=\"2\">
            <tr><th>Nome Vino</th>
            <th>Annata</th>
            <th>Descrizione</th>
            <th>Categoria</th>
            <th>Cantina</th>
            <th>Prezzo a bottiglia</th>
            <th>Quantita'</th>
            <th>Carrello</th></tr>";
    
    $sq1a = "SELECT v.id_vino FROM vini v WHERE v.cantina = '$cantina'";
    $sr1a = mysql_query($sq1a, $link);
    $nr1a = mysql_num_rows($sr1a); 
    $fr1a= mysql_fetch_row($sr1a);
    
    echo"$fr1a[0], $nr1a";
    
    for ($i=0; $i<=$nr1a = mysql_num_rows($sr1a); $i++) 
    {       
         $sq1b = "SELECT min(i.prezzo) as prezzo FROM inventario i WHERE i.id_vino = '$fr1a[0]'";
         $sr1b = mysql_query($sq1b, $link);
         $fr1b = mysql_fetch_row($sr1b);   
    }
    echo " $fr1b[0]";
    $sq1c = "SELECT DISTINCT v.id_vino, v.nome, v.annata, v.descrizione, c.tipologia, v.cantina, i.prezzo FROM vini v, categoria c, inventario i WHERE v.id_vino = i.id_vino and v.categoria = c.tipologia and i.prezzo = '$fr1b[0]' and v.cantina = '$cantina' ORDER BY v.nome";
    $sr1c = mysql_query($sq1c, $link);
    $nr1c = mysql_num_rows($sr1c);
            
        for ($y = 0; $fr1c = mysql_fetch_row($sr1c); $y++)
        {
           
            echo"<tr>";
            foreach( $fr1c as $key => $value)
              if ($key == "id_vino") 
              {
                  echo "<input type=\"hidden\" name=\"idvino\" value=$value />"; 
              }
              else 
              {
                  echo "<td> $value </td>";
              }
           echo "<td>
                 <select name=\"quantita\">
                  <option value=\"1\">1</option>
                  <option value=\"3\">3</option>
                  <option value=\"6\">6</option>
                  <option value=\"9\">9</option>
                  <option value=\"21\">21</option>
                  <option value=\"30\">30</option>
                  <option value=\"100\">100</option>
                 </select>
                 </td>
                 <td><input type=\"submit\" value=\"Aggiungi\" /></td>
                 </tr>";
          }
      }

il mio problema è che arrivo alla prima select e mi considera solo un risultato mentre gli altri che sono effettivamente nella tabella non li guarda.. per es.
L'utente richiede i vini della Cantina Merlo.
I vini della cantina, sono:
- Barbera
- Malvasia
Per Barbera ho 2 partite: la prima ha importo 8 e la seconda 7;
per il Malvasia ho 3 partite: la prima ha importo 6, la seconda 5, la terza 7.
In questo caso dovrei ottenere (ho anche altri dati, ma a me interessano solo questi nelle query):
Barbera 7
Malvasia 5

mentre io adesso ottengo solo Barbera 7

Se qualcuno sa come aiutarmi... ringrazio in anticipo! :D
 
Non so se ho capito bene la tua richiesta, ma hai provato ad usare mysql_fetch_array() invece di mysql_num_rows()?
 
Grazie.. il problema l'ho risolto... avevo fatto pasticci nel mettere un ciclo in + e mysql_fetch_row al posto di mysql_num_rows..
 

Discussioni simili