Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Wstawianie kodu po kilku rekordach z pętli
Forum PHP.pl > Forum > Przedszkole
ketna
Witam,

mam taką pętlę jak poniżej. Potrzebuję, żeby po każdych 5 rekordach wstwiał się dany kod.
Niestety nie wiem jak to zrobić. Będę bardzo wdzięczny za pomoc.

  1. <?php
  2. $sql="SELECT kolumna FROM tabela"; 
  3. @$result=$db->Query($sql);
  4. while ($row = mysql_fetch_array($result)){
  5. print $row[0];
  6. if(questionmark.gif?){
  7. print "</tr><tr>";
  8. }
  9. }
  10. ?>


Pozdrawiam
yumasta
mozesz troszke bardziej sprecyzowac po jakich 5 rejkordach i jaki kod??
ketna
Kod ma się wstawiać po każdych pięciu rekordach jakie zwróci zapytanie.
Czyli jeśli zapytanie do bazy zwróci 10 wyników to po 5 i 10 ma się wstawić
następujący kod: "</tr><tr>".
wijet
Nie podam Ci rozwiazania, tylko cos takiego smile.gif
  1. <?php
  2.  
  3. for($a=1;$a<15;$a++)
  4. {
  5. print $a.'<br/>';
  6. if($a%== 0)
  7. {
  8. print '<hr/>';
  9. }
  10.  
  11. }
  12. ?>
ketna
Próbowałem to zastosować niestety efekt jest taki, że zwielokratnia mi się pętla. Jeśli dane zapytanie zwraca 10 wierszy to teraz po dodaniu for, każdy ten sam wiersz wyświetla się 10 razy. Czyli jeśli zapytanie daje normalnie 10 wyników po zastosowaniu for dostaję 100. Bardzo proszę o jakąś podpowiedź bo kompletnie utknąłem.

  1. <?php
  2. $sql='SELECT a FROM tabela';
  3. @$result=$db->Query($sql);
  4. $fields=mysql_num_rows($result);
  5.  
  6. print '<table><tr>';
  7.  
  8. while ($row = mysql_fetch_row($result)){
  9. for($a=1;$a<=$fields;$a++){ 
  10.  
  11. print '<td>'.$row[0].'('.$a.')</td>';
  12.  
  13. if($a%== 0){
  14. print '</tr><tr>';
  15. }
  16. }
  17. print '</tr></table>';
  18. }
  19. ?>
nospor
smile.gif
jak ty w petli robisz petle to sie nie dziw ze ci do kwadratu wychodzi...

wijet podal ci schemat jak to powinno wygladac, a ty to bezmyslnie skopiowales. jego for to twoj while. ty tylko do tego while dorob zwiekszanie zmiennej $a o jeden
ketna
Tak też już próbowałem, ale wtedy $a zwiększa się o ilość wszystkich zwróconych wierszy, a kod który poprzednio wkleiłem to tylko podpętla. Całość wygląda tak jak poniżej. Nie wiem jak zrobić, żeby $a, liczyło się odzielnie dla każdej z 3 pętli głównych (foreach) oddzielnie.

  1. <?php
  2. $tablica=array(1, 2, 3);
  3. foreach($tablica as $value) { 
  4. $sql='SELECT a FROM tabela WHERE b=$value';
  5. @$result=$db->Query($sql);
  6. //$fields=mysql_num_rows($result);
  7. print '<table><tr>';  
  8. while ($row = mysql_fetch_row($result)){
  9. $a++;
  10. print '<td>'.$row[0].'('.$a.')</td>';  
  11. if($a%== 0){
  12. print '</tr><tr>';
  13. }
  14. print '</tr></table>';
  15. }
  16. }
  17. ?>
nospor
wystarczy ze przed while, te $a wyzerujesz.
  1. <?php
  2. //....
  3. $a= 0;
  4. while ($row = mysql_fetch_row($result)){
  5. $a++;
  6. //.....
  7. ?>
HighVoltage
  1. <?php
  2. $i=0;
  3. echo "<table>";
  4. echo "<tr>";
  5. while($row=mysql_fetch_row($result))
  6. {
  7.  $i++;
  8.  echo "<td>".$row[0]."</td>";
  9.  
  10.  if($i == 5)
  11.  {
  12. echo "</tr><tr>";
  13. $i=0;
  14.  }
  15. }
  16. echo "</tr>";
  17. echo "</table>";
  18. ?>
ketna
Wielkie dzięki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.