2015-12-16 4 views
0

У меня есть таблица HTML с динамическими столбцами, которые увеличиваются или уменьшаются в соответствии с выбором пользователя. Мне нужно вставить эту таблицу HTML в таблицу базы данных MySQL после ввода входных данных от пользователей в интерфейсе.Вставить значения ячейки таблицы HTML в MySQL

HTML Table Output

Колонна из категории в Наименование постоянно сообщение о том, что изменения столбцов места в зависимости от требований пользователя.

После ввода производится и нажал на кнопку Сохранить, мне нужно вставить эти данные в производственной таблице ниже в формате:

enter image description here

Код, который я закончил до сих пор любезно наставит меня с надлежащей направление:

<?php 
    if(isset($_POST['for_post_market'])){ $market = $_POST['for_post_market']; } 
    if(isset($_POST['for_post_prod_date'])){ $date_prod = $_POST['for_post_prod_date']; } 
    if(isset($_POST['for_post_sale_date'])){ $date_sale = $_POST['for_post_sale_date']; } 
    $query = 'SELECT * FROM product WHERE prod_status="Active"'; 
    $stmt = $DB_con->prepare($query); 
    $stmt->execute(); 
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
     $result[$row['prod_cat_name']][] = $row['prod_id']; 

    } 
?> 
    <form method="post"> 
    <table id="invoices" border="1" class="table table-striped table-bordered"> 
     <thead> 
      <col width="65"> 
      <col width="65"> 
      <th>Category</th> 
      <th>Product ID</th> 
      <th>Product Name</th> 
      <th hidden="true">Production Date</th> 
      <th hidden="true">Sales Date</th> 
<?php 
    $a=count($market); 
    for($i=0;$i<$a;$i++) { 
     echo '<th><input type="hidden" value="'. $market[$i] . '">'. $market[$i] .'</th>'; 
    } 
?> 
     </thead> 
     <tbody> 
<?php 
    foreach($result as $id => $invoices) { 
     echo '<tr>'; 
     echo '<td rowspan='. count($invoices) . '>' . $id . '</td>'; 
     $count = 0; 
     foreach ($invoices as $invoice) { 
      if ($count != 0) { 
       echo '<tr>'; 
      } 
      $count++; 

      echo '<td>' . $invoice . '</td>'; 
?> 
<?php 
      $psql = $DB_con->prepare("SELECT * FROM product WHERE prod_id='$invoice'"); 
      $psql->execute(); 
      $resultpro = $psql->fetchall(PDO::FETCH_ASSOC); 
      foreach($resultpro as $line) { 
      } 
?> 
      <td><?php echo $line['prod_name']; ?></td> 
<?php 
      echo '<td hidden="true">' . $date_prod . '</td>'; 
      echo '<td hidden="true">' . $date_sale . '</td>'; 
      $a=count($market); 
      for($j=0;$j<$a;$j++) { 
       echo '<td><input type="text" name="'. $market[$j] .' "class="form-control" maxlength="6" size="4"></td>'; 
      } 
     } 
    } 
    echo '</tbody>'; 
    echo '</table>'; 
?> 
     <button type="submit" class="btn btn-default waves-effect waves-light" name="btn-saveforcast" id="btn-saveforcast">Save</button> 
    </form> 
<?php 
    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
    } 

} 
else 
{ 
?> 

Полный код Link

+0

Можете ли вы форматировать ваш код? –

+0

Я использовал код-тег –

+1

Вы бы хотели пройти этот код и удалить все пустые циклы IF и FOR, совпадающие со всеми '{' и '}', чтобы мы могли быть уверены, что вы думаете, что делаете прежде чем мы попытаемся сделать какие-либо предложения – RiggsFolly

ответ

1

Поместите результаты в массив, чем Ио op через массив, используя цикл for. Внутри цикла for запрос mysql помещается в базу данных.

Не забудьте поставить $_POST['name'][$i]; вот так внутри цикла for, чтобы он вставлялся правильно.

Надеюсь, это помогло.

+0

Array была первой мыслью, что моя проблема заключается в том, что поле ввода является переменной, и оно может быть два или четыре в зависимости от выбранного рынка. И я также хочу знать поле ввода, на которое он заполнен, поэтому я хочу также сначала заполнить имя рынка и соответствующий вход для идентификатора продукта. –

+0

Итак, если я понимаю вас правильно. Вход может быть 2 или 4 зависит от выбора пользователя, на котором рынок один шаг назад в форме. Вы хотите знать, на каком рынке он заполнен, так что проверка на вход var (у вас есть разные таблички с названием рынка?) А остальное же на каждом входе справа? Я думал, что вы хотите, чтобы добавить их все в одной таблице .. Так что вы можете сделать, это так: У вас есть таблица с именем: market1 -> 4 ряда market2 -> 2 Ряды если ($ _POST [» postnameofmarket '] ==' market1 ') { выполнить цикл for, зацикливая входы } Сделайте то же самое для другого сообщения - это то, что вы ищете? –

+0

Not Excatly, если вы проверите демонстрационную ссылку clean.omegakart.com login: admin pass 123456 и идти под прогнозом, я уверен, что вы получите лучшее представление. У меня есть только одна таблица, и у нее есть столбец на рынке. Заголовок в таблице с полем ввода будет иметь название рынка, поэтому, если есть обновление, то для одного идентификатора продукта, если есть 3 рыночных столбца, он добавит в три раза продукт под другое название рынка и входной калей, который фиксируется с передней стороны. –

2

Я пытался форматировать код, чтобы сделать это несколько читаемый и это то, что я получил:

<?php 

if(isset($_POST[ 'for_post_market'])){ 
    $market=$ _POST[ 'for_post_market']; 
} 
if(isset($_POST[ 'for_post_prod_date'])){ 
    $date_prod=$ _POST[ 'for_post_prod_date']; 
} 
if(isset($_POST[ 'for_post_sale_date'])){ 
    $date_sale=$ _POST[ 'for_post_sale_date']; 
} 
$query='SELECT * FROM product WHERE prod_status="Active"' ; 
$stmt=$ DB_con->prepare($query); 
$stmt->execute(); 
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    $result[$row['prod_cat_name']][] = $row['prod_id']; 
} 

?> 

<form method="post"> 
    <table id="invoices" border="1" class="table table-striped table-bordered"> 
     <thead> 
      <col width="65"> 
       <col width="65"> 
        <th>Category</th> 
        <th>Product ID</th> 
        <th>Product Name</th> 
        <th hidden="true">Production Date</th> 
        <th hidden="true">Sales Date</th> 

        <?php 
        $a=count($market); for($i=0;$i<$a;$i++) { echo '<th><input type="hidden" value="'. $market[$i] . '">'. $market[$i] . '</th>'; } 
        ?> 
     </thead> 
     <tbody> 

      <?php foreach($result as $id=> $invoices) { 
         echo '<tr>'; 
         echo '<td rowspan='. count($invoices) . '>' . $id . '</td>'; 
         $count = 0; 
         foreach ($invoices as $invoice) { 
         if ($count != 0) { 
          echo '<tr>'; 
         } 
         $count++; 
         echo '<td>' . $invoice . '</td>'; 
      ?> 
        <?php 
         $psql=$ DB_con->prepare("SELECT * FROM product WHERE prod_id='$invoice'"); 
         $psql->execute(); 
         $resultpro = $psql->fetchall(PDO::FETCH_ASSOC); 
         foreach($resultpro as $line) { } 
        ?> 

        <td> 

         <?php 
         echo $line[ 'prod_name']; 
         ?> 

        </td> 

        <?php 
         echo '<td hidden="true">' . $date_prod . '</td>'; 
         echo '<td hidden="true">' . $date_sale . '</td>'; 
         $a=count($market); 
         for($j=0;$j<$a;$j++) { 
          echo '<td><input type="text" name="'. $market[$j] . ' "class="form-control" maxlength="6" size="4"></td>'; 
         } 
         } 
        } 
        echo '</tbody>'; 
        echo '</table>'; 
        ?> 

        <button type="submit" class="btn btn-default waves-effect waves-light" name="btn-saveforcast" id="btn-saveforcast">Save</button> 
</form> 

<?php 

} catch(PDOException $e) { 
    echo $e->getMessage(); 
} 
} else { 

?> 

Есть много синтаксических ошибок в коде, но это не главная проблема. Проблема в том, что вы совершенно не поняли, как работают HTML и PHP.

HTML - это язык, который описывает расположение страницы в веб-браузере (например, в Google Chrome). Браузер читает код HTML, а затем отображает страницу на экране вашего компьютера так, как он считает хорошим. Вот и все. HTML не выполняет никаких вычислений; это просто способ описания макета страницы.

PHP, с другой стороны, является базовым языком сценариев. Это означает, что скрипт PHP выполняется сервером, в отличие от HTML и JavaScript, о котором заботится ваш браузер.

Я не уверен, что вы пытались сделать здесь, но я вижу, что вы вставили PHP-скрипты в столбцы таблицы в нескольких местах. Это не имеет никакого смысла.

HTML не является языком сценариев, поэтому у него нет порядка выполнения (потому что ему нечего выполнять). Это вообще не имеет никакого отношения к PHP.

Если вы хотите связать PHP с HTML, то есть хотите, чтобы данные с вашего сервера (базы данных) отображались на веб-странице, вам необходимо использовать JavaScript. JavaScript имеет возможность изменять HTML, а PHP может эхо-команды JavaScript. Однако имейте в виду: PHP выполняется сервером (back-end), а JavaScript выполняется пользователем (front-end). Это означает, что JavaScript действительно не повторяется до тех пор, пока не закончится весь PHP-скрипт, поэтому вы не можете танцевать между JavaScript и PHP.

Что вы должны сделать что-то вроде этого:

  • Получить ввод данных пользователем через форму и отправить его на сервер:

<form action="foo.php" method="post"> ... </form>

  • Handle вход с PHP-скрипт под названием «foo.php». Ваши SQL-запросы и эхо-сигналы JavaScript происходят здесь. Но опять же, не забывайте, что эхо-сигналы не доходят до пользователя до завершения PHP-скрипта.

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

+0

У меня была демонстрация здесь, clean.omegakart.com Login ID admin Pass: 123456 То, что я пытаюсь сделать, это вставить заполненные данные и поля ввода в таблицу базы данных. Но моя проблема заключается в том, что столбцы не являются постоянными при вводе данных, поэтому я пытаюсь найти способ –

+0

Ваш сайт не говорит мне многого. Это довольно пусто. Вы пытаетесь взять пользовательский ввод и вставить в свой MySQL, взять данные из базы данных и отобразить их в таблице, или и то, и другое? – Gendarme

+0

Сначала вызовите данные из продуктов таблицы базы данных. а затем взять inut, а затем попытаться вставить обновленную таблицу в новую таблицу sql –

1

Вашего атрибут name имеет одинаковое значение для всех полого <input> Например «Street» девяносто седьмой и т.д. Использование рынка ID вместо с какой приставкой. Проверьте это во-первых и попытайтесь избежать пробелов в именах.

Каждое значение <input> с идентичными именами будет перезаписано.

+0

Значение представляет собой массив .. и это проблема, что один продукт имеет несколько рынков, и я хочу, чтобы все в порядке. –

+0

Как я вижу из вашего кода, это не массив! Это просто asssigning имена в цикле 'for'. Если вы хотите, чтобы это был массив, заключенный в скобки в конце, например ' ZeJur

+0

Сделать 'var_dump ($ _ POST);' поэтому мы можем видеть, что у вас есть! – ZeJur

0

Помещенные пустые квадратные скобки в конце «имя» атрибут как

<input type="text" name="'. $market[$j][] . ' 

и Вы получите то, что вы хотите !!!

Array 
(
    [79th_Street] = Array 
     (
      [0] = one 
      [1] = two 
      [2] = three 
      [3] = four 
     ) 

    [btn-saveforcast] = ; 
) 

Дополнительно Вы можете поставить «ID продукт» в этот массив, а затем вы можете получить раздельные массивы для каждого ProductID

<input type="text" name="'. $market[$j][$product_id][] . ' 

и результат будет:

Array 
(
    [79th_Street] = Array 
     (
      [2] = Array 
       (
        [0] = one 
       ) 

      [3] = Array 
       (
        [0] = two 
        [1] = three 
        [2] = four 
       ) 

     ) 

    [btn-saveforcast] = ; 
) 
+0

Неустранимая ошибка: Невозможно использовать [] для чтения в C: \ Users \ Sumeet \ Desktop \ Omegakart \ xampp \ htdocs \ billingdark \ createforcast. php на строке 204 T его то, что я получаю, когда я это делаю. –

+0

Покажите, как выглядит ваше поле ввода – ZeJur

Смежные вопросы