PHP VLookup (условное совпадение) Альтернатива? - PullRequest
1 голос
/ 20 июля 2009

Как мне вернуть результаты для столбца provision_id, чтобы они были условны для contract.id для каждой строки? Прямо сейчас я получаю одинаковый результат в каждом ряду. Желаемый эффект подобен VLookup в Excel. Не знаю, как использовать значения if / sql для достижения этого в PHP, хотя.

Соответствующий код:

<?php
global $wpdb;
$contents = $wpdb->get_results( $wpdb->prepare("SELECT id, name, remaining, contract_value FROM salaries"));
$contracts = $wpdb->get_results( $wpdb->prepare("SELECT contracts.id,source,provision,provision_id FROM contracts LEFT JOIN salaries ON contracts.id = salaries.id"));

 ?>

   [table header stuff...]

foreach ($contents as $content) {
    ?>   
         <tr>
                <td><?php echo $content->name ?></td>
                <td><?php echo $content->remaining ?></td>
                <td><?php echo $content->contract_value ?></td>
                <td><?php foreach ($contracts as $contract) { echo $contract->provision_id }; ?> 
               </td>

Токовый выход

Name               Remaining         Contract_Value    Provision_ID
--------------     ---------------   --------------    --------------
Adam               100               300               A1 B1 C1
Bill               200               400               A1 B1 C1
Chad               200               400               A1 B1 C1

Желаемый выход

Name               Remaining         Contract_Value    Provision_ID
--------------     ---------------   --------------    --------------
Adam               100               300               A1
Bill               200               400               B1
Chad               200               400               C1

где A1, B1, C1 каждый представляет ячейку сохраненных данных, которая соответствует имени человека в колонке 1. Я пытаюсь сделать условное_доставление условным, основываясь на идентификаторах Адама, Билла и Чада, а не на именах, хотя я не хочу, чтобы этот идентификатор отображался в выводе php.

В сущности, я хочу, чтобы PHP "искал" идентификатор (он же id члена) и напечатал соответствующий provision_id. Объединение таблиц, вероятно, не будет работать в этом случае, так как я также вытаскиваю «всплывающие подсказки» из таблицы как эффект наведения мыши на A1, B1, C1 и т. Д.

ПРИЛОЖЕНИЕ 1 - иначе то, что также происходило. Я не смог объяснить (пытаясь сделать это проще), что у Адама Билла и Чада более одного идентификатора. У Адама есть идентификаторы положения: A1, A2 и A3, например. Я пытаюсь избежать проблемы (GROUP_CONCAT может работать, но я не думаю, что это работает, потому что у меня есть всплывающая подсказка для каждого положения) ниже.

Name               Remaining         Contract_Value    Provision_ID
--------------     ---------------   --------------    --------------
Adam               100               300               A1
Adam               100               300               A2
Adam               100               300               A3
Bill               200               400               B1
Bill               200               400               B2
Chad               200               400               C1

Ответы [ 2 ]

1 голос
/ 20 июля 2009

Попробуйте следующий запрос. Затем вы можете сделать все это одним запросом к базе данных.

SELECT salaries.id AS salaries_id, salaries.name, salaries.remaining, 
salaries.contract_value, contracts.provision_id AS provision_id 
FROM salaries LEFT JOIN contracts ON contracts.id=salaries.id
0 голосов
/ 21 июля 2009

Нужно было обратиться за профессиональной помощью, потому что я все еще самоучка. Он использовал технику, называемую условным сокращением, которая делала так, чтобы запрос $ contract работал только для строк, в которых 'id' совпал между двумя таблицами.

Фрагмент кода победы:

     foreach ($contracts as $contract)
                    {
                        echo ( $content->id == $contract->id ) ?
                             '<a href="' . $contract->source . '" tooltip="' . $contract->provision . '">' . $contract->provision_id . " " . '</a>' : '';
                     } 
                   ?>
                </td>

<?php };

Он прислал мне эту ссылку: http://www.bradino.com/php/ternary-operator-conditional/ Вы можете найти его в http://travisballard.com/.

Ура!

...