Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61

    Raggruppare risultati di due tabelle

    Salve a tutti questo è il codice che ho sviluppato:


    codice:
    <script>
    $(document).ready(function(){
        
        $(".containerTeam").hide();
        
        
        $("h2.trigger01").css("cursor","pointer").click(function(){
            $(this).next(".containerTeam").slideToggle("slow");
        });
    
    
    });
    
    
    
    
    </script>

    Codice PHP:
    $thread_qry1 "SELECT * FROM `xt_teams` AS u, `xt_player` AS m WHERE (u.name_team = m.team_name AND m.accepts = 1) ORDER BY u.console_team";
          
    $row1 XenForo_Application::get('db')->fetchAll($thread_qry1);
          
    $teamCurrent '';      $i 1;    $count 1;        $size count($row1);                                          foreach ( $row1 AS $rows1 ) {                                   if ($teamCurrent != $rows1['name_team'])                   {                    $ii $i++;                    if($teamCurrent != '') echo ('</div>');                    echo ('<h2 class="trigger01">                            <div style="height:100px; width:100%; background-color:red"></div>                                   </h2>                                         <div class="containerTeam">                                                                  <div style="height:50px; width:100%; background-color:green"></div>                                                              ');
                            
    $teamCurrent $rows1['name_team'];                    }                                         echo ('                                <div style="height:50px; width:100%; background-color:yellow"></div>                                   ');                                                         if($count == $size)                                echo ('</div>');                          $count ++;                           } 

    Con tutto questo codice ottengo esattamente ciò che voglio , cioè che per ogni div ROSSO e che sono quando clicco sul div ROSSO vengano mostrati i div Verde e GIALLO , e i dati come potete notare derivano da due tabelle differenti che hanno in comune il name_team = team_name.


    Mantenendo il codice qui sopra scritto vorrei creare per ogni div ROSSO delle categorie che li raggruppino.
    Immaginate di avere una serie di libri ( i div ROSSI che contiene il div VERDE e quello GIALLO ) e che vogliate dividerli per genere , quindi raggruppando tutti i libri horror per esempio insieme , tutti i libri di avventura insieme e cosi via.


    ESEMPIO VISIVO:


    codice:
    -- CATEGORIA: HORROR: <-- ELEMENTO MANCANTE NEL CODICE SOPRA
       ---- LIBRO UNO (DIV ROSSO ) composto da :
          ----- DIV VERDE 
          ----- DIV GIALLO
    
    
       ---- LIBRO DUE (DIV ROSSO ) composto da :
          ----- DIV VERDE 
          ----- DIV GIALLO
    
    
    -- CATEGORIA: AVVENTURA: <-- ELEMENTO MANCANTE NEL CODICE SOPRA
       ---- LIBRO TRE (DIV ROSSO ) composto da :
          ----- DIV VERDE 
          ----- DIV GIALLO
    
    
       ---- LIBRO QUATTRO (DIV ROSSO ) composto da :
          ----- DIV VERDE 
          ----- DIV GIALLO


    Scusate non so se mi sono fatto capire ... cmq come posso realizzare ciò che mi serve?


    Grazie per la cortese attenzione

  2. #2
    Utente di HTML.it L'avatar di Azucchi
    Registrato dal
    Jul 2014
    Messaggi
    123
    Formatta il codice sopra Così è più chiaro per chi legge

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    Quote Originariamente inviata da Azucchi Visualizza il messaggio
    Formatta il codice sopra Così è più chiaro per chi legge
    non è colpa sua, ma c'è qualche errore nel forum.. perché se tu provi ad inserire codice php con i tag php del forum
    il forum dopo li appiccica. se vuoi provare incolla un codice php nei tag php e poi dopo senza pubblicare fai l'anteprima..

    io ho sempre riscontrato questo problema.

    comunque per il problema devi usare le inner join ..non chiedimi come si fa ma ti posso tardi questo:
    http://it.wikipedia.org/wiki/Join_(SQL)




    buona serata.

  4. #4
    Utente di HTML.it L'avatar di Azucchi
    Registrato dal
    Jul 2014
    Messaggi
    123
    Quote Originariamente inviata da LedGiallo Visualizza il messaggio
    non è colpa sua, ma c'è qualche errore nel forum.. perché se tu provi ad inserire codice php con i tag php del forum
    il forum dopo li appiccica. se vuoi provare incolla un codice php nei tag php e poi dopo senza pubblicare fai l'anteprima..

    io ho sempre riscontrato questo problema.
    Lo so lo so, ma basta dargli una sistemata manuale

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61
    Formatta il codice sopra Così è più chiaro per chi legge
    Non posso più modificarlo , mi dispiace.

    comunque per il problema devi usare le inner join ..non chiedimi come si fa ma ti posso tardi questo:
    http://it.wikipedia.org/wiki/Join_(SQL)
    Non credo sia la soluzione perche ho gia fatto un JOIN nel codice , capisco che non si comprende nulla scritto cosi , vi riscrivo il codice PHP qui di seguito:

    $thread_qry1 = "SELECT * FROM `xt_teams` AS u, `xt_player` AS m WHERE (u.name_team = m.team_name AND m.accepts = 1) ORDER BY u.console_team";

    $row1 = XenForo_Application::get('db')->fetchAll($thread_qry1);

    $teamCurrent = '';
    $i = 1;
    $count = 1;
    $size = count($row1);


    foreach (
    $row1 AS $rows1 ) {

    if (
    $teamCurrent != $rows1['name_team'])
    {
    $ii = $i++;
    if(
    $teamCurrent != '') echo ('</div>');
    echo (
    '<h2 class="trigger01">
    <div style="height:100px; width:100%; background-color:red"></div>
    </h2>
    <div class="containerTeam">

    <div style="height:50px; width:100%; background-color:green"></div>

    '
    );

    $teamCurrent = $rows1['name_team'];
    }

    echo (
    '
    <div style="height:50px; width:100%; background-color:yellow"></div>
    '
    );

    if(
    $count == $size)
    echo (
    '</div>');
    $count ++;

    }
    Quello che la INNER JOIN crea è questo :

    -- CATEGORIA: HORROR:<-- ELEMENTO MANCANTE NEL CODICE SOPRA
    ---- LIBRO UNO (DIV ROSSO ) composto da :
    ----- DIV VERDE
    ----- DIV GIALLO

    -- CATEGORIA : AVVENTURA <-- ELEMENTO MANCANTE NEL CODICE SOPRA
    ---- LIBRO DUE (DIV ROSSO ) composto da :
    ----- DIV VERDE
    ----- DIV GIALLO


    -- CATEGORIA: HORROR:<-- ELEMENTO MANCANTE NEL CODICE SOPRA
    ---- LIBRO TRE (DIV ROSSO ) composto da :
    ----- DIV VERDE
    ----- DIV GIALLO


    Invece a me non serve che ogni DIV sia contenuto in una Categoria ma che tutti i DIV della stessa categoria vengano raggruppati , quindi tutti i div con categoria Horror siano nella categoria Horror , tutti i div della categoria Avventura siano nella categoria Avventura.

    Ho provato anche GROPU BY ma il risultato è che mostra le categorie ma mette solo un DIV per categoria una roba cosi :

    -- CATEGORIA: HORROR:<-- ELEMENTO MANCANTE NEL CODICE SOPRA
    ---- LIBRO UNO (DIV ROSSO ) composto da :
    ----- DIV VERDE
    ----- DIV GIALLO

    -- CATEGORIA : AVVENTURA <-- ELEMENTO MANCANTE NEL CODICE SOPRA
    ---- LIBRO DUE (DIV ROSSO ) composto da :
    ----- DIV VERDE
    ----- DIV GIALLO


    Ultima modifica di netkingZ; 07-08-2014 a 06:11

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    forse non ho capito bene, però penso che puoi:
    • ordinare la query per categoria;
    • nel foreach impostare un controllo del tipo "Se categoria corrente == categoria precedente allora non aprire un nuovo div rosso, altrimenti chiudi il div rosso precedente e apri un nuovo div";
    • una volta passato il controllo sulla categoria, fai l'elenco dei div come fai nel tuo codice

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61
    Come faccio a specificare qual'è la categoria presente e quella precedente?

    La query è ordinata per categoria che si chiama u.console_team ORDER BY u.console_team

    Poi come dici te mi visualizzerebbe solo una categoria alla volta credo , invece io ho bisogno che siano tutte visibili solo che gli elementi al loro interno ( singoli Div Rossi) si devono trovare dentro quella specifica categoria , come nell'esempio visivo del primo post.

    Ultima modifica di netkingZ; 07-08-2014 a 08:52

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    esempio di codice, revisionalo secondo le tue necessità

    Codice PHP:
    <?php
    $sql 
    "SELECT categoria, libro FROM tabella ORDER BY categoria";
    $ex_sql mysqli_query($sql);

    $cat_prec "";

    while(
    $row mysqli_fetch_array($ex_sql)) {
        if (
    $row['categoria'] != $cat_prec) {

            echo 
    '<div id="rosso">';

        }
        
    // inserire il codice che produce i div gialli e rossi
        
    $cat_prec $row['categoria'];
    }
    ?>

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61
    Questo è il codice che ho scritto con le modifiche da te indicate :


    $thread_qry1 = "SELECT * FROM `xt_teams` AS u, `xt_player` AS m WHERE (u.name_team = m.team_name AND m.accepts = 1) ORDER BY u.console_team";

    $row1 = XenForo_Application::get('db')->fetchAll($thread_qry1);

    $teamCurrent = '';
    $i = 1;
    $count = 1;
    $size = count($row1);

    $category = '';


    foreach (
    $row1 AS $rows1 ) {

    if($category != $rows1['console_team']){

    if (
    $teamCurrent != $rows1['name_team'])
    {
    $ii = $i++;
    if(
    $teamCurrent != '') echo ('</div>');
    echo (
    '<h2 class="trigger01">
    <div style="height:100px; width:100%; background-color:red"></div>
    </h2>
    <div class="containerTeam">

    <div style="height:50px; width:100%; background-color:green"></div>

    '
    );

    $teamCurrent = $rows1['name_team'];
    }

    echo (
    '
    <div style="height:50px; width:100%; background-color:yellow"></div>
    '
    );

    if(
    $count == $size)
    echo (
    '</div>');
    $count ++;
    }
    $category = $rows1['console_team'];
    }
    Quello che mi restituisce è la divisone fra le categorie ma ognuna delle categorie ha solo un elemento ( un solo DIV Rosso) , dove sbaglio?

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Prova così

    Codice PHP:
    $thread_qry1 "SELECT * FROM `xt_teams` AS u, `xt_player` AS m WHERE (u.name_team = m.team_name AND m.accepts = 1) ORDER BY u.console_team";

    $row1 XenForo_Application::get('db')->fetchAll($thread_qry1);

    $teamCurrent '';
    $i 1;
    $count 1;
    $size count($row1);

    $category '';


    foreach ( 
    $row1 AS $rows1 ) {

        if(
    $category != $rows1['console_team']){
            echo 
    "la categoria";
            
    $category $rows1['console_team'];
        }

        if (
    $teamCurrent != $rows1['name_team'])
        {
            
    $ii $i++;
            if(
    $teamCurrent != '') echo ('</div>');
            echo (
    '<h2 class="trigger01">
            <div style="height:100px; width:100%; background-color:red"></div>
            </h2>
            <div class="containerTeam">

            <div style="height:50px; width:100%; background-color:green"></div>

            '
    );

            
    $teamCurrent $rows1['name_team'];
        }

        echo (
    '
        <div style="height:50px; width:100%; background-color:yellow"></div>
        '
    );

        if(
    $count == $size)
        echo (
    '</div>');
        
    $count ++;


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.