2010-12-20 27 views
0

私はテーブルからすべてのコンテンツを表示するdrupalのテーブルを持っています。私は各レコードに編集リンクを追加しました。このリンクは、レコードに対応する値が入力された入力フォームにユーザーを移動させる必要があります。これで、フォームに最後の行を入力するだけです。編集リンク付きdrupalテーブル

行xについては、レコードxの値が入力されたフォームが必要です。

テーブルはあなたが前に、あなたのwhileループを表示さ$rows = array();持ってしたいと思う

function _MYMODULE_sql_to_table($sql) { 

    $html = ""; 

    // execute sql 
    $resource = db_query($sql); 

    // fetch database results in an array 
    $results = array(); 
    while ($row = db_fetch_array($resource)) { 
     $results[] = $row; 
     $email = $row['p1']; 
     $comment = $row['p2']; 
    } 


    // ensure results exist 
    if (!count($results)) { 
    $html .= "Sorry, no results could be found."; 
    return $html;  
    } 

    // create an array to contain all table rows 
    $rows = array(); 
    // get a list of column headers 
    $columnNames = array_keys($results[0]); 

    // loop through results and create table rows 
    foreach ($results as $key => $data) { 

     // create row data 
     $row = array(

    'edit' => l(t('Edit'),"admin/content/test/$p1/$p2/Table1",  $options=array()),); 

     // loop through column names 
     foreach ($columnNames as $c) { 
     $row[] = array(
     'data' => $data[$c], 
     'class' => strtolower(str_replace(' ', '-', $c)), 
     ); 
     } 

     // add row to rows array 
     $rows[] = $row; 

    } 

    // loop through column names and create headers 
    $header = array(); 
    foreach ($columnNames as $c) { 
    $header[] = array(
     'data' => $c, 
     'class' => strtolower(str_replace(' ', '-', $c)), 
    ); 
    } 

    // generate table html 
    $html .= theme('table', $header, $rows); 

    return $html; 

    } 

    // then you can call it in your code... 
    function _MYMODULE_some_page_callback() { 

    $html = ""; 

    $sql = "select * from {contactus}"; 

    $html .= _MYMODULE_sql_to_table($sql); 

    return $html; 
    } 
    function display(){ 
    $results = array(); 
$html = ""; 
    $resource = db_query("select * from contactus"); 
$output = ''; 
while($row = db_fetch_array($resource)){ 
    $results[] = $row; 
} 
if(!count($results)){ 
    $html.= "Unable to display table"; 
    return $html; 
      } 
    $rows = array(); 
    $columnNames = array_keys($results[0]); 

     foreach($results as $key=>$data){ 
     $row = array(); 
     foreach($columnNames as $c){ 
     $row = array(
     'data' => $data[$c], 
      'class' => strtolower(str_replace(' ', '-', $c)), 
    ); 
    } 
    $rows[] = $row; 
} 
$header = array(); 
foreach($columnNames as $c){ 
$header[] = array(
     'data' => $c, 
     'class' => strtolower(str_replace(' ', '-', $c)), 
    ); 
} 

$html .= theme('table', $header, $rows); 

    return $html; 
} 
+0

あなたの質問は正確ですか?また、Drupalにデータを格納する必要がある場合は、ノードシステムまたはデータモジュール(http://drupal.org/project/data)を使用してください。 – marcvangend

+0

node_save()を使って$ nodeシステムを使ってデータを正常に保存できます。しかし、この場合、私は$ nodeを使用していません。カスタムテーブルにレコードを作成するフォームです。私はフォームを作成するだけです。 drupal(i)drupal_execute(ii)form_set_valueには、これを可能にする2つのメソッドがあります。私はどちらかを使用するとエラーが発生しています。したがって、実用的な例が役に立つでしょう。申し訳ありませんが、それはこの質問の範囲外です。しかし、それが私の主な問題です。このテーブルの編集リンクを作成してフォームにリダイレクトすることができました。 THANKS – user550265

答えて

1

として作成されます。あなたがしているのは、本質的に配列を破壊し、それを各パスで空の配列として再宣言することです。これが最後の行だけがあなたのために現れる理由です。

関連する問題