Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    34

    Gestire i prodotti con php e database

    Buongiorno,
    sto creando un piccolo sito per un negozio online e mi sono imbattuto ,per ora, in questo problema:

    Premetto che ho le seguenti tabelle così strutturate:
    PRODOTTI
    -id_prodotto
    -nome_prodotto
    -prezzo_prodotto
    IMMAGINI PRODOTTI
    -Id_immagine
    -percorso_immagine
    -id_prodotto
    SOTTO CATEGORIE VARIANTI
    -id_sotto_gruppo_variante
    -nome_sotto_gruppo_variante
    -id_prodotto

    Ho strutturato tutto così in modo tale che ad ogni prodotto vengano assegnate più immagini, e allo stesso tempo più varianti (per varianti intendo colore, fragranza etc)

    Il mio problema è che in home vorrei visualizzare i prodotti ed ho usato questo codice:
    Codice PHP:
    $indice mysql_query("
    SELECT DISTINCT 
    prodotti.prezzo_prodotto, prodotti.id_prodotto, prodotti.nome_prodotto,
    immagini_prodotti.percorso_immagine, 
    sotto_categorie_varianti.id_sotto_gruppo_variante 
    FROM prodotti LEFT JOIN immagini_prodotti
    ON prodotti.id_prodotto=immagini_prodotti.id_prodotto
    LEFT JOIN sotto_categorie_varianti ON
    prodotti.id_prodotto=sotto_categorie_varianti.id_prodotto 
    ORDER BY id_prodotto DESC
    "
    );     
    while(
    $array=mysql_fetch_array($indice))     {
    echo 
    "<td>[img]images/sliden/".$array[percorso_immagine]."[/img]
    <h2>"
    .$array[nome_prodotto]."</h2>
    [url='#']"
    .$array[prezzo_prodotto]." &euro;[/url]
    <div class='info'> 
    <a href='prodotto.php?id_prodotto="
    .$array[id_prodotto]."&id_sotto_categoria=".$array[id_sotto_gruppo_variante]."' >
    [img]images/icons/dettagli.png[/img] pi&ugrave dettagli &nbsp </a>
    [url='#']&nbsp [img]images/icons/carrello-plus.png[/img] aggiungi AL CARRELLO [/url]</div></td>
    "
    ;

    solamente che usato così com'è avrò ripetuto lo stesso oggetto n volta a seconda di quante immagini ho associate e così per le sotto categorie.

    Io vorrei prendere singolarmente i prodotti..
    Grazie mille

  2. #2
    devi usare sotto query per pescarti la singola immagine e le categorie associate... per il secondo punto, le categorie associate, puoi prendere spunto da questo: http://stackoverflow.com/questions/6...cords-together sostanzialmente la query verrebbe del tipo

    codice:
    select campi_tabella_prodotti, ( select url_immagine from immaini_prodotti where immagini_prodotti.id_prodotto = prodotti.id_prodotto limit 1) as immagine_principale, ( select GROUP_CONCAT..... ) as categorie from prodotti
    una cosa del genere insomma
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    34
    Grazie mille per la risposta, ora quindi ho creato una sotto query di questo genere:
    Codice PHP:
    $indice mysql_query("SELECT DISTINCT                             prezzo_prodotto, id_prodotto, nome_prodotto                         FROM                              
    prodotti                         
    ORDER BY                             
    id_prodotto DESC                         
    "
    );     
    while(
    $array=mysql_fetch_array($indice))     {     
    $indice2 mysql_query("SELECT                             
    immagini_prodotti.percorso_immagine,                             
    sotto_categorie_varianti.id_sotto_gruppo_variante                         
    FROM                              
    sotto_categorie_varianti                         
    INNER JOIN                             
    immagini_prodotti                         
    ON                             
    sotto_categorie_varianti.id_prodotto=immagini_prodotti.id_prodotto                 
    WHERE                             
    sotto_categorie_varianti.id_prodotto= '
    $array[id_prodotto]                         ");         
    while(
    $array2=mysql_fetch_array($indice2))         
    {         
    echo 
    "<td>[img]images/sliden/".$array2[percorso_immagine]."[/img]
    <h2>"
    .$array[nome_prodotto]."</h2>         
    [url='#']"
    .$array[prezzo_prodotto]." &euro;[/url]
    <div class='info'>         
    <a href='prodotto.php?id_prodotto="
    .$array[id_prodotto]."&id_sotto_categoria=".$array2[id_sotto_gruppo_variante]."' >
    [img]images/icons/dettagli.png[/img] pi&ugrave dettagli &nbsp </a>
    [url='#']&nbsp [img]images/icons/carrello-plus.png[/img] aggiungi AL CARRELLO [/url]
    </div>
    </td>                     
    "
    ;      
    }

    Ma non funziona.

    Invece non ho capito molto bene il link che mi hai inviato. Questo mi servirebbe per?

  4. #4
    scusa eh, ma di quello che ti ho consigliato non v'è traccia... le sotto query le devi mettere insieme a quella principale con cui estrai i prodotti, non nel ciclo while...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    34
    Ecco come ho scritto, ma non funziona, non mi visualizza nulla
    Codice PHP:
    $indice mysql_query("
    SELECT DISTINCT                             
    prodotti.prezzo_prodotto, prodotti.id_prodotto, 
    prodotti.nome_prodotto,                             (                         
    SELECT                             
    immagini_prodotti.percorso_immagine,                         
    FROM                             
    immagini_prodotti                         
    WHERE                             
    sotto_categorie_varianti.id_prodotto=prodotti.id_prodotto                         
    LIMIT 1                             
    )                         
    AS                             
    immagine_principale,                         
    (                         
    SELECT                             
    sotto_categorie_varianti.id_sotto_gruppo_variante                         
    FROM                              
    sotto_categorie_varianti                         
    WHERE                             
    sotto_categorie_varianti.id_prodotto=prodotti.id_prodotto                         
    LIMIT 1                         
    )                         
    AS                             
    sotto_categoria_principale,                         
    FROM                              
    prodotti                         
    ORDER BY                             
    prodotti.id_prodotto DESC                         
    "
    );     
    while(
    $array=mysql_fetch_array($indice))     
    {         
    echo 
    "<td>[img]images/sliden/".$array[immagine_principale]."[/img]
    <h2>"
    .$array[nome_prodotto]."</h2>         
    [url='#']"
    .$array[prezzo_prodotto]." &euro;[/url]
    <div class='info'>         
    <a href='prodotto.php?id_prodotto="
    .$array[id_prodotto]."&id_sotto_categoria=".$array[sotto_categoria_principale]."' >
    [img]images/icons/dettagli.png[/img] pi&ugrave dettagli &nbsp </a>
    [url='#']&nbsp [img]images/icons/carrello-plus.png[/img] aggiungi AL CARRELLO [/url]
    </div>
    </td>                     
    "
    ;     


  6. #6
    nella prima subselect la condizione di where

    codice:
    WHERE                              
    sotto_categorie_varianti.id_prodotto=prodotti.id_prodotto
    dovrebbe essere sbagliata poichè dovrebbe essere tra la tabella prodotti e la tabella immagini_prodotti. Prova ad eseguire la query con phpmyadmin direttamente nel db per vedere che cosa succede
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    34

    RISOLTO

    Ho risolto così:
    Codice PHP:
    $indice mysql_query(
        SELECT
            prodotti.prezzo_prodotto, prodotti.id_prodotto, prodotti.nome_prodotto, prodotti.visualizzazione,
            immagini_prodotti.percorso_immagine, 
            sotto_categorie_varianti.id_sotto_gruppo_variante  
        FROM 
            prodotti
        LEFT JOIN 
            immagini_prodotti 
        ON
            prodotti.id_prodotto=immagini_prodotti.id_prodotto 
        LEFT JOIN 
            sotto_categorie_varianti
        ON 
            prodotti.id_prodotto=sotto_categorie_varianti.id_prodotto  
        WHERE
            prodotti.visualizzazione = '1'
        GROUP BY 
            prodotti.id_prodotto
        ORDER BY 
            prodotti.id_prodotto DESC
        LIMIT 6
    "
    );  
        while(
    $array=mysql_fetch_array($indice))
        {
            echo 
    "<td>[img]images/sliden/".$array[percorso_immagine]."[/img]
    <h2>"
    .$array[nome_prodotto]."</h2>
    [url='#']"
    .$array[prezzo_prodotto]." &euro;[/url]
    <div class='info'> 
    <a href='prodotto.php?id_prodotto="
    .$array[id_prodotto]."&id_sotto_categoria=".$array[id_sotto_gruppo_variante]."' >
    [img]images/icons/dettagli.png[/img] pi&ugrave dettagli &nbsp </a>
    [url='#']&nbsp [img]images/icons/carrello-plus.png[/img] aggiungi AL CARRELLO [/url]</div></td>
    "
    ;
        } 

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.