• ベストアンサー

PHP smarty で セルの結合方法

PHP の Smarty で html_table 関数を使ってテーブルを出力しているのですが、セルの結合方法が分かりません。 td_attr 属性に colspan を設定してやる感じになると思うのですが、、 例えば、複数行2列のテーブルがあって、1行目だけ colspan=2 みたいな・・・。 「smarty セル 結合」でググってもそれらしいのがヒットしませんでした。。 宜しくお願いしますm(__)m

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • koji4964
  • ベストアンサー率100% (4/4)
回答No.1

回答になっているか自信無いのですが html_table関数を使ってセルの結合をするとかなり面倒な事をしなくてはいけなかったと思うので 僕はforeach関数やselection関数でそのようなことを行っています。 <table> <tr> <td colspan="2">タイトル</td> </tr> {foreach from=$data item=item key=key} <tr> <td>{$item}</td><td>{$data2.$key}</td> </tr> {/foreach} </table> いかがでしょうか?

参考URL:
http://www.audience.jp/2006/07/20/14/

関連するQ&A

  • 【PHP】smartyとPHPの記述違いとメリット

    smartyというのが、デザインとプログラムを分けれるというので 使ってみたのですが、 //--------------------smarty--------------------- <table border=1> <tr> <th>{$table.title}</th> </tr> {foreach item=result from=$data_list} <tr> <td>{$result[0]}</td> </tr> {/foreach} </table> と、smarty用の記述をHTML内にいろいろ書かなければならず //------------------php---------------------- <table border=1> <tr> <th><?=$table[title] ?></th> </tr> <?php foreach($data_list as $key => $value){ ?> <tr> <td><?= $value ?></td> </tr> <?php } ?> </table> とHTML内にPHPをいろいろ書くのと  あまり大差無い気がして どういう点がよいのがイマイチ分かりません。 smartyは 使う メリットは どういうものがあるのでしょうか。

    • ベストアンサー
    • PHP
  • セル結合時のcols指定について

    tableタグでcols(列数)を指定すると表示が若干早くなる、ということを聞いたので、実践してみたいのですが、不規則なセルの結合をしている場合、列数の指定は、どこに揃えれば良いのでしょうか? 例) <table cols="?">  <tr>   <td colspan="6">左</td>   <td>右</td>  </tr>  <tr>   <td colspan="3">左1/2</td>   <td colspan="3">左2/2</td>   <td>右</td>  </tr>  <tr>   <td colspan="2">左1/3</td>   <td colspan="2">左2/3</td>   <td colspan="2">左3/3</td> <td>右</td>  </tr> </table> 左の列には、上からそれぞれ1,2,3個分のセルを収め、右の列は1個のセルを収める。 例えばこんな形式の表を作ったとして、実質的な列数は上から、2,3,4つになりますが、左右をきっちり分ける為に、colsは7つ分使っています。 この場合だと、colsの合計値である「7」に合わせるのが適切なのでしょうか? それとも見た目の列数の最大値「4」に合わせるべきなのでしょうか。 表示速度の効果自体は大したものではないかもしれませんが、 ちょっと気になったので質問します。

    • ベストアンサー
    • HTML
  • colspan セルの結合について

    テーブルタグで作ったセルを結合させようとcolspan タグを使用したのですが 縦線が消えてしまいます。何故なのか調べてもわからず困っています。 ソースを載せるのでよければお知恵を貸してください。お願いします。 <html> <head></head> <body bgcolor="blue"> <table border=0 bgcolor="#ffffff cellspacing=0 cellpadding=0> <tr> <td> <table border=0 cellspacing=1 cellpadding=3> <tr bgcolor="#000000"><td colspan="9">aaa</td></tr> <tr bgcolor="#000000"><td>ccc</td>yyy</td><td>aaa</td><td>ccc</td><td>yyy</td><td>aaa</td><td>ccc</td><td>yyy</td><td>aaa</td></tr> </table> </td> </tr> </table> <table border=0 bgcolor="#ffffff" cellspacing=0 cellpadding=0> <tr> <td> <br> <table border=0 bgcolor="#ffffff" cellspacing=0 cellpadding=0> <tr> <td> <table border=0 cellspacing=1 cellpadding=3> <tr bgcolor="#000000"><td colspan="9">aaa</td></tr> <tr bgcolor="#000000"><td colspan="3">ccc</td><td colspan="3">kkk</td><td colspan="6">mmm</td></tr> </table> </td> </tr> </table> <table border=0 bgcolor="#ffffff" cellspacing=0 cellpadding=0> <tr> <td> </body> </html>

  • セルの高さを固定するには?

    2列2行のテーブルを作り、右の列をrowspan=2で結合しています。 右の列はテキストや画像を追加入力していくので、縦が長くなっていきます。 その際、左上のセルだけ高さを固定し、左下のセルは自動で高さが決まるようにしたいと思っています。 が、左上のセルにheight=150と入力しても、右が伸びるにつれて長くなってしまいます。 CSSで指定しても同じです。 rowspanを使うと、結合していないセルの高さを固定することはできないのでしょうか。 良い解決策がありましたら、お知恵をお貸し下さい。 <table> <tr> <td>ここを固定したいです</td> <td rowspan="2">ここが長くなっていきます</td> </tr> <tr> <td>ここは右が長くなるにつれて自動で伸びるようにしたいです</td> </tr> </table>

    • ベストアンサー
    • HTML
  • PHPとSmartyの関連について

    PHPとSmartyの関連について PHPからSmartyに出力しているのですが中身がNULLになります。 データベースアクセスにはPDOを使用しています。 PHPソース DBアクセス $SQL = "select ITEM_ID from ITEM_TBL limit 0, 3"; $STMT = $GLOBALS["PDO"] -> query($SQL); $ROW = $STMT -> fetchAll(PDO::FETCH_ASSOC); Smartyでアサイン $smarty -> assign("ITEM_LIST", $ROW); Smartyソース <table> {{foreach from=$ITEM_LIST item=LIST}} <tr> <td>{{$LIST.ITEM_ID}}</td> </tr> {{/foreach}} </table> のような感じでページ出力したいのですが、表示をすると中身がNULLでした。 PHP側で var_dump($ROW); を行うと array(3) { [0]=> array(1) { ["ITEM_ID"]=> string(1) "1" } [1]=> array(1) { ["ITEM_ID"]=> string(1) "2" } [2]=> array(1) { ["ITEM_ID"]=> string(1) "3" } } 中身が配列で格納されています。 smarty側で {$ITEM_LIST|@var_dump} を行うと array(3) { [0]=> NULL [1]=> NULL [2]=> NULL } でした。 いろいろとやってみたのですが、わからなくなってしまったので どなたかご教授いただけませんでしょうか。よろしくお願いします。

    • 締切済み
    • PHP
  • テーブル結合 縦横両方するには?

    テーブルの縦の結合は rowspan テーブルの横の結合は colspan これを使って表を結合しました 1つのセルに両方入れると正常な表になりません <td rowspan="3" colspan="3"> </td> というふうに書いたのですが表が新たに変なセルが増えてしまいます 解決方法わかる方おしえてください あとrowspan="3"と書いたら縦の下2つのセルのプログラム文は 消しています、これは問題あるでしょうか? colspanも同じやり方です

    • ベストアンサー
    • HTML
  • tableでcolspanを使うと次行以下のセルの幅が均等に?

    tableでcolspanを使うと、colspanで結合した行の次行以下のセルの幅が均等になってしまいます。 どうすれば、colspanで結合した行の次行以下のセルの幅が均等になるのを防げるでしょうか?IE6,IE7 意図的にスタイルシートは、使用しないでください。 例: <table width="300" border="1" cellspacing="1" cellpadding="5"> <tr> <td colspan="2" width="284" align="center"> タイトルセル </td> </tr> <tr align="left" valign="top"> <td width="100"> セル左 <td> <td width="171"> セル右 <td> </tr> <table> 上記の場合、本来ならば、左のセルの幅(100px)が右のセルの幅(171px)より狭いはずなのに、左のセルの幅と右のセルの幅が均等になっていしまいます。 下記コード部分を上記のコードから削除すると、本来の比率で左のセルと右のセルの幅が表示されます。 <tr> <td colspan="2" width="284" align="center"> タイトルセル </td> </tr> よろしくお願いします。

    • ベストアンサー
    • HTML
  • 罫表のセル結合

    AJAXの勉強をしています。 Htmlに表示されている罫表の選んだセルをセル結合するような処理を 作りたいのですが、可能でしょうか。 DOMを使用してセルの削除等は出来たのですが、セル結合を行う事が出来ないのです。 function joinSpan( ) { // 出力先のトップ要素となるtable要素 var table = document.getElementById("result"); //とりあえずセル削除してみる。 var child = table.childNodes; var child2 = child[0].childNodes;  child[0].removeChild(child2[1]); } ↓対象となるテーブル <table id="result"> <thead><tr><th>1</th><th>2</th><th>3</th><th>4</th></tr></thead> <tbody > <tr><td>あ</td><td>う</td><td>え</td><td>お</td></tr> <tr><td>お</td><td>か</td><td>き</td><td>く</td></tr> <tr><td>け</td><td>こ</td><td>さ</td><td>し</td></tr> <tr><td>す</td><td>せ</td><td>そ</td><td>な</td></tr> </tbody> </table> 何か良い方法がありましたら、教えて頂ければと思います。

  • HTMLのrowspan

    HTML初心者です。 下記のようにテーブルを作成していますが、 2行目がなかったことにされてしまいます。 <table> <tr><td rowspan=2>1-1</td><td rowspan=2>1-2</td></tr> <tr></tr> <tr><td>3-1</td><td>3-2</td></tr> </table> 結合されたセルを2行分の高さで表示することはできますか? ただ、実際のHTMLはPHPで動的に作成しているので、 できれば「height属性で1行目の高さを2行分にする」以外の 方法を探しています。 以上、よろしくお願いします。

  • PHP(smarty)での切り捨て計算について

    PHP(smarty)での消費税端数計算で、切り捨て計算方法について教えて下さい。 プログラムをある会社に依頼し、納品を頂いたのですが、PHPのsmartyを使用したテンプレートファイルで表示デザインなどの変更ができるとのことで、にわかプログラマの私が修正を加えようとしているのですが、消費税の切り捨て処理を行いたいのですが、エラーが出てしまいます。計算としては17750円を単に*0.05するとの消費税は887.5円となるので、それを887円となるように切り捨てたいのです。floorを使い、下記プログラムの {$customer_margin_all*0.05} の部分をfloor.({$customer_margin_all*0.05})などとしてみましたが、ブラウザで表示してみるとsmartyのエラーが表示されてしまいます。 私の根本的な勘違いなのか、どのようなことで切り捨て計算ができないのかわからずに困っています。 お分かりの方、お知恵をお借りできますでしょうか? 上代-マージン=請求額 20000円-2250円=17750円 請求額小計: 17750円 消費税: 887.5円 合計: 18637.5円 <table border="0" bgcolor="#cccccc" cellspacing="1" cellpadding=5> <tr> <td><b>上代</b></td> <td><b>マージン</b></td> <td><b>請求額</b></td> </tr> {foreach from=$arr_list item="item"} <tr> <td>{$item.joudai}円</td> <td>{$item.customer_margin}円</td> <td>{$item.joudai-$item.customer_margin}円</td> </tr> {assign var='customer_margin_all' value=$customer_margin_all+$item.joudai-$item.customer_margin} {/foreach} <tr> <td COLSPAN="2">小計</td> <td >{$customer_margin_all}円</td> </tr> <tr> <td COLSPAN="2">消費税</td> <td >{$customer_margin_all*0.05}円</td> </tr> <tr> <td COLSPAN="2">合計</td> <td >{$customer_margin_all*1.05}円</td> </tr> </table>

    • ベストアンサー
    • PHP

専門家に質問してみよう