PHP эквивалентен Excel INDEX MATCH при разборе CSV - PullRequest
0 голосов
/ 10 июня 2019

Я работаю над быстрым проектом, где я создаю php-страницу, доступ к которой можно получить из любого браузера. Я знаю только основы PHP-функций, поэтому мне нужна помощь.

То, что я пытаюсь увидеть, могу ли я создать файл, в котором мои коллеги могут ввести код продукта, и в форме появится соответствующая информация о продукте. Сложность состоит в том, что информация будет обрабатываться в Excel, но загружаться на сервер как CSV, когда информация нуждается в обновлении.

Я в основном ищу кусок кода, который делает следующее:

  1. Веб-страница получает код продукта, используя POST
  2. PHP анализирует первый столбец электронной таблицы и ищет код продукта
  3. Найдя код продукта, он возвращает номер строки
  4. PHP затем анализирует строку как массив
  5. Затем я распечатываю массив на веб-странице по мере необходимости.

Функция POST все работает нормально, но при разборе лучшее, что я получил до сих пор, это:

<?php
if ( $code == "") { $codechk = $blank; } else { $codechk = $code; }
$ch = fopen("https://focus-8.com/sites/ds/prodinfo.csv", "r");
$header_row = fgetcsv($ch);

/* This will loop through all the rows until it reaches the end */
while($row = fgetcsv($ch)) { if (in_array($codechk, $row)) { echo '<div>' . implode(' | ', $row) . ' </div>'; } } ;

$ код - код товара из формы

$ blank - это заполнитель, который выдает сообщение об ошибке, если код не существует.

Когда я ввожу код продукта в форму, это правильно печатает правую строку. Однако мои знания недостаточно развиты, чтобы понять, как вывести это в массив, а не распечатать все сразу.

Как только я получу его в массиве, я напечатаю его в виде таблицы:

<table>
    <tr>
      <td>Product Code </th>
      <td> <?php echo $prodinfo[0] ?> </th>
    </tr>
    <tr>
      <td>Product Name</td>
      <td> <?php echo $prodinfo[1] ?> </td>
    </tr>
    <tr>
      <td>Product Weight</td>
      <td> <?php echo $prodinfo[2] ?> </td>
    </tr>
</table>

Любая помощь с благодарностью, спасибо!

1 Ответ

1 голос
/ 10 июня 2019

$line[0] Здесь 0 указывает номер столбца product_code и сравнивая с номером product_code, измените номер столбца product_code, как указано в вашем csv

if($code!=''){
    $ch = fopen("https://focus-8.com/sites/ds/prodinfo.csv", "r");
    // $file = fopen('http://localhost/stackoverflow/test.csv', 'r');
    while (($line = fgetcsv($ch)) !== FALSE) {
      //$line is an array of the csv elements
      if($line[0]==$code){ // Here `0` indicate product_code column number and comparring with product_code number
          $product_code_array = $line;
      }
    }
    print_r($product_code_array); // Here you get all values of that product_code
    fclose($ch);
}
...