2017-08-14 21 views
0

以下、私はMySQLのデータを表示するテーブルをデータベースに用意しています。 簡略化メッセージ& engmessage)。whileループ内の列の値をすべて取得し、それらの値を配列に入れる方法

各個人がview pageで、彼らの言語を選ぶことができ、msg columnがあります、それは

閉じるこの

People  Language  Msg 
A   繁體   物理治療 
B   Eng   Physiotherapy 

<table> 

    <?php 
$result = mysql_query("SELECT * 
FROM treatmentdetail WHERE 
language ='繁體' OR language ='ENG' OR language ='简体'");?> 
<?php 

    $specific = []; 

    while($row = mysql_fetch_array($result ,MYSQL_ASSOC)) {?> 

    <tr> 

    <td><input class="form-control" type="text" size="1" name="people[]" 
    value="<?php echo $row['people'] ?>"></td> 
    <td><input class="form-control" type="text" size="1" name="language[]" 
    value="<?php echo $row['language'] ?>"></td> 


    <td width="200px"><input class="form-control" type="text" size="1" 
    name="msg[]" value=" 
    <?php if($row['language'] == '繁體') 
    { 
    echo $row['traditionalmessage'];} 

    else if($row['language'] == 'ENG') 
    { 
    echo $row['engmessage'];} 

    if($row['language'] == '简体') 
    { 
    echo $row['simplifiedmessage'];} ?>"> 
    </td> 
と同様に自分の優先言語

を持つ人々のMSGが表示されますテーブル

<?php 
echo "</tr>"; 
echo "</table>";echo "</form>";?> 

は今、私はget all the values of the msg columnたいと配列に入れ

 <?php $specific = [ 
         "message" => $row["engmessage"] 
        ];?> 
ここ

私はハードすべてのメッセージの値を取得するためにコード化された特定の$と呼ばれると思います。しかし、伝統的なメッセージがあるように&メッセージも簡略化されています。だから動的でなければならない。

それでは、どのように私は、複数のデータベース列から

i.e. traditionalmessage/ 
simplifiedmessage /engmessage) 

を取得した値を持っており、

uは何を私理解してほしい配列にそれらの値を出してもよいMSG列(のすべての値を取得することができます意味。

感謝します。

+0

ちなみに、通常はlanguage_idのようなものを保存し、フォーム内の非表示のIDに基づいて言語を選択します。 – Strawberry

+0

今、私はページ内の個々の言語の選択に従ってmsgを表示できますが、whileループ内のmsgカラムからそれらの値を取得して配列に入れる方法はわかりません – Codezzz

+1

残念ながら私はこの古代、安全でなく、廃止予定のAPI。 – Strawberry

答えて

0

if else文を使用して私の望む結果を得ることができます。私は確かにそこに良い答えがあることを認識しています。あなたは1つ持っている場合、共有してください。道に沿って手伝ってくれた人たちにもう一度感謝します。

if($row['language'] == '繁體') 
{ 
    $specific[] = [ 
       "message" => $row["traditionalmessage"] 

];} 

    else if($row['language'] == '简体') 
{ 
    $specific[] = [ 
       "message" => $row["simplifiedmessage"]   

];} 

    else if($row['language'] == 'ENG') 
    { 
    $specific[] = [ 
       "message" => $row["engmessage"] 

];} 
1

私はあなたがそれらによってメッセージループですべての列を抽出する必要があります理解している。あなたがアルを知って何が問題?列名を動的に決定する必要がありますか?前に知っていれば、配列$rowをループし、必要な値を配列に抽出することができます。尊敬部材イチゴとして

foreach ($row as $key) { 
     //ignore columns with no 'message' in title 
     if (FALSE === strpos($key, 'message')) continue; 

     // do with $row[$key] what you want 
    } 

あなたがDBの代わりに、非推奨と廃止MySQL拡張で動作するようにmysqliの(MySQLが改善またはPDO、またはmysqlnd)拡張 を使用する必要があると述べました。あなたがそれぞれの新しい言語のための新しい列を追加する必要がある場合

一般的なアドバイス あなたのテーブル構造が間違っています。あなたはテーブル構造を考え直す必要があります。 Googleの 'db normalization'について

+0

アドバイスありがとうございました – Codezzz

関連する問題