Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61

    Problema Foreach e JQuery

    Premessa: Non so se è la sezione giusta , nel caso non lo fosse mi scuso in anticipo e ringrazio il moderatore che sposterà questa discussione nella sezione giusta.

    Argomento:
    Quello che sto realizzando è una specie di "Suddivisione per argomenti" , attualmente ho utilizzato questo codice per estrarre da db i contenuti da due tabelle:

    codice:
    $thread_qry1 = "SELECT * FROM `xt_te` , `xt_pl` WHERE na_te = te_na ORDER BY na_te";
    
                            $row1 = XenForo_Application::get('db')->fetchAll($thread_qry1);
    Questo codice non fa altro che prendere i dati dalle tabelle xt_te e xt_pl che hanno in comune un dato che come riferimento ha na_te = te_na e poi viene fatta la query tramite il sistema XenForo_Application::get('db')->fetchAll nativo di Xenforo.

    Poi ho inserito questo codice:

    codice:
            $teCurrent = '';                              
                    
                            foreach ( $row1 AS $rows1 ) {
                                
                                $idTe = $rows1['id'];
                                 $contenuto .='<div class="Prova1">'.$rows1['id'].'</div>';
                                
                                if ($teCurrent != $rows1['na_te'])
                                      {
                                        $teCurrent = $rows1['na_te'];
                                                  echo ('<h2 class="trigger01"> <div class="Button"></div></h2>');
                                                  echo ('<div class="container">'.$contenuto.'</div>'); 
                                       }
                           
                                     
                              }
    e all'inizio della pagina del head ho inserito questo codice script:

    codice:
    $(document).ready(function(){    
        $(".container").hide();
        
        
        $("h2.trigger01").css("cursor","pointer").click(function(){
            $(this).next(".container").slideToggle("slow");
        });
    
    
    });
    In questo modo quello che viene fuori è la visualizzazione di un div Button che fin quando non ci clicco sopra non mi fa vedere il contenuto del div container , ma il problema è che essendo in un foreach ovviamente la lettura del codice continua a farmi vedere solo il primo contenuto , quindi un solo id in quanto il sistema crea un solo div container che però non contiene l'elenco di tutti gli id associati a quel "button" ma solo il primo id.

    Visivamente quello che viene fuori adesso è questo

    ______________________
    CONTENITORE 1 (BUTTON - numero di ID in riferimento al CONTENITORE 1 sono 3)
    ______________________
    contenuto (div container ) ( id = 1)
    ______________________
    CONTENITORE 2 (BUTTON - numero di ID in riferimento al CONTENITORE 2 sono 4)
    ______________________
    contenuto (div container) ( id = 1)
    mentre quello che dovrebbe far vedere è questo:

    ______________________
    CONTENITORE 1 (BUTTON - numero di ID in riferimento al CONTENITORE 1 sono 3)
    ______________________
    contenuto (div container ) ( id = 1)
    ------------------------------------------
    contenuto (div container ) ( id = 2)
    ------------------------------------------
    contenuto (div container ) ( id = 3)
    ------------------------------------------
    ______________________
    CONTENITORE 2 (BUTTON - numero di ID in riferimento al CONTENITORE 2 sono 4)
    ______________________
    contenuto (div container ) ( id = 1)
    ------------------------------------------
    contenuto (div container ) ( id = 2)
    ------------------------------------------
    contenuto (div container ) ( id = 3)
    ------------------------------------------
    contenuto (div container ) ( id = 4)
    ------------------------------------------
    Non so se mi sono spiegato , sono quasi sicuro che un errore di "stesura" del codice .
    Grazie per l'aiuto.

    Aggiunta/Aggiornamento:

    Se io tolgo il div container il sistema mi restituisce esattamente quello che voglio , solo che perdo la parte "interattiva" con jquery , come posso fare a mantenere anche il movimento di apertura del div con effetto slideToggle ? O se mi suggerite un altro modo per nascondere con jquery il contenuto del div container. Grazie
    Ultima modifica di netkingZ; 04-02-2014 a 13:04

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61
    up

  3. #3
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Se non ho capito male vorresti raggruppare i record per na_te (visto che li ordini nella query). Il tuo codice ha parecchi problemi...prova così:
    Codice PHP:
    $teCurrent '';
    $count 1;  
    $size count($row1);
    foreach(
    $row1 as $rows1){
         if (
    $teCurrent != $rows1['na_te']){
               if(
    $teCurrent != '') echo ('</div>');
               echo (
    '<h2 class="trigger01"> <div class="Button">
                                  </div></h2><div class="container">'
    );
               
    $teCurrent  $rows1['na_te'];
         }
         echo 
    '<div class="Prova1">'.$rows1['id'].'</div>';
         if(
    $count == $size)
             echo (
    '</div>');
         
    $count ++;

    Ultima modifica di boots; 05-02-2014 a 10:36

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61
    Forse mi sono spiegato male.
    Quello che ottengo adesso è questo:
    http://i60.tinypic.com/zthtll.png
    ma come potete vedere dall'immagine i vari ID sono associati ai rispettivi "contenitori" come voglio io , ma in questo caso come scritto nell'aggiornamento ho disattivato il div container cosi facendo non è attivato il codice jquery che invece mi serve per nascondere inizialmente i vari ID fin quando l'utente non clicca sul "Contenitore".

    EDIT:

    Per farvi capire meglio.
    Questo è quello che succede se riattivo il div container :

    http://i62.tinypic.com/14e5kep.png

    Come potete vedere viene visualizzato solo il primo ID , ma non è che gli altri non esistono solo che non so se nel codice php o se nel codice jquery sia sbagliato il fatto che quando clicco su quel div "Contenitore" deve farmi vedere tutti gli id che fanno riferimento a quel "Contenitore".
    Il div trigger01 non è altro che un "pulsante" per mostrare il contenuto del div container , solo che se il div container è attivo viene mostrato solo il primo ID ( visto che è un foreach ) e se non è attivo invece mostra tutti gli ID associati ai rispettivi "Contenitori" ma sono visibili fin da subito , quindi inutile usare jquery mentre io vorrei utilizzarlo.

    Grazie ancora per l'aiuto
    Ultima modifica di netkingZ; 05-02-2014 a 11:01

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61
    Quote Originariamente inviata da boots Visualizza il messaggio
    Se non ho capito male vorresti raggruppare i record per na_te (visto che li ordini nella query). Il tuo codice ha parecchi problemi...prova così:
    Codice PHP:
    $teCurrent '';
    $count 1;  
    $size count($row1);
    foreach(
    $row1 as $rows1){
         if (
    $teCurrent != $rows1['na_te']){
               if(
    $teCurrent != '') echo ('</div>');
               echo (
    '<h2 class="trigger01"> <div class="Button">
                                  </div></h2><div class="container">'
    );
               
    $teCurrent  $rows1['na_te'];
         }
         echo 
    '<div class="Prova1">'.$rows1['id'].'</div>';
         if(
    $count == $size)
             echo (
    '</div>');
         
    $count ++;

    Perfetto!!
    Grazie

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.