0

これを達成するための最良の方法を知りたかったのです。注文のリストを表示するテーブルに埋め込まれたフォームがあります。3 つの項目を含むドロップダウン リストがあります。「保留中」「承認済み」および「不承認」ユーザーがオプションの 1 つを選択し、更新をクリックすると、その個々の行のステータスが変更されます。私が望むのは、選択したアイテムに応じてテーブル行全体の色が変わることです。

これは、私が働かなければならないjQueryを使用して達成できることを知っていますが、オプション値に応じてクラスが適用されるようにする必要があります。私はphpを使ってこれを行うことができますか?オプション値のサーバー側にクラスを適用して、ユーザーがページを更新したときに個々の表のセルが強調表示されたままになるようにしますか?

echo '<tr>';
    echo '<td><input type="text" readonly=true name="order_no['.$i.']" value="' . $row['Orderno'] . '"/></td>';
    echo '<td><input type="text" readonly=true name="order_date['.$i.']" value="' . $row['Orderdate'] . '"/></td>';
    echo '<td><input type="text" readonly=true name="order_ordered_by['.$i.']" value="' . $row['Orderedby'] . '"/></td>';
    echo '<td><input type="text" readonly=true name="order_supplier['.$i.']" value="' . $row['Supplier'] . '"/></td>';
    echo '<td><input type="text" readonly=true name="order_total_price['.$i.']" value="' . $row['totalprice'] . '"/></td>';
    echo '<td><input type="text" readonly=true name="order_requested_by['.$i.']" value="' . $row['requestedby'] . '"/></td>';
    echo '<td>';
    echo '<select name="order_status['.$i.']" id="id" onchange="showUser(this.value)" >';
    echo '<option value = "Pending"   name="order_status['.$i.']" class = "pending"' . ($row['status'] == 'Pending' ? ' selected=selected' : '') . '>Pending</option>';
    echo '<option value = "Approved"  name="order_status['.$i.']" class = "approved"' . ($row['status'] == 'Approved' ? ' selected=selected' : '') . '>Approved</option>';
    echo '<option value = "Disapproved" name="order_status['.$i.']" class ="disapproved"' . ($row['status'] == 'Disapproved' ? ' selected=selected' : '') . '>Disapproved</option>';
    echo '</select>';
    echo '<td><input type="checkbox" name="order_selected['.$i.']"/></td>';
    echo '</td>';
    echo '</tr>';
4

3 に答える 3

3

ステータスをクラス名として使用できます。

<?php echo '<tr class="' . $status . '"><td>...</td></tr>'; ?>

$status送信された選択ボックスの値はどこにありますか。

編集:

準備のために、コードを更新しました:

<tr class="<?php echo $status; ?>">
    <td>
        <input type="text" readonly=true name="order_no[<?php echo $i; ?>]" value="<?php echo $row['Orderno']; ?>"/>
    </td>
    <td>
        <input type="text" readonly=true name="order_date[<?php echo $i; ?>]" value="<?php echo $row['Orderdate']; ?>"/>
    </td>
    <td>
        <input type="text" readonly=true name="order_ordered_by[<?php echo $i; ?>]" value="<?php echo $row['Orderedby']; ?>"/>
    </td>
    <td>
        <input type="text" readonly=true name="order_supplier[<?php echo $i; ?>]" value="<?php echo $row['Supplier']; ?>"/>
    </td>
    <td>
        <input type="text" readonly=true name="order_total_price[<?php echo $i; ?>]" value="<?php echo $row['totalprice']; ?>"/>
    </td>
    <td>
        <input type="text" readonly=true name="order_requested_by[<?php echo $i; ?>]" value="' . $row['requestedby'] . '"/>
    </td>
    <td>
        <select name="order_status[<?php echo $i; ?>]" id="id" onchange="showUser(this.value)" >
            <option value = "Pending"   name="order_status[<?php echo $i; ?>]" class = "pending"'<?php echo $row['status'] == 'Pending' ? ' selected=selected' : ''; ?>>Pending</option>
            <option value = "Approved"  name="order_status[<?php echo $i; ?>]" class = "approved"'<?php echo $row['status'] == 'Approved' ? ' selected=selected' : ''; ?>>Approved</option>
            <option value = "Disapproved" name="order_status[<?php echo $i; ?>]" class ="disapproved"'<?php echo $row['status'] == 'Disapproved' ? ' selected=selected' : ''; ?>>Disapproved</option>
        </select>
    </td>
    <td>
        <input type="checkbox" name="order_selected[<?php echo $i; ?>]"/>
    </td>
</tr>

選択値とテーブル行に異なるクラスを使用することを検討する必要があります。

考えられる CSS マークアップは次のとおりです。

table tr.Pending
{
    background-color: #FF0000;
} 
...

EDIT 2:ページをレンダリングする方法になる可能性のあるコードを少し追加しました:

<?php for($i = 0; $i < count($_POST["order_no"]); $i++) :?>    
    <tr class="<?php echo $_POST["order_status"][$i]; ?>">
        <td>
            <input type="text" readonly=true name="order_no[<?php echo $i; ?>]" value="<?php echo $row['Orderno']; ?>"/>
        </td>
        <td>
            <input type="text" readonly=true name="order_date[<?php echo $i; ?>]" value="<?php echo $row['Orderdate']; ?>"/>
        </td>
        <td>
            <input type="text" readonly=true name="order_ordered_by[<?php echo $i; ?>]" value="<?php echo $row['Orderedby']; ?>"/>
        </td>
        <td>
            <input type="text" readonly=true name="order_supplier[<?php echo $i; ?>]" value="<?php echo $row['Supplier']; ?>"/>
        </td>
        <td>
            <input type="text" readonly=true name="order_total_price[<?php echo $i; ?>]" value="<?php echo $row['totalprice']; ?>"/>
        </td>
        <td>
            <input type="text" readonly=true name="order_requested_by[<?php echo $i; ?>]" value="' . $row['requestedby'] . '"/>
        </td>
        <td>
            <select name="order_status[<?php echo $i; ?>]" id="id" onchange="showUser(this.value)" >
                <option value = "Pending"   name="order_status[<?php echo $i; ?>]" class = "pending"'<?php echo $row['status'] == 'Pending' ? ' selected=selected' : ''; ?>>Pending</option>
                <option value = "Approved"  name="order_status[<?php echo $i; ?>]" class = "approved"'<?php echo $row['status'] == 'Approved' ? ' selected=selected' : ''; ?>>Approved</option>
                <option value = "Disapproved" name="order_status[<?php echo $i; ?>]" class ="disapproved"'<?php echo $row['status'] == 'Disapproved' ? ' selected=selected' : ''; ?>>Disapproved</option>
            </select>
        </td>
        <td>
            <input type="checkbox" name="order_selected[<?php echo $i; ?>]"/>
        </td>
    </tr>
<?php endforeach; ?>

ただし、クライアントから受け取ったデータの表示には注意してください。常に最初に確認する必要があります。

于 2012-09-24T08:39:10.067 に答える
0

PHPのセッションを使用して、適用されているクラスを保持し、セッション値を読み取るためにもチェックを入れることができるため、ページが更新されるたびに、値が返されます。

于 2012-09-24T08:32:40.683 に答える
0

セッションを使用するよりもjqueryが最善の方法だと思います.追加できますid(これはデータベースから取得した一意のIDを使用できるため、一意である必要があります)、このようにjqueryを使用してクラスをclass更新<tr>します<tr>$("#tr_id").addClass("class_name");

于 2012-09-24T08:56:19.683 に答える