Skocz do zawartości

Problem z pętlami (while i for)


Yakoby

Rekomendowane odpowiedzi

Zapytaniem/pętlą while poniżej wyciągam z bazy dane

$sql="SELECT * FROM tabela ORDER BY date_pub DESC";
$wynik = mysql_query($sql);
while ($projects = mysql_fetch_array($wynik)) {
?>
<div>
tu kod wyświetlający zawartość
</div>
<?php
};
?>

Chciałbym uzyskać następującą strukturę kodu:

<div class="okalajacy">
<div>dane</div>
<div>dane</div>
<div>dane</div>
</div><!-- zamkniecie okalajacy -->

zakładam że aby uzyskać taki efekt muszę użyć dodatkowo pętli for i tu moje pytanie czy da się uzyskać taką strukturę używając pętli for wewnątrz pętli while?

Odnośnik do komentarza
Udostępnij na innych stronach

<?php

$sql="SELECT * FROM tabela ORDER BY date_pub DESC";
$wynik = mysql_query($sql);
while ($projects = mysql_fetch_array($wynik)) {
?>
<div class="okalajacy">
<div><?php echo $projects['pole_tabeli1'];?></div>
<div><?php echo $projects['pole_tabeli2'];?></div>
<div><?php echo $projects['pole_tabeli3'];?></div>
</div><!-- zamkniecie okalajacy -->
<?php
};
?>

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

trochę nietrafnie sformułowałem zapytanie :unsure:

w bazie jest ponad 50 rekordów (każdy rekord ponad 15 pól). Obecnie wyświetlają się one jedne pod drugim zamknięte w divy. Coś na ten przyklad:

<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>

a chciałbym aby struktura wyglądała następująco;

<div class="okalajacy">
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
</div>
<div class="okalajacy">
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
</div>
<div class="okalajacy">
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
</div>
<div class="okalajacy">
<div>tu $zmiennia1, $zmienna2 itd</div>
<div>tu $zmiennia1, $zmienna2 itd</div>
</div>

wyrzeźbiłem coś takiego, tylko źle mi się domykają divy i się struktura kodu rozjeżdża:

<?php
$sql="SELECT * FROM dev_projects ORDER BY date_pub DESC";
$wynik = mysql_query($sql);

$cols=3; 
// echo "<div class='okalajacy'>";
do{
  echo "<div class='inner'>";
 for($i=1;$i<=$cols;$i++){

  $row=mysql_fetch_array($wynik);
  if($row){

?>
   tu echo danych
<?php
  }
  else{
 echo "</div>";
  }
 }
} while($row);
 echo "</div>";
?>

Odnośnik do komentarza
Udostępnij na innych stronach

Skoro liczba pol w tabeli jest n to możesz nazwy podać tak jak pisałem w pierwszym poście anwet dla 15 pol.

Możesz też wypisać dane z przechodząc w dodatkowej pętli. Jest to na tyle proste, że nie ma w tym żadnego problemu i rozwiazań może być kilka. Nawet masz podobne przykłady w https://php.net/manual/en/function.mysql-fetch-array.php

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Pewnie chodziło CI o coś takiego:

<?php
$sql="SELECT * FROM dev_projects ORDER BY date_pub DESC";
$wynik = mysql_query($sql);
$ile = mysql_num_rows($wynik);
for($i=0;$i<$ile;$i++)
{
$row=mysql_fetch_array($wynik);
$j = $i +1;
if($j % 3 == 0)
{
 echo "<div class='okalajacy'><br />";
 echo "<div>tu $row['id'], $row['name'] itd</div><br />";
} else
{
 echo "<div>tu $row['id'], $row['name'] itd</div><br />";
}
if($j % 3 == 0)
{
 echo "</div><br />";
}
}
?>

Kod sprawdza najpierw liczbę pobranych wyników z bazy, a później jeżeli reszta z dzielenia jest równa 0 to dodaje tego diva, bo z tego co zrozumiałem chciałeś mieć 3 wewnątrz tego diva :)

Pozycjonowanie stron Internetowych.
Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności