2 sütun dinamik içerik (yerine biri!)

4 Cevap php

Ben 1 sütunda Dinamik İçerik itibaren verileri görüntüleyen bir tablo var. Ben hücre sayısı> 3 olduğunda içerik ikinci sütuna taşımak istiyorum. Görüntülemek için 3 hücreleri varsa (yani, o 1 col ekran olacak ve 2 sütunlarda görüntülenir olacağını 4 hücreleri veya daha fazla. Dinamik içerik 6 hücreleri üzerinde asla unutmayın.

Ancak ben tek yolu olabilir fark yok ... Ben css ve html ile yolumu bulabilirim söylemek zorunda ama javascript başka bir konudur.

Benim sonuç almak için uygun herhangi bir Javascript, jQuery komut?

Veri yüzden gibi görüntülenecek:

| Col1  |          | Col1  || Col2  |
---------          -----------------
| Data1 |   ---->  | Data1 || Data4 |
| Data2 |          | Data2 | etc...
| Data3 |          | Data3 |

Bu yardım ederim ama eğer emin dinamik içerik için çağrı (ve masaya koyarak) Kod değildir:

<table id="myTable">
                  <?php
     $str1="";
     $flag1=1;
     while($rowReview1=mysql_fetch_array($resultReview1)){
      $st1="";
      $val=$rowReview1["ratingValue"];
      $sName=$rowReview1["criteriaName"];

      if($val>0){

       for($ii=1;$ii<=$val;$ii++){
        $st1.="<img src=\"$directory/images/orange.gif\" \>";
       }

       for($jj=$val;$jj<5;$jj++){
        $st1.="<img src=\"$directory/images/gray.gif\" \>";
       }
      }else{
       $st1="";
      }

      if($val > 0){
       $str1.="<tr><td>$sName</td><td>$st1</td></tr>";
      }else{
       $str1.="<tr><td>$sName</td><td>N/A</td></tr>";
      }
     }
     echo $str1;
    ?>
                </table>

The page can now be seen live here: http://www.top10banques.com/avis/index2.php?item_id=1 The tables I'm trying to edit are the ones below the page break "l'evaluation des clients".

Tekrar teşekkürler herhangi birini verebilir yardım ve tüm Happy Holidays için!

4 Cevap

Ne olursa olsun orada kaç birinci, ben bir sütuna tüm verilerinizi vereceğini, standart tablo yapısını kullanıyorsanız varsayarsak. Sonra bunları dinamik hareket olur:

EDIT Here's a working sample of what you're trying to do. The problem was you have TWO div cells per row, I thought you only had one:

<html>
<head>
   <script type="text/javascript"
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
   </script>
</head>
<body>
    <script type="text/javascript">
      $(function(){
 var allRows = $('#myTable tr');
if(allRows.length > 3) {
   var extraData = $('#myTable tr:gt(2) td')
   var j = 0;       
   for (i=0;i<extraData.length/2;i++) { 
       $(allRows[i]).append(extraData[j])
       $(allRows[i]).append(extraData[j+1])
       j=j+2;
   }
   $('#myTable tr:gt(2)').remove();
}
});
</script>

<table id="myTable">
<tr><td>Data1</td><td>Data11</td></tr>
<tr><td>Data2</td><td>Data21</td></tr>
<tr><td>Data3</td><td>Data31</td></tr>
<tr><td>Data4</td><td>Data41</td></tr>
<tr><td>Data5</td><td>Data51</td></tr>
<tr><td>Data6</td><td>Data61</td></tr>
</table>

</body>
</html>

NOTE the above solution will only work to your exact specifications. If you want this to be reusable (ie, takes any number of rows with any number of cells), you may have to do some additional tweaking.


WORKING UPDATE FOR MULTIPLE TABLES

Ben burada yayınlanan kodunu görmek Pastie üzerinde: http://pastie.org/755963

Tabloları şimdi classes yerine başvurulan unutmayın ids. Ayrıca, ben OP sordu bu çözüm could (ve belki de olmalı) sunucu tarafı ele, ben sadece soruyu yanıtlarken kabul söylemek istiyorum ...

Herhalde yerine ilk at TÜM DOM içine enjekte PHP bu veri ile bir JSON nesnesi oluşturmak olacaktır. Bu şekilde, DOM, onun sadece sıfırdan konumlandırma javascript yeniden mevcut verilerin yükü yoktur.

Ben bu CSS kullanarak basit olurdu (ama hiçbir CSS uzman değilim) sanırdım.

Böyle bir şey PHP daha genel bir durum ile ilgilidir:

   function multi_columns($inp_array)
   {
	$max_cols=4;
	$target_rows=3;

	if (count($dyn)>$max_cols*$target_rows) {
	  // won't fit in this number of cols/rows
	  // add more rows
	  $rows=count($dyn)/$max_cols;
	  $target_rows= ($rows==(integer)$rows) ? $rows : $rows+1;
	} elseif (count($dyn)>$max_cols*$target_rows) {
	  // reduce to number of cols needed
	  $cols=count($dyn)/$target_rows;
	  $max_cols= ($cols==(integer)$cols) ? $cols : $max_cols;
	}

	print "<table>\n";
	for ($y=1; $y<=$target_rows; $y++) {
	   print "<tr>\n";
	   for ($x=1; $x<=$max_cols; $x++) {
	        print "<td>";
	        if (array_key_exists($y+$x*$target_rows, $inp_array)) {
			   print $inp_array[$y+$x*$target_rows];
			}
			print "</td>";
	   }
	   print "</tr>\n";
	}
	print "</table>\n";
   }

Bu sorun, sunucuda çözüldü ve bir JavaScript komut dosyası ortadan kaldırarak sayfa performansını artırmak için yalvarır.

İkincisi, bir tablo kullanarak değil, div ait değil tarafından hayatınızı kolaylaştırabilirsiniz.

Bize önerilen bir veri yapısına şöyle bir göz atalım. PHP kullanarak bu yana Biz dizideki tüm çıktıyı yapacak.

$data=array[0...n];

Bu sadece iş mantığı nesil sıralar.

Şimdi bize ilk görsel önerilen divs, sunum mantığı bakalım!

$ Data_length = m

    j=0   j=1   j=2   j=3   .....   j= x

i=0 [1]    [4]    [7]    [10]       []

i=1 [2]    [5]    [8]    [11]       []

i=2 [3]    [6]    [9]    [12]       []

 y   []     []    []     []         []

All divs will be floated left. A clearing div will be printed once the row is completed.

Şimdi pozisyonuna karşı bizim veri ilişkileri tanımlamak gerekir. Tablonun gözlem biraz, tüm yatay konumsal değerleri biri (! Yani biz üç adımlarla bizim dizi $ veriler üzerinde yinelemek gerekiyor), aşağıdaki gibi etkin bir divs yüzen 3 ve bütün dikey ayrılmış olduğunu göstermektedir:

j=0   j=1   j=2   j=3   .....   j= x

i=0 [1]    [4]    [7]    [10]   []

Sözde algoritması

 $imax=2;                     // spec
 $number_cells = m/imax       // total number of cells
 $jmax=$number_cells/3        // check rounding etc left out at this stage
                              // you can use mod % to see if there are 
                              // remainders etc.. on second script iteration

Ve şimdi yineleme için

 for ($i=0;$i<$imax-1;$i++){
     for ($j=0;$j<$jmax;$j++){
        $out.=wrap_in_div($data[($j*3)+(i+1)]);
     }
 }

Ben önemsiz gibi işlev wrap_in_div düzenlemek tanımlamak için rahatsız değil unutmayın.

Bu Merry Christmas yardımcı olur umarım! Program kadar gerçek $ içine pseudo-kod çevirmek lütfen başımı oldu! :)