Benim DB yaklaşık 5000 kayıtları, sahip, bir "öğrenci" tablo var. I two divlere bu kayıtları görüntülemek istiyorum. Nasıl yapabilirim ki iki sorguyu çalıştırmadan; tek bir sorgu kullanarak?
"Orta" ve çıkış div etiketi ve ikinci div başlangıç etiketi bitiş etiketi Sadece nerede bulabilirsiniz:
<?
$rowcount = mysql_num_rows($recordset);
echo "<div id='div1'>";
$i = 0;
while ($d = mysql_fetch_object($recordset)) {
echo $d->somefield;
$i++;
if ($i == floor($rowcount / 2)) {
//we have reached the mid-point, let's close the first DIV
echo "</div><div id='div2'>";
}
}
echo "</div>";
?>
Sadece CSS3 kullanın. O supported ama baş ağrısı bir sürü kaydeder ve değişiklik yaparken çok daha güçlü olduğunu ne kadar yaygın emin değil.
column-count
kullanın ve column-width
sütun ve her sütunun genişliği sayısını kontrol etmek. İşte bazı örnek kod ve bazı oldukça etkileyici sonuçlar bulunuyor. Önek-webkit-moz ve şimdi yılına kadar tüm tarayıcılarda standart.
.multi-column {
/* Standard */
column-count: 2;
column-width: 150px;
/* Webkit-based */
-webkit-column-count: 2;
-webkit-column-width: 150px;
/* Gecko-based */
-moz-column-count: 2;
-moz-column-width: 150px;
}
Bu <div>
Uygulanan
<div class="multi-column">
Ethelred of Wessex
Louis XII of France
George Frideric Handel
George Washington
Charles Deslandes
Andrew Jackson
Alfred Vail
William McKinley
Woodrow Wilson
Abdul-Aziz ibn Saud
Fidel Castro
Charles de Gaulle
Leonardo da Vinci
</div>
Istersen tüm bu zor işi sonra neye benzediğini görmek musunuz?
Ama 3 sütun ne varsa? Problem yok.
Ama size derim 4 sütun işleyebilir yolu yoktur:
Yeter! Şimdi bu ekleyerek Durmalıyız
Tanrı DUR olun!
get_column()
fonksiyon göstermek istediğiniz her öğenin sütun hesaplar, yardımcı olabilir.
Bu örnek komut dosyası iki sütun yazdırmak için nasıl gösterir, ama sen diğer sütun numarası gerekiyorsa ihtiyaçlarını gidermek için iki dakika içinde değiştirebilirsiniz.
<?php
// sample query, get members
$query = mysql_query("select name from persons");
// count total number of items to show
$total = mysql_num_rows($query);
// initiate row counter
$counter = 1;
// initiate columns contents
$column_1 = '';
$column_2 = '';
while($row = mysql_fetch_assoc($query)){
// caluculate column for current element from total items to be showed number of columns and current item
$column = get_column($total, 2, $counter);
if($column == 1){
$column_1 .= $row['name'].'<br>';
}
if($column == 2){
$column_2 .= $row['name'].'<br>';
}
$counter++;
}
// show content in two table comments
echo "<table>
<tr>
<td>$column_1</td>
<td>$column_2</td>
</tr>
</table>";
?>
ve fonksiyonu:
<?php
/**
* Calculate column number where an item should be displayed on a "newspaper style"
* or "phoneguide style" report according its postion
* used to put same number of items on each column
*
* receive 3 numbers: $vp_total_size: total number of items on report
* $vp_columns : number of columns of report
* $vp_element : element position for item (1 to $vp_total_size)
*
* by Marcos A. Botta <marcos DOT botta AT gmail DOT com>
* 02/02/2007
*
*/
function get_column($vp_total_size, $vp_columns, $vp_element){
if($vp_element <= 0){
return 1;
}
if($vp_element < $vp_columns &&
$vp_columns >= $vp_total_size){
return $vp_element;
}
$vl_avg_items_by_column = $vp_total_size / $vp_columns;
$vl_items_on_first_columns = ceil($vl_avg_items_by_column);
$vl_items_on_last_columns = floor($vl_avg_items_by_column);
$vl_column_limit = ($vl_avg_items_by_column - $vl_items_on_last_columns) * $vp_columns;
$vl_allocated_items = 0;
for($i=1;$i<$vp_columns;$i++){
if($i < $vl_column_limit ||
"$i" == "$vl_column_limit"){
$vl_items_on_current_column = $vl_items_on_first_columns;
}
else{
$vl_items_on_current_column = $vl_items_on_last_columns;
}
$vl_allocated_items += $vl_items_on_current_column;
if($vp_element <= $vl_allocated_items){
return $i;
}
}
return $vp_columns;
} // get_column()
?>
iyi şanslar!
Benim uygulama:
<?php
$students = array(1,2,3,4,5);
$split = floor(count($students)/2);
echo '<div id="parent"><div id="col-1">';
$i = 0;
foreach($students as $student)
{
echo 'Student #' . $student . '<br />';
if($i == $split)
{
echo '</div><div id="col-2">';
}
$i++;
}
echo '</div></div>';
CSS3 Webkit / Moz kullanarak tek özellikleri bence çok kötü bir uygulama vardır.
Neden sadece css, anlaşılması kolay, yani mozilla ve çalışan kullanarak, kendi basit bu kodu dont denemek ...
<style type="text/css">
.ulcol
{
float: left;
width: 400px;
margin: 0;
padding: 0;
list-style: none;
}
.licol
{
float: left;
width: 200px; /*half width of the ulcol width*/
margin: 0;
padding: 0;
}
</style>
<?php
$query = mysql_query("select * from table_name") or die("Error Occured,check again");
echo '<ul class="ulcol">';
while($row = mysql_fetch_assoc($query))
{
$vartitle = $row[db_row_title];
echo '<li class="licol">';
echo $vartitle
echo '</li>';
}
echo '</ul>';
?>
Ben yarın "echo" kaçınılması gereken bir işlev veya bir yöntem, bu hareket etmek istiyorum çünkü, "echo" herhangi bir erken kullanımını en aza indirmek için tercih. Dahası, "echo" veritabanlarına doğasında dizi yapısını kaybettim, ve sizin veri işlemek için bu yapıyı gerekir döngüde ile. Yani oldukça çıkış için çökmek sonra, bir dizi sürecini doldurmak olacaktır.
Görünüşte öğelerin listesini görüntülemek istiyorum çünkü Ve ben, öğeleri görüntülemek için tarz kurşun puan kullanmak istiyorsunuz. Sözde php kodu:
while row = fetch(sql)
lines[] = "<li>row_data</li>"
end
// work on the lines array, eg insert "</ul><ul>" in the middle
echo "<ul>".implode("\n",lines)."</ul>"
Böyle bir şey deneyin
// connection goes there
$q = "SELECT `name` FROM students";
$result = mysql_query($q);
$students = array();
while($row=mysql_fetch_assoc($result)) {
$students[] = $row['name'];
}
$students_count = sizeof($students);
// chunkes into a two parts , want more columns ? just change "2" to other number
$students_chuncked = array_chunk($students,ceil($students_count/2),true);
//now display
foreach ($students_chuncked as $student_div_data){
echo '<div>',explode($student_div_data,'<br/>'),'</div>';
}