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; }