Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1

    left join con 2 tabelle più clausola where

    Ragazzi io ho questo codice:
    Codice PHP:
    <?
    $sql 
    "SELECT * sub_categoria.id AS subcat_id 
            FROM categoria  
            LEFT JOIN prodotti 
            ON prodotti.id = sub_categoria.id_sub"

    $res mysql_query($sql); 

    $output = array(); 

    while ( 
    $record mysql_fetch_object($res) ) { 
        
    $output[$record->nome][] = array( 
            
    'id'       => $record->subcat_id
            
    'nome' => $record->titolo
        ); 

    ?> 
        <ul id="menu">
        
            <?php foreach ( $output as $cat => $subcats ): ?> [*][url="#"][b]<?php echo ucfirst(strtolower($cat)); ?>[/b] [/url]
        <ul> 
       
            <?php foreach ( $subcats as $subcat ): ?> [*][url="prodotto.php?id=<?php echo $subcat['id']; ?>"]- <?php echo ucfirst(strtolower($subcat['nome'])); ?>[/url] 
            <?php endforeach; ?> [/list]
         
        <?php endforeach; ?> 
        [/list]
    solo che è sbagliata, io ho 3 tabelle categoria, sub_categoria e prodotti solo che
    quindi dovrei fare una query per le sub_categorie(tramite id della pagina categoria) e una per i prodotti delle sotto categoria, non se se avete capito:

    Categoria: casa = pagina.php?id=1, giardino = pagina.php?id=2
    Sub_categoria: recupera l'id dalla pagina e fa la query e poi i prodotti, il tutto deve essere per forza fatto come il codice che vi ho postato a causa del menu accordion! Mi basta solo saper fare il where nella query che vi ho postato!

  2. #2
    manca una virgola nella query

  3. #3
    come fanno i prodotti ad avere lo stesso id della sub_categoria? sarà il campo prodotti.categoria_id a dover comparire nella join no?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    si si certo perchè nella tabella prodotti c'è il campo id_sub che corrisponde all'id della tabella sub_categoria come posso fare? i processi sono 3:

    1. Prendere l'id dalla pagina tramite $_GET
    2. Recuperare la sub_categoria
    3. Recuperare i prodotti della sub_categoria

    il tutto deve per forza avvenire tramite join perchè il menu ha una struttura complessa.

  5. #5
    allora, calma

    diciamo che

    Codice PHP:

    $subcategoria_id 
    $_GET['id']; 
    così hai l'id della sub categoria, diciamo che le tabelle:

    codice:
    prodotto:
    
    id, nome, descrizione, codice, categoria_id, etc...
    
    categoria:
    
    id, nome
    
    
    prodotto.categoria_id foreign key references on categoria(id)
    dovresti avere una query

    codice:
    "select * from prodotto where categoria_id = ".(int)$subcategoria_id
    che ti ritorna tutti i prodotti della categoria passata.

    Il tuo problema forse è sulle categorie quindi? perchè non capisco il perchè della join
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    il problema sta nel menu, hai visto la struttura del menu com'è fatta? il mio problema sta proprio nel mostrare i risultati perchè posso far benissimo cosi:

    Codice PHP:
    <?
    $id 
    = isset($_GET['id']); 
    $query=mysql_query("Select * from sub_categoria where id_categoria = $id");
    while(
    $array=mysql_fetch_array($query)){
    $aa $array['id'];?>
    - [b][url="#"]<? echo $array['nome'?>[/url][/b]

    <?
    $query2
    =mysql_query("Select * from prodotti where id_sub = $aa");
    while(
    $array=mysql_fetch_array($query2)){?>
      -- [url="prodotto.php?id=<? echo $array['id'?>"]<? echo $array['nome'?>[/url]

    <?
    }
    }
    ?>
    cosi a me funziona tutto benissimo, cioè ogni sotto_categoria ha i suoi prodotti, il problema sta nel menu però per come è composto, il menu è questo e l'unico modo e fare come ho postato sopra o no?

  7. #7
    scusa eh, ma allora che c'entrano i prodotti nella join?

    la tabella delle categorie com'è strutturata?

    codice:
    categoria
    
    id - nome - parent_id
    ?

    cioè: come hai impostato per avere una "categoria padre" e tante "categorie figlio" (sub categorie) nel database?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    il i prodotti centrano perchè io mostro a video i prodotti e le sub_categorie, io ho un menu principale con 10 categorie, ogni voce ha id diverso es:

    Casa: categoria.php?id=1
    Arredamento: categoria.php?id=2

    a questo punto mi ricavo tramite l'id della pagina, la sub_categoria e faccio:
    Codice PHP:
    <?
    $id 
    = isset($_GET['id']);
    $query=mysql_query("Select * from sub_categoria where id_categoria = $id");
    while(
    $array=mysql_fetch_array($query)){
    $id_sub_categoria $array['id'];

    // Stampo a video la Sub_categoria
    ?>
    - [b][url="#"]<? echo $array['nome'?>[/url][/b]



    <?
    // Ora tramite id_sub_categoria mi recupero tutti i prodotti di ogni sub_categoria
    $query2=mysql_query("Select * from prodotti where id_sub = $id_sub_categoria");
    while(
    $array=mysql_fetch_array($query2)){?>
      -- [url="prodotto.php?id=<? echo $array['id'?>"]<? echo $array['nome'?>[/url]

    <?
    }
    }
    ?>
    Ecco il tutto, mi serve join per mostrare i dati in quel menu! Cmq la struttura è composta cosi:
    Tab_Categorie = id, nome
    Tab_Sub_categorie = id, nome, id_categoria
    Tab_Prodotti = id, nome,testo, id_sub

    Ecco il tutto, ora come posso fare?

  9. #9
    per stampare il menu:

    codice:
    select Tab_Categorie.id as categoria_id, Tab_Categorie.nome as categoria_nome,
    Tab_Sub_categorie.id as subcategoria_id, Tab_Sub_categorie.nome as subcategoria_nome,
    Tab_Sub_categorie.id_categoria from
    
    Tab_Categorie left join Tab_Sub_categorie on Tab_Sub_categorie.id_categoria = Tab_Categorie.id
    con questa query ti estrai i dati che ti servono per creare il menu. ok? poi te ne fai un'altra per estrarre i prodotti in base all'id della categoria scelto. Grazie a questo id sempre, saprai pure quale menu mostrare e quale tenere nascosto, ma cmq tutto il menu devi caricare.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    Cioè ne devo fare 2? come la monto con il menu? scusami ma non l'ho mai capito join!!
    mi puoi spiegare come si fa il where qui? perchè io avevo un menu simile questo solo che qui andavo solo mostrato categoria e prodotti e hanno risolto cosi:
    Codice PHP:
    <?
    $sql 
    "SELECT nome, titolo, sub_categoria.id AS subcat_id 
            FROM categoria  
            LEFT JOIN sub_categoria 
            ON categoria.id = sub_categoria.id_categoria"

    $res mysql_query($sql); 

    $output = array(); 

    while ( 
    $record mysql_fetch_object($res) ) { 
        
    $output[$record->nome][] = array( 
            
    'id'       => $record->subcat_id
            
    'titolo_en' => $record->titolo
        ); 

    ?> 
        <ul id="menu"> 
        <?php foreach ( $output as $cat => $subcats ): ?> [*][url="#"][b]<?php echo ucfirst(strtolower($cat)); ?>[/b] [/url]
        <ul> 
            <?php foreach ( $subcats as $subcat ): ?> [*][url="prodotto.php?id=<?php echo $subcat['id']; ?>"]- <?php echo ucfirst(strtolower($subcat['titolo'])); ?>[/url] 
            <?php endforeach; ?> [/list]
         
        <?php endforeach; ?> [/list]
    La differenza non dovrebbe essere molta, c'è solo 2 where in più da questa citata adesso!!

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.