2011-10-25 17 views
5

Próbuję utworzyć tabelę dynamiczną z PHP. Mam stronę, która wyświetla wszystkie zdjęcia z bazy danych. Potrzebuję tabeli tylko 5 kolumn. Jeśli zostanie zwróconych więcej niż 5 zdjęć, powinien utworzyć nowy wiersz, a wyświetlanie pozostałych zdjęć będzie kontynuowane.Tworzenie tabeli dynamicznej za pomocą PHP

Czy ktoś może pomóc?

Kody przejść tutaj: kod na stronie głównej: -

<table> 
    <?php 
     $all_pics_rs=get_all_pics(); 
     while($pic_info=mysql_fetch_array($all_pics_rs)){ 
     echo "<td><img src='".$pic_info['picture']."' height='300px' width='400px' /></td>"; 
      } 
?> 
</table> 

get_all_pics() funkcja:

$all_pics_q="SELECT * FROM pics"; 
     $all_pics_rs=mysql_query($all_pics_q,$connection1); 
     if(!$all_pics_rs){ 
      die("Database query failed: ".mysql_error()); 
     } 
     return $all_pics_rs; 

Kod ten tworzy jeden wiersz. Nie mogę wymyślić, jak mogę zdobyć wiele wierszy ... !!

+2

Po prostu FYI - zostaniesz cofnięty, ponieważ nie opublikowałeś żadnego kodu. – Drew

+0

Jeśli możesz edytować to pytanie, aby podać odpowiednie przykłady kodu, które wypróbowałeś, zgłoś go, aby zwrócić uwagę moderatora. Aby edytować, po prostu kliknij link "edytuj" pod swoim pytaniem. Aby go zgłosić, kliknij link "Oznacz flagę", wybierz opcję "Inne" i daj nam znać, że jest gotowy do sprawdzenia. –

+0

@Tim Post: Nie zgadzam się na twoje działanie. Myślę, że jego pytanie jest naprawdę jasne. Widziałem gorsze pytania na tym forum. – Jules

Odpowiedz

12
$maxcols = 5; 
$i = 0; 

//Open the table and its first row 
echo "<table>"; 
echo "<tr>"; 
while ($image = mysql_fetch_assoc($images_rs)) { 

    if ($i == $maxcols) { 
     $i = 0; 
     echo "</tr><tr>"; 
    } 

    echo "<td><img src=\"" . $image['src'] . "\" /></td>"; 

    $i++; 

} 

//Add empty <td>'s to even up the amount of cells in a row: 
while ($i <= $maxcols) { 
    echo "<td>&nbsp;</td>"; 
    $i++; 
} 

//Close the table row and the table 
echo "</tr>"; 
echo "</table>"; 

nie testowałem go jeszcze, ale mój dziki przypuszczenie jest coś takiego. Po prostu przejrzyj swój zestaw danych z obrazami i tak długo, jak jeszcze nie zrobiłeś 5 <td>, dodaj. Po osiągnięciu 5, zamknij wiersz i utwórz nowy wiersz.

Ten skrypt ma dać ci coś takiego. Oczywiście zależy to od tego, ile zdjęć masz i założyłem, że 5 (zdefiniowane w $ maxcols) było maksymalną liczbą obrazów, które chcesz wyświetlić w wierszu.

<table> 
    <tr> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
    </tr> 
    <tr> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;<td> 
    </tr> 
</table> 
+1

Zdefiniowałeś 'i' poza for, więc użyj go, aby wypełnić go' for (; $ i <5/* magic number! Bad! * /; ++ $ i) {) {echo ""; } 'między zamykającym'} 'i' echo ""; '. Nie trzeba dzielić ani nic. – RedX

+0

@RedX: Tak, masz rację. To łatwiejszy sposób na zrobienie tego. Idę odpowiednio edytować moją odpowiedź. – Jules

+0

@Jules: Dzięki! :-) Wypróbuję to ... – maxxon15

2
$max_per_row = 5; 
$item_count = 0; 

echo "<table>"; 
echo "<tr>"; 
foreach ($images as $image) 
{ 
    if ($item_count == $max_per_row) 
    { 
     echo "</tr><tr>"; 
     $item_count = 0; 
    } 
    echo "<td><img src='" . $image . "' /></td>"; 
    $item_count++; 
} 
echo "</tr>"; 
echo "</table>"; 
+0

Dzięki @Tom. Wypróbuję to ... – maxxon15

+0

Dzięki człowieku ... To działa! :) – maxxon15