Skip to content
Advertisement

foreach slider only shows one db entry

I’ve got an array which gets all the testimonials from the database table and displays them via a foreach array. I want some kind of a slider which fades-in and fades-out the results.

This is my query:

$showTestimonials = array(); 
$getTestimonials = mysqli_query($mysqli,"SELECT * FROM testimonials ORDER BY testimonial_id DESC") OR die (mysqli_error($mysqli));

while($row = mysqli_fetch_array($getTestimonials)){
    $row = array(  
    'testimonialName' => $row['name'], 
    'testimonialMessage' => $row['message']);
    $showTestimonials[] = $row;
}

My PHP foreach code:

$count = 0; 
foreach ($showTestimonials as $stt):
echo '<div class="content welcome features container">';
echo '<div class="content welcome features testimonial">';
echo '<div id="goSlide">';

if($count == 0) { 
echo '<div class="slide show">';
echo '<div>'.$stt['testimonialMessage'].' '.$stt['dModel'].'</div>';
echo '<div>'.$stt['testimonialName'].'</div>';
echo '</div>';
}

echo '</div>'; 
echo '</div>';
echo '</div>';
$count++;
endforeach;

My piece of Javascript code

$(document).ready(function(){
  var slides = $('#goSlide > .slide').length;
    var current = 0;

    setInterval(function() { 
        var next = ( ( current + 1 ) == slides ? 0 : current + 1 );

        $( $( "#goSlide > .slide" )[ current ] ).fadeOut(1000).removeClass(".show");
        $( $( "#goSlide > .slide" )[ next ] ).fadeIn(1000);

        current = next;
    },  4000);

});

It’s currently only showing ONE (the latest in the database) and only fades-in and out that one. It does not show the other testimonials.

Advertisement

Answer

The problem is you are updating $row inside the loop

while($row = mysqli_fetch_array($getTestimonials)){
    $row = array(  <---- here $row is getting updated 
    'testimonialName' => $row['name'], 
    'testimonialMessage' => $row['message']);
    $showTestimonials[] = $row;
}

change it to

while($row = mysqli_fetch_array($getTestimonials)){
    $row_1 = array(  
    'testimonialName' => $row['name'], 
    'testimonialMessage' => $row['message']);
     $showTestimonials[] = $row_1;
}
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement