Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442

    [PHP e Mysql]mysql_fetch_object

    con il codice che sotto vi propongo interrogo il db per estrapolare tramite un for le categorie dei prodotti con i relativi prodotti
    per il momento il risultato sono una serie di object
    vi ringrazio in anticipo
    Codice PHP:
    include 'include/conf.inc.php';

    $risultato=mysql_query("select * from tbl_categorie");

    $num=mysql_numrows($risultato);

    for(
    $i=0$i<$num$i++)
    {
    $riga=mysql_fetch_object($risultato);
    $riga->categorie;
    echo 
    "
            <center>
            <table>
            <caption>"
    .$riga."</caption>
            <tr><td>"
    ;
            
    $ris=mysql_query("select * from tbl_prodotti innerjoin tbl_categorie where ID_categorie=id_categorie");
    echo
    "    </td></tr>
            </table>
            </center>
    "
    ;


  2. #2
    ci sono vari errori di sintassi. Per scorrere il risultato usa il while e dai un valore all'id che cerchi:

    where ID_categorie=id_categorie <-- e' una cosa senza speranza....

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

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    ti semplifico la cosa iniziando dalla seconda query
    Codice PHP:

    select 
    from tbl_prodotti as p inner join tbl_ categorie as c on p.id_categorie=c.ID_categorie 
    /*
    questa è la strurrura delle tabelle:

    tbl_categorie                     tbl_prodotti

    ID_categorie (PK)              ID_prodotti
    categorie                         name
                                          id_categorie (FK)


    devo estrapolare i prodotti  della tbl_prodotti per ogni categoria della tbl_categorie

    con la select sopra mi da errore come mai?
    grazie in anticipoo
    */ 

  4. #4
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    perchè eseguire due query separate quando puoi averne solo una con la semplice unione dei dati fra le due tabelle, in base alla chiave sterna id_categorie?

    codice:
    SELECT * FROM tbl_prodotti p
    LEFT JOIN tbl_categorie c ON p.id_categorie = c.ID_categorie
    oppure, si tratta sempre della stessa query comunque, raggruppare tutti i prodotti in base alla categoria di appartenenza:

    codice:
    SELECT c.categorie,
    GROUP_CONCAT(p.nome ORDER BY p.nome SEPARATOR ', ') prodotti
    FROM tbl_prodotti p
    LEFT JOIN tbl_categorie c ON p.id_categorie = c.ID_categorie
    GROUP BY p.id_categorie
    ORDER BY c.categorie

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    adesso non mi fa piu errorema dopo questo codice
    Codice PHP:
    include 'include/conf.inc.php';

    $risultato=mysql_query("select * from tbl_categorie");
    $rows=mysql_num_rows($risultato);
    while(
    $riga=mysql_fetch_object($risultato))
    {
    $riga->categorie;
    echo 
    "$riga";
                    for(
    $i=0$i<$rows$i++)
                    {
                        
    $ris=mysql_query("
                                            SELECT c.categorie,
                                            GROUP_CONCAT(p.name ORDER BY p.name SEPARATOR ', ') prodotti
                                            FROM tbl_prodotti p
                                            LEFT JOIN tbl_categorie c ON p.id_categorie = c.ID_categorie
                                            GROUP BY p.id_categorie
                                            ORDER BY c.categorie
                                            "
    );
                        while(
    $riga=mysql_fetch_object($ris))
                        {
                        
    $riga->name;
                        echo 
    $riga."

    "
    ;
                        }
                    }

    mi da una serie di "Object"
    grazie in anticipo

  6. #6
    Utente di HTML.it L'avatar di lloyd27
    Registrato dal
    Mar 2006
    Messaggi
    256
    ma l'istruzione
    $riga->categorie;
    cosa dovrebbe fare scusa?

  7. #7
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Codice PHP:
    include 'include/conf.inc.php';

    $sql "SELECT c.categorie,
          GROUP_CONCAT(p.name ORDER BY p.name SEPARATOR ', ') prodotti
           FROM tbl_prodotti p
          LEFT JOIN tbl_categorie c ON p.id_categorie = c.ID_categorie
          GROUP BY p.id_categorie
          ORDER BY c.categorie"
    ;

    $ris mysql_query($sql) or die(mysql_error());

    while(
    $riga mysql_fetch_object($ris))
    {
        echo 
    "$riga->categorie - $riga->prodotti 
    "
    ;


  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    grazie tante per l'aiuto

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    allora questo il risultato

    Codice PHP:
    Cani e Gatti

    Bocconcini per gatto00
    Lettiera per gatto00

    Cantine e Pub

    Vino rosso00

    Panificio

    Pane integraleo di segale00 
    e questo il codice

    Codice PHP:
    include 'include/conf.inc.php';

    $sql "SELECT c.categorie,
          GROUP_CONCAT(p.name ,p.qnt_max,p.qnt_last ORDER BY p.name SEPARATOR '
     ') prodotti
          FROM tbl_prodotti p
          LEFT JOIN tbl_categorie c ON p.id_categorie = c.ID_categorie
          GROUP BY p.id_categorie
          ORDER BY c.categorie"
    ;

    $ris mysql_query($sql) or die(mysql_error());

    while(
    $riga mysql_fetch_object($ris))
    {
        echo 
    "
     
    $riga->categorie 

     
    $riga->prodotti 
    "
    ;
        

    ora vorrei mettere uno spazio fra i campi dei prodotti tipo
    Cani e Gatti

    Bocconcini per gatto 0 0
    Lettiera per gatto 0 0

    in che modo posso farlo?

  10. #10
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    prova ad usare la funzione CONCAT() direttamente dentro il GROUP_CONCAT() per concatenare, appunto, tutti i campi, aggiungendo uno spazio vuoto fra l'uno e l'altro, interessati dal raggruppamento senza doverli richiamare singolarmente.

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.