将变量值传递到另一个if条件

时间:2016-12-06 19:04:12

标签: php

这是我的代码,我需要在$ testar中将数组值插入到表Patients_testings中。但它不能使用此代码,错误在哪里?如果我可以使用一个全局变量来做到这一点。它会更有帮助。谢谢。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var lmName = (ss.getName() + "_2016-11");
var lmfoldername = ('2016-11-Update');
var lmFolder = DriveApp.getFoldersByName(lmfoldername).next(); 
DriveApp.getFileById(ss.getId()).makeCopy(lmName, lmFolder);

1 个答案:

答案 0 :(得分:0)

为什么您的代码不起作用:

我认为您缺少的概念是,当请求页面时,以及在每个后续表单提交时,执行PHP代码然后退出,这会抛出存储在内存中的变量的值。使变量成为全局变量不会使它们在请求之间保持不变。

您的代码的细节:

第一次提交表单时isset($_POST['submittestin'])true,并成功使用数据填充$testar变量。但是,在isset($_POST['submittestin'])的第二篇帖子false上,您永远不会点击if (isset($_POST['printinv']))部分。现在,即使您将if (isset($_POST['printinv']))移到第一个if ... submittestin之外,您仍然会遇到问题,因为$testar将不再填充数据。

此外,您使用的变量从未在我能看到的任何地方进行初始化。 $ref_no就是一个例子。

我还建议echo在运行数据库查询之前查看它们是否格式正确。我认为其中一些可能在某些地方缺少'

如何在请求之间保持数据?

最好的方法是开始一个会话。通过启动会话,您可以将变量保存在$_SESSION数组中,然后在不同的请求中访问它们。

注意:您无法序列化resorces,因此您需要在每个请求时重新连接到数据库。即,这不起作用:$_SESSION['dbhandle'] = $dbhande;

另一种在表单中设置<input type=hidden ...元素的方法,以便在第二篇文章中您可以通过$_POST变量再次访问它们。

尝试使您的代码使用会话:

<?php
session_start();
?>

<form role="form" method="post" action="" name="testing" onsubmit="return validate_form()">
    <?php
    $sqltestin = "SELECT * FROM testings";
    $querytestin = mysqli_query($dbhandle, $sqltestin);
    while ($rowtestin = mysqli_fetch_assoc($querytestin)) {
        echo '<input type="checkbox" name="testingar[]" value="' . $rowtestin['TestId'] . '">' . $rowtestin['TestName'] . '<br>';
    }
    ?>
    <div class="modal-footer">
        <input type="submit" name="submittestin" id="submittestin" class="btn btn-success" value="Add Tests">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
    </div>

</form>
</div>
</div>
</div></div>


<?php
$checkBox = '';
$testar = '';
if (isset($_POST['submittestin'])) {
    global $checkBox;
    global $testar;
    $checkBox = $_POST['testingar'];

    foreach ($checkBox as $testar1) {
        $testar .= $testar1 . ",";
    }

    $_SESSION['testar'] = $testar;
    $_SESSION['ref_no'] = "This gets used below but I don't see it initialized anywhere?";

    $tot = 0.00;
    for ($i = 0; $i < sizeof($checkBox); $i++) {
        $queryt2 = "SELECT * FROM testings WHERE TestId = '".$checkBox[$i]."'"; // syntax issue here 

        $resultt2 = mysqli_query($dbhandle, $queryt2) or die (mysql_error());
        while ($rowt2 = mysqli_fetch_assoc($resultt2)) {
            echo "<tr><td>" . $rowt2['TestName'] . "</td>";
            echo "<td width='100'>" . $rowt2['specimen'] . "</td>";
            echo "<td>" . $rowt2['HopePrice'] . "</td></tr>";
            //echo  '<br/>';
            $tot = $tot + $rowt2['HopePrice'];

        }

    }

    echo "<tr><td><b>Total</b></td><td <b>:</b></td><td><b>" . number_format($tot, 2) . "</b></td></tr>";

    echo "<tr><td><form role='form' method='post' action=''>";
    echo "<input type='submit' name='printinv' id='printinv' class='btn btn-success' value='Print'>";
    echo "</form></td></tr>";
}

    //echo $testar;
    if (isset($_POST['printinv'])) {
        if(isset($_SESSION['testar']) {
            $testar = $_SESSION['testar'];
            $ref_no = $_SESSION['refno'];
            $sqltnum = "INSERT INTO patients_testings VALUES ('$ref_no', '$testar')"; // Where is $ref_no set?
            if (mysqli_query($dbhandle, $sqltnum) or die (mysql_error())) {
                echo "Entered Successfully";
            }
        }
    }
?>