Support

Account

Home Forums Add-ons Repeater Field Repeater field to create table Reply To: Repeater field to create table

  • Sorry for the code.

    <?php 
        
        function unique_multidim_array($array, $key) { 
            $temp_array = array(); 
            $i = 0; 
            $key_array = array(); 
            
            foreach($array as $val) { 
                if (!in_array($val[$key], $key_array)) { 
                    $key_array[$i] = $val[$key]; 
                    $temp_array[$i] = $val; 
                } 
                $i++; 
            } 
            return $temp_array; 
        }
        
        $finals = array();
        $car = '';
        $race_name = '';
        $divisions = '';
        $races = '';
        $pilots = array();
        if( have_rows('champ_division') ): 
            while( have_rows('champ_division') ): the_row();
    		// vars
            $divisions = get_sub_field('division_name');
            $races = get_sub_field('division_races');
            $pilots = array();
            $finals = array();
            
            echo '<h4 class="text-uppercase">'.$divisions.'</h4>'; ?>
            <table class="table champ_table" id="">
            
                <?php 
                    foreach( $races as $post): // variable must be called $post (IMPORTANT) 
                    setup_postdata($post); 
                    while ( have_rows ('race_grid')) : the_row();
                        while (have_rows('race_pilot')) : the_row();
                            $pilots[] = get_sub_field('pilot_name');
                            $finals[] = get_sub_field('final_position');
                            $penalty = get_sub_field('pilot_penaly');
                            $bestlap = get_sub_field('pilot_bestlap');
                            $warn = get_sub_field('pilot_warning'); ?>
                        <?php endwhile;
                    endwhile;
                endforeach;
                wp_reset_postdata();
                $drivers = unique_multidim_array($pilots,'display_name'); 
                $race_id = unique_multidim_array($races,'ID');         
                
                if (!empty($drivers)) { ?>
                    <thead>
                        <tr>
                            <th>Nome do piloto</th>
                            <th>Carro</th>
                            <th>Número</th>
                            <th>Equipe</th>
                <?php } foreach( $races as $post): // variable must be called $post (IMPORTANT) 
                    setup_postdata($post);
                    echo '<th>';
                    the_title();
                    echo '</th>'; 
                endforeach;
                 echo '</tr></thead>';
                wp_reset_postdata(); ?>
                <?php 
                foreach ($drivers as $driver) : 
                    $pid = 'user_'.$driver['ID'];
                    $car = '';
                    $pnumber = '';
                    $team = get_field('user_team', $pid);
                    while ( have_rows ('user_car', $pid) ) : the_row();
                        $car = get_sub_field('car_model');
                        $pnumber = get_sub_field('car_number');                                                
                    endwhile; 
                    ?>
                    <tbody>
                    <tr>
                        <td><?php echo $driver['display_name']; ?></td>
                        <td><?php if(!empty($car)) { echo $car->post_title;}  ?></td>
                        <td><?php echo $pnumber; ?></td>
                        <td><?php echo $team; ?></td>
                        <?php foreach( $races as $post): // variable must be called $post (IMPORTANT) 
                            setup_postdata($post);
                            echo '<td>';
                                
                                if (in_array($driver, $pilots)){
                                    print_r($finals);
                                    //$warn = get_sub_field('pilot_warning');
                                    //print_r ($penalty);
                                }                             
                            echo '</td>';
                            //print_r ($group_pilots); 
                        endforeach;
                        echo '</tr></tbody>';
                        wp_reset_postdata(); ?>
                <?php endforeach; //Piloto Linha ?>
                </tr>
            </tbody>
            
            </table>
         <?php   // IMPORTANT - reset the $post object so the rest of the page works correctly 
            endwhile;// IMPORTANT - reset the $post object so the rest of the page works correctly
         endif;
    ?>

    In my example, in_array gets to build the list of drivers with no duplicates. But now I have to bring every single race result regarding that driver. I’m stuck but I’ll check your code.