2015-12-01 5 views
1

У меня есть некоторый массив или флажки, а отмеченные значения должны записываться в таблицы mysql. На данный момент он не пишет db. Поэтому я сомневаюсь, что я делаю правильный путь. Код ниже представлен массивом записей из db. Теперь у него есть 2 ряда флажков. Это может быть один или два или три в зависимости от данных.Вставьте данные из блока checkbox в таблицу MySQL с PHP

Мой HTML ниже:

<form action="comparitive_state_comprehensive_update.php?tender_id=1063" method="POST"></form> 



          <table class="inlineTable" style="border-collapse: collapse" border="1" bordercolor="#000000" cellpadding="7" cellspacing="0" width="160"> 
           <tbody> 
            <tr> 
             <td height="30" width="170">Export Charges:</td> 
            </tr> 
            <tr> 
             <td height="30">IATA Charges:</td> 
            </tr> 
            <tr> 
             <td height="30">COC Charges:</td> 
            </tr> 
            <tr> 
             <td height="30">Calibration Charges:</td> 
            </tr> 
            <tr> 
             <td height="30">Third Party Insp. Chrg</td> 
            </tr> 
            <tr> 
             <td height="30">Ultrasonic Insp. Chrg</td> 
            </tr> 
            <tr> 
             <td height="30">Optional Access Cost</td> 
            </tr> 
            <tr> 
             <td height="30">Extended Warranty Chrg</td> 
            </tr> 
            <tr> 
             <td height="30">Installation &amp; Training</td> 
            </tr> 
            <tr> 
             <td height="30">Approx. Freight</td> 
            </tr> 
            <tr> 
             <td height="30">Other Charges</td> 
            </tr> 
           </tbody> 
          </table> 

          <table class="inlineTable" style="border-collapse: collapse" border="1" bordercolor="#000000" cellpadding="5" cellspacing="0" width="100"> 
           <tbody> 
            <tr> 
             <td height="30" width="540">12&nbsp;GBP&nbsp;<input name="chk[]" id="exportinr" value="12" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">34&nbsp;GBP&nbsp;<input name="chk[]" id="iatainr" value="34" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">78&nbsp;GBP&nbsp;<input name="chk[]" id="cocinr" value="7848.0783407565" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">54&nbsp;GBP&nbsp;<input name="chk[]" id="calibrationinr" value="5433.2850051391" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">98&nbsp;GBP&nbsp;<input name="chk[]" id="tpinr" value="9860.4061204376" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">32&nbsp;GBP&nbsp;<input name="chk[]" id="ultrasoninr" value="3219.7244474898" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">19&nbsp;GBP&nbsp;<input name="chk[]" id="optinr" value="1911.7113906971" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">25&nbsp;GBP&nbsp;<input name="chk[]" id="extinr" value="2515.4097246014" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">67&nbsp;GBP&nbsp;<input name="chk[]" id="instinr" value="6741.2980619318" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">16&nbsp;GBP&nbsp;<input name="chk[]" id="freightinr" value="1609.8622237449" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">39&nbsp;GBP&nbsp;<input name="chk[]" id="otherinr" value="3924.0391703782" type="checkbox"></td> 
            </tr> 


           </tbody> 
          </table> 
          <table class="inlineTable" style="border-collapse: collapse" border="1" bordercolor="#000000" cellpadding="5" cellspacing="0" width="100"> 
           <tbody> 
            <tr> 
             <td height="30" width="540">98&nbsp;GBP&nbsp;<input name="chk[]" id="exportinr" value="8768.88" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">23&nbsp;GBP&nbsp;<input name="chk[]" id="iatainr" value="4565.98" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">89&nbsp;GBP&nbsp;<input name="chk[]" id="cocinr" value="76576.098" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">21&nbsp;GBP&nbsp;<input name="chk[]" id="calibrationinr" value="87687.090" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">90&nbsp;GBP&nbsp;<input name="chk[]" id="tpinr" value="24565.989" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">28&nbsp;GBP&nbsp;<input name="chk[]" id="ultrasoninr" value="223.090" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">42&nbsp;GBP&nbsp;<input name="chk[]" id="optinr" value="5465.09" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">65&nbsp;GBP&nbsp;<input name="chk[]" id="extinr" value="1213.89" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">12&nbsp;GBP&nbsp;<input name="chk[]" id="instinr" value="87678.88" type="checkbox"></td> 
            </tr> 
            <tr> 
             <td height="30">19&nbsp;GBP&nbsp;<input name="chk[]" id="freightinr" value="76576.98" type="checkbox"></td> 
     </tr> 
     <tr> 
     <td height="30">10&nbsp;GBP&nbsp;<input name="chk[]" id="otherinr" value="78687687" type="checkbox"></td> 
     </tr> 

     </tbody> 
     </table> 
     <input type='submit' name='submit' value='Add Items to Quotation'> 
      </form> 
     </div> 

Мой PHP скрипт, ниже которого вставляет данные:

$chkbox = $_POST['chk']; 

$exportinr = filter_input(INPUT_POST, 'exportinr'); 
$iatainr = filter_input(INPUT_POST, 'iatainr'); 
$cocinr = filter_input(INPUT_POST, 'cocinr'); 
$calibrationinr = filter_input(INPUT_POST, 'calibrationinr'); 
$tpinr = filter_input(INPUT_POST, 'tpinr'); 
$ultrasoninr = filter_input(INPUT_POST, 'ultrasoninr'); 
$optinr = filter_input(INPUT_POST, 'optinr'); 
$extinr = filter_input(INPUT_POST, 'extinr'); 
$instinr = filter_input(INPUT_POST, 'instinr'); 
$freightinr = filter_input(INPUT_POST, 'freightinr'); 
$otherinr = filter_input(INPUT_POST, 'otherinr'); 

$currency2 = $_POST['currency2']; 


$i = 0; 
While($i<sizeof($chkbox)) 
{ 
mysqli_query($con,"INSERT INTO quotation_terms (tender_id, export_charges_inr, iata_charges_inr, coc_charges_inr, calibration_charges_inr, tp_inspe_charges_inr, ultrason_inspe_charges_inr, opt_access_cost_inr, ext_warranty_cost_inr, inst_training_cost_inr, approx_freight_inr, other_charges_inr, currency1) 

VALUES ('$tender_id','$exportinr','$iatainr','$cocinr','$calibrationinr','$tpinr','$ultrasoninr', '$optinr', '$extinr', '$instinr', '$freightinr', '$otherinr', '$currency2')"); 

$i++; 
} 
echo "Checkbox value is successfully submitted."; 

Это фактическое PHP Форма сценария:

while($list1=mysql_fetch_array($add1)) 
    { 
    echo '<tr><input type="checkbox" name="chk[exportinr]" id="exportinr" value='.$list1['export_charges'].'></td></tr>'; 
    echo '<tr><td height="30"><input type="checkbox" name="chk[iatainr]" id="iatainr" value='.$list1['iata_charges'].'></td></tr>'; 
      echo '<tr><td height="30"><input type="checkbox" name="chk[cocinr]" id="cocinr" value='.$list1['coc_charges_inr'].'></td></tr> '; 
      echo '<tr><input type="checkbox" name="chk[calibrationinr]" id="calibrationinr" value='.$list1['calibration_charges_inr'].'></td></tr>'; 
      echo '<tr><input type="checkbox" name="chk[tpinr]" id="tpinr" value='.$list1['tp_inspe_charges_inr'].'></td></tr>'; 
       echo '<tr><input type="checkbox" name="chk[ultrasoninr]" id="ultrasoninr" value='.$list1['ultrason_inspe_charges_inr'].'></td></tr>'; 
      echo '<tr><td height="30"><input type="checkbox" name="chk[optinr]" id="optinr" value='.$list1['opt_access_cost_inr'].'></td></tr>'; 
      echo '<tr><td height="30"><input type="checkbox" name="chk[extinr]" id="extinr" value='.$list1['ext_warranty_cost_inr'].'></td></tr>'; 
      echo '<tr><td height="30"><input type="checkbox" name="chk[instinr]" id="instinr" value='.$list1['inst_training_cost_inr'].'></td></tr>'; 
      echo '<tr><td height="30"><input type="checkbox" name="chkfreightinr[]" id="freightinr" value='.$list1['approx_freight_inr'].'></td></tr>'; 
      echo '<tr><td height="30"><input type="checkbox" name="chk[otherinr]" id="otherinr" value='.$list1['other_charges_inr'].'></td></tr>'; 
    } 
+3

Вам нужно собрать данные сообщения из атрибута 'name', а не' id 'из флажков. PHP не видит атрибуты 'id', только' name' и 'value'. – Rasclatt

+0

Если вы хотите получить точные значения имени, вы можете иметь 'chk []' содержать ключи массива, такие как 'name =" chk [otherinr] "' – Rasclatt

+0

И как будет цикл while для этого вставить в mysql db? –

ответ

0

Вы получите все проверенные флажки значений внутри $_POST['chk']

$checkedArr = $_POST['chk']; 
+0

После этого цикл while и вставить данные? –

+0

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

+0

После присвоения разных имен другим флажкам. Как я могу захватить данные в цикле for и вставить в mysql db? –

0

Вы получаете массив после отправки значения флажка. И вам нужно взорвать или проанализировать это значение и сохранить в базе данных.

$checkedArr = $_POST['chk'];  //return an array. 
$checkboxvalue = implode(",", $checkedArr); 

Затем введите $checkboxvalue в базу данных mysql. И вы получите значение в форме, разделенной запятой. Затем, извлекая из базы данных, вы можете взорвать значение db и использовать foreach, чтобы показать значения флажка.

+0

Можете ли вы поделиться больше света о том, как предоставить цикл for или while, чтобы вставить данные. –

0

Вы должны организовать свою форму, как так (обратите внимание на $i инкрементирования и размещение ключа):

<form action="comparitive_state_comprehensive_update.php?tender_id=1063" method="POST"> 
<table class="inlineTable" style="border-collapse: collapse" border="1" bordercolor="#000000" cellpadding="7" cellspacing="0" width="160"> 
    <tbody> 
     <tr> 
      <td height="30" width="170">Export Charges:</td> 
     </tr> 
     <tr> 
      <td height="30">IATA Charges:</td> 
     </tr> 
     <tr> 
      <td height="30">COC Charges:</td> 
     </tr> 
     <tr> 
      <td height="30">Calibration Charges:</td> 
     </tr> 
     <tr> 
      <td height="30">Third Party Insp. Chrg</td> 
     </tr> 
     <tr> 
      <td height="30">Ultrasonic Insp. Chrg</td> 
     </tr> 
     <tr> 
      <td height="30">Optional Access Cost</td> 
     </tr> 
     <tr> 
      <td height="30">Extended Warranty Chrg</td> 
     </tr> 
     <tr> 
      <td height="30">Installation &amp; Training</td> 
     </tr> 
     <tr> 
      <td height="30">Approx. Freight</td> 
     </tr> 
     <tr> 
      <td height="30">Other Charges</td> 
     </tr> 
    </tbody> 
</table> 
<?php 
    $data[] = array(
         "exportinr" => 12, 
         "iatainr" => 34, 
         "cocinr" => 7848.0783407565, 
         "calibrationinr" => 5433.2850051391, 
         "tpinr" => 9860.4061204376, 
         "ultrasoninr" => 3219.7244474898, 
         "optinr" => 1911.7113906971, 
         "extinr" => 2515.4097246014, 
         "instinr" => 6741.2980619318, 
         "freightinr" => 1609.8622237449, 
         "otherinr" => 3924.0391703782 
        ); 
    $data[] = array(
         "exportinr" => 54, 
         "iatainr" => 23, 
         "cocinr" => 234.0783407565, 
         "calibrationinr" => 3453.2850051391, 
         "tpinr" => 11111.4061204376, 
         "ultrasoninr" => 32132.7244474898, 
         "optinr" => 4433.7113906971, 
         "extinr" => 5224.4097246014, 
         "instinr" => 6666.2980619318, 
         "freightinr" => 231343.8622237449, 
         "otherinr" => 10303.0391703782 
        ); 

    $i = 0;    
    foreach($data as $row) { 
?> 
<table class="inlineTable" style="border-collapse: collapse" border="1" bordercolor="#000000" cellpadding="5" cellspacing="0" width="100"> 
    <tbody> 
     <?php 
     foreach($row as $key => $value) { ?> 
     <tr> 
      <td height="30" width="540"><?php echo number_format($value,0); ?>&nbsp;GBP&nbsp;<input name="chk[<?php echo $i; ?>][<?php echo $key; ?>]" id="<?php echo $key; ?>" value="<?php echo $value; ?>" type="checkbox" /> 
      </td> 
     </tr> 
     <?php } ?> 
    </tbody> 
</table> 
<?php $i++; 
    } ?> 
<input type='submit' name='submit' value='Add Items to Quotation' /> 
</form> 
</div> 

EDIT:

Это должно быть эквивалентно выше код на основе вашей формы. Обратите внимание, у вас есть mysql_, где он должен быть mysqli_:

<?php 
    $i = 0;    
    while($row = mysqli_fetch_array($add1, MYSQLI_ASSOC)) { 
?> 
<table class="inlineTable" style="border-collapse: collapse" border="1" bordercolor="#000000" cellpadding="5" cellspacing="0" width="100"> 
    <tbody> 
     <?php 
     foreach($row as $key => $value) { ?> 
     <tr> 
      <td height="30" width="540"><?php echo number_format($value,0); ?>&nbsp;GBP&nbsp;<input name="chk[<?php echo $i; ?>][<?php echo $key; ?>]" id="<?php echo $key; ?>" value="<?php echo $value; ?>" type="checkbox" /> 
      </td> 
     </tr> 
     <?php } ?> 
    </tbody> 
</table> 
<?php $i++; 
    } ?> 

Посылает это даст вам легко сгруппированный массив для обработки:

Array 
(
    [chk] => Array 
     (
      [0] => Array 
       (
        [cocinr] => 7848.0783407565 
        [tpinr] => 9860.4061204376 
       ) 

      [1] => Array 
       (
        [iatainr] => 23 
        [calibrationinr] => 3453.2850051391 
       ) 

     ) 

    [submit] => Add Items to Quotation 
) 

Процесс обработка данных MySQL в запрос будет что-то вроде это (есть много способов обработать это с помощью валидации, это в значительной степени отправить в БД с минимальной валидацией):

if(!empty($_POST['chk'])) { 
     // Loop through each row 
     for($i = 0; $i < count($_POST['chk']); $i++) { 
       // Get just the values 
       $arrVals = array_values($_POST['chk'][$i]); 
       // Run through the values and sanitize for numeric/decimals/commas 
       $arrVals = array_map(function($v) { $v = preg_replace('/[^0-9\.\,]/',"",$v); return $v; },$arrVals); 
       // Implode the columns 
       $setCols = "(`".implode("`,`",array_keys($_POST['chk'][$i]))."`)"; 
       // Implode the values 
       $setVals = "('".implode("','",$arrVals)."')"; 
       // Save to database 
       mysqli_query($con, "INSERT INTO quotation_terms {$setCols} values {$setVals}"); 
      } 
    } 
+0

Iam новичок и действительно трудно понять этот код и реализовать его в моем существующем коде. Тем не менее, я пытаюсь достичь этого –

+0

Эта строка $ data [] = array ("exportinr" => 12 и т. д. Как я буду кодировать в реальном php? Это правильно?

+0

Когда я снова нахожусь перед своим компьютером, я попытаюсь включить то, что у вас есть. '' data data in my - это представление извлеченных данных ('$ list1') от вашего. Одна вещь, которую я только заметил, это то, что вы используете оба ' mysql_' и 'mysqli_', что неверно. – Rasclatt

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