Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Query con più tabelle che uniscono dati 1 a molti

    Salve ho una funzione che mi incrocia i dati tra gli istituti bancari e chi ci lavora dentro.
    io vorrei che a video si creasse una tabella per ogni banca con dentro le persone.

    Es:
    banca A
    pippo
    pluto
    ciccio

    Banca B
    lore
    ipsum
    topolino


    Adesso invece vedo cosi

    Banca A
    ciccio
    Banca B
    lore
    Banca A
    pluto

    Codice PHP:
    function risultato_ricerca_archivio() {
        global 
    $conn;
        
    $region $_POST['region'];
    $province $_POST['province'];
    $city $_POST['city'];
    $banca $_POST['banca'];
    $candidato $_POST['candidato'];
    $cluster $_POST['cluster'];
    $stato_trattativa $_POST['stato_trattativa'];
        
    $sql "SELECT COUNT(*) FROM persone";
        
    $stmt $conn->prepare($sql);
        
    $stmt->execute();
        
    $row $stmt->fetch(PDO::FETCH_NUM);
        
    $tot_records $row[0];
        
    $perpage 15;
        
    $page 1;
             if(isset(
    $_GET['page'])){$page filter_var($_GET['page'],FILTER_SANITIZE_NUMBER_INT);}
        
    $tot_pagine ceil($tot_records/$perpage);
        
    $pagina_corrente $page;
        
    $primo = ($pagina_corrente-1)*$perpage;    
            
    $sql 'SELECT persone.*, comuni.nome AS comune,  comuni.id AS comune_id, banche_mue.nome  AS nbanca FROM persone ';
        
    $sql .= 'INNER JOIN banche_mue ON persone.id_banca = banche_mue.id ';
        
    $sql .= 'INNER JOIN comuni ON banche_mue.id_comune = comuni.id  ';
        
    $out='<table class="table">';
        if (
    $_POST['region'] AND $_POST['cluster'])  
    {
        
    $sql .= " WHERE banche_mue.id_regione = '".$_POST['region']."' AND persone.cluster = '".$_POST['cluster']."'";
    }  
        elseif (
    $_POST['region'] AND $_POST['province'] AND $_POST['cluster'] )  
    {
        
    $sql .= " WHERE banche_mue.id_regione = '".$_POST['region']."' AND banche_mue.id_provincia = '".$_POST['province']."' AND persone.cluster = '".$_POST['cluster']."'";
    }  
    elseif (
    $_POST['region'] AND $_POST['province'] AND $_POST['city'] AND $_POST['cluster'] )  
    {
        
    $sql .= " WHERE banche_mue.id_regione = '".$_POST['region']."' AND banche_mue.id_provincia = '".$_POST['province']."' AND banche_mue.id_comune = '".$_POST['city']."' AND persone.cluster = '".$_POST['cluster']."'";
    }  
        elseif (
    $_POST['region'] AND $_POST['province'] AND $_POST['city'] AND $_POST['banca']  )  
    {
        
    $sql .= " WHERE banche_mue.id_regione = '".$_POST['region']."' AND banche_mue.id_provincia = '".$_POST['province']."' AND banche_mue.id_comune = '".$_POST['city']."' AND persone.id_banca = '".$_POST['banca']."'";
    }  
    elseif (
    $_POST['region'] AND $_POST['province'] AND $_POST['city'])
    {
        
    $sql .= " WHERE banche_mue.id_regione = '".$_POST['region']."' AND banche_mue.id_provincia = '".$_POST['province']."' AND banche_mue.id_comune = '".$_POST['city']."'";
    }  
    elseif (
    $_POST['region'] AND $_POST['province'] )
    {
        
    $sql .= " WHERE banche_mue.id_regione = '".$_POST['region']."'  AND banche_mue.id_provincia = '".$_POST['province']."'";
    }  
    elseif (
    $_POST['region'])
    {
        
    $sql .= " WHERE banche_mue.id_regione = '".$_POST['region']."' GROUP BY comuni.nome,  comuni.id, banche_mue.nome, persone.id ";
    }  
    elseif (
    $_POST['cluster'])
    {
        
    $sql .= " WHERE persone.cluster = '".$_POST['cluster']."'";
    }  
    elseif (
    $_POST['stato_trattativa'])
    {
        
    $sql .= " WHERE persone.stato_trattativa = '".$_POST['stato_trattativa']."'";
    }  
    elseif (
    $_POST['candidato'])
    {
        
    $sql .= " WHERE persone.cognome LIKE '%".$_POST['candidato']."%'";
    }  
        
        
    $sql .= 'ORDER BY persone.cognome ASC LIMIT '.$perpage.' OFFSET '.$primo.'  ';    
        
    $stmt $conn->prepare($sql);
        
    $stmt->execute();

        while(
    $row $stmt->fetch(PDO::FETCH_ASSOC)){
            if (
    $i==0){   $out .= "<tr>";}
            
    $out.='<td>'.$row['comune'].'</td>';
            
    $out.='<td>'.$row['nbanca'].'</td>';
            
    $out.='</tr>';
            
    $out.='<tr>';
            
    $out.='<td>'.$row['nome_persone'].' &nbsp; &nbsp;'.$row['cognome'].' </td>';
            
    $out.='<td>'.$row['cluster'].'</td>';
            
    $out.='<td>'.$row['stato_trattativa'].'</td>';
            
    $out.='<td>'.$row['trattiva'].'</td>';
            
    $out.='<td>'.$row['telefono'].'</td>';
            
    $out.='</tr>';
            }
            
    $out.='<tr><td colspan="7"><nav><ul class="pagination">';
    for(
    $i=1$i<=$tot_pagine$i++)
        {
        
    $out .='<li><a href="?azione=risultato_ricerca&page='.$i.'">'.$i.'</a></li>';
        }
    $out .= "</ul></nav></td></tr>";
    $out.='</table>';
    return(
    $out);
        
        } 
    A monte di tutto ciò c'è un form che mi permette di selezionare per regione, provincia, comune, etc etc..

    Grazie per ogni tipo di suggerimento

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,543
    potresti semplicemente ordinarli prima per banca:
    ORDER BY banche_mue.id, persone.cognome ASC LIMIT ....

  3. #3
    Ciao grazie per la risposta, così come dici tu però mi viene
    Banca A
    xxxxx
    xxxx
    Banca A
    xxxxx
    xxxx
    Banca B
    yyyyy
    yyyy

    io vorrei una sola riga per ogni banca con dentro tutti quelli che ci lavorano e non disposte su varie righe.

    Banca A
    sssssss
    ssssssss
    sssssss

    BAnca B
    xxxxxx
    xxxxxxxx
    xxxxxxx

    Banca C
    vvvvvvvvv
    vvvvvvvv
    vvvvv

  4. #4
    Per chi avesse il mio stesso problema di visualizzazione dati ho trovato questa soluzione

    Codice PHP:
    foreach($stmt as $row){
            
    $out .= "<tr>";
            
    $out.='<td>'.$row['comune'].'</td>';
            
    $out.='<td>'.$row['nbanca'].'</td>';
            
    $out.='</tr>';
            if(
    $row==true){
                
    $sql 'SELECT * FROM persone where id_banca = '.$row['bancaid'].' ';
                
    $stmt $conn->prepare($sql);
                
    $stmt->execute();    
                
    $out.='<tr>';
                
    $out.='<td>';
                
    $out.='<ul>';
                  foreach(
    $stmt as $row){
                   
    $out.='<li>'.$row['nome_persone'].' &nbsp; &nbsp;'.$row['cognome'].'  &nbsp; &nbsp; '.$row['cluster'].' &nbsp; &nbsp;'.$row['stato_trattativa'].'</li>';
                   }
                   
    $out.='</ul>';
                   
    $out.='</td>';
                   
    $out.='</tr>';
               }
            }
            
    $out.='<tr><td colspan="7"><nav><ul class="pagination">';
    for(
    $i=1$i<=$tot_pagine$i++)
        {
        
    $out .='<li><a href="?azione=risultato_ricerca&page='.$i.'">'.$i.'</a></li>';
        }
    $out .= "</ul></nav></td></tr>";
    $out.='</table>'
    e cambiato la query inziale cosi
    Codice PHP:
    $sql 'SELECT DISTINCT banche_mue.*, comuni.nome AS comune,  comuni.id AS comune_id, banche_mue.nome  AS nbanca, banche_mue.id as bancaid FROM banche_mue ';
        
    $sql .= 'INNER JOIN persone ON persone.id_banca = banche_mue.id ';
        
    $sql .= 'INNER JOIN comuni ON banche_mue.id_comune = comuni.id  '

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 © 2020 vBulletin Solutions, Inc. All rights reserved.