2012-01-20 12 views
0

ニュースファクト(NIEUWSBERICHT)、写真(IMAGE)、広告(RECLAME)のあるHTMLテーブルを持つページがあります。このページでは、ユーザーはこれらのアイテムにページ番号を追加してこれらのアイテムを整理できます。 pagenumbersをdbに保存した後、ページ番号の項目は、最終的な目標であるcablenewspaperのエディション(またはそれを英語で呼び出すもの)でブロードキャストされます。 HTMLテーブルには、クエリに必要な外部キーも表示されます。動的HTMLテーブルからデータを収集する方法

enter image description here

私の問題されています:

でHTMLテーブルのイメージがありますどのように私は、フォームを送信した後、上記のHTMLテーブルからデータを収集することができますか?

は、私のようなクエリの2種類を取得したい(例えば、キーは上の写真に対応):

UPDATE NIEUWSBERICHT SET pagenumber = 2 WHERE nieuwsbericht_id = 53 
UPDATE NIEUWSBERICHT SET pagenumber = 3 WHERE nieuwsbericht_id = 56 
UPDATE NIEUWSBERICHT SET pagenumber = 6 WHERE nieuwsbericht_id = 62 

UPDATE IMAGE SET pagenumber = 7 WHERE image_id = 19 

はそれが難しい私のためになる何ということであるHTMLテーブルは動的にビルドされ(PHPで)、行数は可変です。以下のリストを参照してください。どうにかして、テーブルの動的ビルドをやめ、 "$ cell"の代わりにすべての変数を格納する配列を使い始める方がいいと思います。または、私は何とか画面のPageNoアイテムを取得することができます。たとえば、最初の行のPageNoが値20と8を取得したように、複数の値を取得できます。 Aahhhrrg、私はちょうどもうこれ以上続ける方法を知らない。誰でもどうぞ?

// Get column names // 
$fields_num = mysql_num_fields($result); 
echo "<h1>Create edition {$table}</h1>"; 
echo "<table border='1'><tr>"; 
for($i=0; $i<$fields_num; $i++) 
    { 
    $field = mysql_fetch_field($result); 
    echo "<td>{$field->name}</td>"; 
    } 
echo "<td>PageNo</td>"; 
echo "</tr>\n"; 

// Show query result // 
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
echo "<tr>"; 
foreach($row as $cell) 
    echo "<td>$cell</td>"; 
echo "<td> <select name='paginanummer'> 
    <option></option> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
    <option>4</option> 
    <option>5</option> 
    <option>6</option> 
    <option>7</option> 
    <option>8</option> 
    <option>9</option> 
    <option>10</option> 
    </select></td>"; 
    echo "</tr>\n"; 
    } 

うわー、それはかなり物語になっています。私は大丈夫だと思っています。フォームを送信する場合よりも、DB

上のID 12を有する行の

<select name="position_12"> 

、 :

+0

テーブルのHTMLバージョンを使用すると、正確なコードソリューションが得られます。人々が "ライブ"コード(対画像)を埋め込む1つの方法は、jsfiddle.netのようなサービスを使うことです。それをチェックしてください - かなりクールなもの。また、質問:jQueryを使用できますか?これは純粋なJSですか? – buley

+0

PHPで処理するシンプルなフォームか、AJAXコールであるべきかどうかは、私には分かりません。 –

+0

@RickKuipers良い点。 JiM_i、PHPの '$ _POST'オブジェクト経由でフォームの結果を読んだり、ブラウザの値を解析しようとしていますか? – buley

答えて

0

select要素は、それが例えば 表す行のIDと名前を与えますデータをループして「position_」で始まるパラメータを検索します。

foreach($_POST as $key=>$value){ 
    if(preg_match("^position\_(\d+)$",$key,$matches) && is_numeric($value)){ 
    $row_id = $matches[1]; 
     echo "insert {$value} into row number {$row_id}"; 
    } 
} 

echo行あなたは$row_id$valueヴァルスを持っており、あなたのクエリを構築するために使用することができます

+0

ありがとうYaron!私はこの問題に取り組むつもりです。私は結果があるときに私は戻ってきます! –

+0

もう一度Yaron、ありがとうございました!私は選択した名前についてあなたの最初のヒントを使用しました。私は新しい回答に私のコードを載せるべきだと思います。 –

+0

ここに喜んで:) –

0

ビンゴ、それは動作します!

ここでは、HTMLテーブルの列「PageNo」を設定するコードを示します。あなたが見ることができるように、私は選択した一意の名前を与えました(Yaron ;-)のおかげで)、私は必要なキーを文字列のようなselectの値に入れました。

echo "<td> <select name='position_".$rowcounter."'> 
    <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 0'></option> 
    <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 1'>1</option> 
    <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 2'>2</option> 
    <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 3'>3</option> 
    <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 4'>4</option> 
    <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 5'>5</option> 
    <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 6'>6</option> 
    <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 7'>7</option> 
    <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 8'>8</option> 
    <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 9'>9</option> 
    <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 10'>10</option> 
    </select></td>"; 

次に、提出後、10個の値が$ kvというarrrayに格納されます。これは次のようになります:

次に、splitdataを使用して値(文字列)を分割して別の変数に分割するために配列をループします。それは私が欲しかったものです!これは次のようになります。

$maxcount = count($kv) - 1; 
for ($teller = 0; $teller <= $maxcount; $teller++) { 
$data = $kv[$teller]; 
$splitdata = explode(',', $data); 
$type = $splitdata[0]; 
$nieuwsbericht_id = $splitdata[1]; 
$reclame_id = $splitdata[2]; 
$image_id = $splitdata[3]; 
$paginanummer = $splitdata[4]; 

etc.... (now I can create the sql queries I need to update the database tables) 
関連する問題