Вставка БД цикла формы + изменение javascript - PullRequest
1 голос
/ 13 марта 2010

Мне нужно проверить, есть ли более простой способ сделать это, прежде чем переписать весь код. У меня довольно большая форма, в которой у каждого входа есть имена с [] на конце, так что я могу пройти через php для легкой вставки.

            <input type="hidden" name="currentdate[]" value="<?php echo date('mdY'); ?>">
                <td><input style="width: 50px" type="text" name="jackname[]" /></td>
                <td><input style="width: 20px" type="text" name="jackkey[]" /></td>
                <td><input style="width: 50px" type="text" name="jackbeg[]" /></td>
                <td><input style="width: 50px" type="text" name="jackend[]" /></td>
                <td><input style="width: 50px" type="text" name="jackbegveh" /></td>
                <td><input style="width: 50px" type="text" name="jackbegmon[]" /></td>
                <td><input style="width: 50px" type="text" name="jackendveh" /></td>
                <td><input style="width: 50px" type="text" name="jackendmon[]" /></td>
                <td><input style="width: 50px" type="text" name="jacktx" disabled /></td>

Есть еще несколько полей, но вы поняли. Я тогда использую

foreach ($_POST['jackname'] as $row=>$name) 
{ 
    $jackname = $name;
    $date = $_POST['currentdate'][$row];
    $jackkey = $_POST['jackkey'][$row];
    $jackbeg = $_POST['jackbeg'][$row];
    $jackend = $_POST['jackend'][$row];
    $jackbegveh = $_POST['jackbegveh'][$row];
    $jackbegmon = $_POST['jackbegmon'][$row];
    $jackendveh = $_POST['jackendveh'][$row];
    $jackendmon = $_POST['jackendmon'][$row];
    $jacktx = $_POST['jacktx'][$row];
    if ($jacktx == '') { 
        $jacktx = '0'; 
    }

    if (empty($jackkey)) {
        echo 'Skipped empty! <br />';

    } else {
        mysql_query("INSERT INTO `ticket_counts_jackson` VALUES('', '" . $date . "', '" . $jackname . "', '" . $jackkey . "', '" . $jackbeg . "', '" . $jackend . "', '" . $jackbegveh . "', '" . $jackbegmon . "', '" . $jackendveh . "', '" . $jackendmon . "', '" . $jacktx . "')", $mysql_link) or die(mysql_error()); 
        echo 'Added the info the db! <br />';

    }
} 

Я использую вышеупомянутое, чтобы пройти через форму и добавить ее в базу данных. Теперь по моему основному вопросу. Я также хочу добавить немного JavaScript, чтобы сделать немного математики. В основном ($jackendveh - $jackbegveh) - ($jackendmon - $jackbegmon), и это отображается в Jacktx. В настоящее время я знаю только один способ добавления в математические вычисления - переименовать каждый вход в уникальное имя, а затем переписать мою вставку с 1 на 8.

Ответы [ 3 ]

1 голос
/ 13 марта 2010

Я бы добавил идентификатор в каждое поле ввода, например,

        <td><input id="jackname" style="width: 50px" type="text" name="jackname[]" /></td>
        <td><input id="jackkey" style="width: 20px" type="text" name="jackkey[]" /></td>
        <td><input id="jackbeg" style="width: 50px" type="text" name="jackbeg[]" /></td>
        <td><input id="jackend" style="width: 50px" type="text" name="jackend[]" /></td>
        <td><input id="jackbegveh" style="width: 50px" type="text" name="jackbegveh" /></td>
        <td><input id="jackname" style="width: 50px" type="text" name="jackbegmon[]" /></td>
        <td><input id="jackname" style="width: 50px" type="text" name="jackendveh" /></td>
        <td><input id="jackendmon" style="width: 50px" type="text" name="jackendmon[]" /></td>
        <td><input id="jacktx" style="width: 50px" type="text" name="jacktx" disabled /></td>

и затем, используя jQuery, вы сможете сделать это так

$(document).ready(function(){
   $("input").change(function(){
      var value = $("#jackendveh").val() - $("#jackbegveh").val() - $("#jackendmon").val() - $("#jackbegmon").val();
      $("#jacktx").val(value);
   });
});
0 голосов
/ 14 марта 2010

Я взял у @Travis и изменил его jquery для работы с моей ситуацией следующим образом:

<script type="text/javascript">
$(document).ready(function(){
       $("input").change(function(){
              var value = $("#jackendveh").val() - $("#jackbegveh").val();
              var valuetwo = $("#jackendmon").val() - $("#jackbegmon").val();
              var valuethree = value - valuetwo;
              $("#jacktx").val(valuethree);
           });
        });
</script>

Так что я буду просто иметь уникальные идентификаторы в каждом разделе формы и иметь отдельные функции jquery для каждого и использовать свой оригинальный цикл sql.

0 голосов
/ 13 марта 2010

Я думаю, это будет просто

// Function to save sql in array
function save_sql($table,$data,$ref)
    {
    if(!empty($data)) foreach($data as $k => $v) $str .= "$k = '$v',"; $str = substr($str,0,-1);
    $sql = "INSERT INTO $table SET $str";
    $run = mysql_query($sql) or die(mysql_error() . "-Ref# $ref");
    return $run;
    }
// Extract post arrays into variables
extract ($_POST);

foreach ($_POST['jackname'] as $row=>$name) 
{ 
    $jackname = $name;
    $date = $currentdate[$row];
    if ($jacktx[$row] == '') { 
        $jacktx[$row] = '0'; 
    }

    if (empty($jackkey)) {
        echo 'Skipped empty! <br />';

    } else {
    save_sql("ticket_counts_jackson",array('date'=>$currentdata[$row],
                                            'jackname'=>$name,'jackkey'=>$jackkey[$row],
                                            'jackbeg'=>$jackbeg[$row], 'jackend'=>$jackend[$row])
                                            ,"An error while process your request");
    }
} 
...