Как добавить переменные из поста в массив?

0

Я работаю над проектом по выпуску счетов-фактур. У меня есть база данных, содержащая таблицу с услугами и клиентами. Я пытаюсь извлечь значение из select called selectService и добавить его в массив. Проблема в том, что при каждом новом выборе переменные переписываются. Мне нужно это, чтобы добавить несколько счетов-фактур.

       <div class="client-select">
    <form method='post' action=''>        
      <select name='selectClient'>
        <?php
          $query = "select company_name from clients";

          if ($result = $mysqli->query($query)) {
              while ($row = $result->fetch_assoc()) {
        ?>
        <option value="<?php printf ("%s", $row["company_name"]); ?>">
          <?php printf ("%s", $row["company_name"]); ?>
        </option>
        <?php
              }
            $result->free();
          }
        ?>
      </select>
      <button type='submit' name='button1'>Załaduj fakturę</button>
    </form>
  </div>

  <?php function createForm($name='',$nip='', $address='', $error='') { ?>
  <h2>Dane klienta:</h2>
  <div class='client-data'>
    <label>Nazwa firmy:</label><input type="text" name="company_name" value="<?php echo $name; ?>" placeholder='NAZWA FIRMY'/>
    ...
  </div>
  <?php }
  function createCompany() {
    include('company-data.php'); ?>
    <h2>Dane wystawiającego:</h2>
    <div class='company-data'>
      <label>Nazwa firmy:</label><input type="text" name="my_company_name" value="<?php echo $comapny_name; ?>" placeholder='NAZWA FIRMY'/>
      ...
    </div>
  <?php }
  function createPayment() {
    include('company-data.php'); ?>
    <h2>Dane do płatności:</h2>
    <div class='payment-data'>
      <label>Data wydania:</label><input type="date" name="issue_date" value="<?php echo $issue_date; ?>" placeholder='DATA WYDANIA'/>
      ...
    </div>
    <div class='bank-data'>
      <label>Nr konta:</label><input type="text" name="account_number" value="<?php echo $account_number; ?>" placeholder='NR KONTA' size='30'/>
      ...
    </div>
  <?php }
  function serviceSelect() {
    include('db_connect.php'); ?>
    <div class="service-select">
      <form method='post' action=''>        
        <select name='selectService'>
          <?php
            $query = "select service_name from service";

            if ($result = $mysqli->query($query)) {
                while ($row = $result->fetch_assoc()) {
          ?>
          <option value="<?php printf ("%s", $row["service_name"]); ?>">
            <?php printf ("%s", $row["service_name"]); ?>
          </option>
          <?php
                }
              $result->free();
            }
          ?>
        </select>
        <button type='submit' name='button2'>Dodaj usługę</button>
      </form>
    </div>
  <?php }
  function serviceForm($service_name='',$quantity='', $unit='', $net_price='', $net_value='', $vat_rate='', $amount_vat='', $gross_value='', $error='') { ?>
  <div class='service-data'>
    <label>Nazwa usługi:</label><input type="text" name="service_name" value="<?php echo $service_name; ?>" placeholder='NAZWA USŁUGI'/>
    ...
  </div>
  <?php } ?>

 if(isset($_POST['button1'])) {
  $client = $_POST['selectClient'];
  if($stmt = $mysqli->prepare("SELECT company_name,nip,address FROM clients WHERE company_name='$client'")){
  $stmt->execute();
  $stmt->bind_result($name,$nip,$address);
  $stmt->fetch();
  createForm($name,$nip,$address,NULL);
  $stmt->close();
} else {
  echo "Błąd zapytania";
}
createCompany();
createPayment();
serviceSelect();
};

if(isset($_POST['button2'])) {
 createCompany();
 createPayment();
 serviceSelect();

 $service = $_POST['selectService'];
 if($stmt = $mysqli->prepare("SELECT service_name,quantity,unit,net_price,net_value,vat_rate,amount_vat,gross_value FROM service WHERE service_name='$service'")){
  $stmt->execute();
  $stmt->bind_result($service_name,$quantity,$unit,$net_price,$net_value,$vat_rate,$amount_vat,$gross_value);
  $stmt->fetch();
  serviceForm($service_name,$quantity,$unit,$net_price,$net_value,$vat_rate,$amount_vat,$gross_value,NULL);
  $stmt->close();
  array_push($_SESSION['array'], $service);
} else {
   echo "Błąd zapytania";
}
};

$mysqli->close();

Если вы нажмете кнопку 2, функция для создания клиентской формы исчезнет. Я, вероятно, должен использовать другой способ создания форм, но я понятия не имею. Я также рассчитываю на решение проблемы добавления нескольких счетов в счет-фактуру.

  • 0
    Мой счет должен быть подготовлен к печати :)
Теги:
invoice

1 ответ

0

Если вы говорите об этой строке:

while ($row = $result->fetch_assoc()) {

Вы можете использовать данные несколько раз, сохранив его в массиве как новую строку массива:

$rows = array();
while ($row = $result->fetch_assoc()) {
    $rows[] = $row;
    //...
}

И позже используйте его в цикле:

foreach($rows as $row) {
    //...
}
  • 0
    Я говорю об этой строке: $ client = $ _POST ['selectClient']; и добавьте эту переменную в массив array_push ($ _ SESSION ['array'], $ service), теперь переменные в массиве перезаписываются
  • 0
    $_SESSION['array'][] = $service;
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню