Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有PHP的HTML-<;脚本>-段代码突然结束-bug?_Javascript_Php_Html_Intellij Idea - Fatal编程技术网

Javascript 带有PHP的HTML-<;脚本>-段代码突然结束-bug?

Javascript 带有PHP的HTML-<;脚本>-段代码突然结束-bug?,javascript,php,html,intellij-idea,Javascript,Php,Html,Intellij Idea,我在php html混合代码中遇到了一个非常奇怪的行为。我正在使用XAMPP3.2.1(PHP5.2.0)和IntellijIDEA 14.1 这就是我的代码的样子(为了可读性而删除,如果需要更多,请告诉我): 或(n=2): 请注意,随着n的增加,停止不会以确定的方式稍后发生。这意味着当我尝试n=3时,结果如下: $('input[id$="Bar_meters"]').val(output2); $('#Bar_cart').prop('type', 'button').change();

我在php html混合代码中遇到了一个非常奇怪的行为。我正在使用XAMPP3.2.1(PHP5.2.0)和IntellijIDEA 14.1

这就是我的代码的样子(为了可读性而删除,如果需要更多,请告诉我):

或(n=2):

请注意,随着n的增加,停止不会以确定的方式稍后发生。这意味着当我尝试n=3时,结果如下:

$('input[id$="Bar_meters"]').val(output2);
$('#Bar_cart').prop('type', 'button').change();
var price
我的知识已经不多了。这是什么原因


根据要求,更多代码:

$lineData = array();
$f = fopen('products.csv', 'r');
while (($line = fgetcsv($f)) !== false) {
    if (strpos($line[0], $productLine) !== false) {
        // the above produces single value arrays, thus we access them with [0]
        $pieces = explode($GLOBALS['delimiter'], $line[0]);
        $index = (int)$pieces[2];
        // todo: input must check that index is not already taken
        $lineData[$index-1] = $line[0];
    }
}
fclose($f);

ksort($lineData);

for ($i = 0; $i < count($lineData); $i++) {

    $pieces = explode($GLOBALS['delimiter'], $lineData[$i]);

    $prod_name = $pieces[0];
    $prod_lineNumber = $pieces[2];
    $prod_quantity = $pieces[3];
    $prod_tons = $pieces[4];
    $prod_meters = $pieces[5];
    $prod_pricePerTon = $pieces[6];

        ?>
        <p>
            <!-- User-Input-->
            <b> <?php echo $pieces[0]; ?></b> - <?php echo $prod_lineNumber; ?><br/>
            Units: <input id="<?php echo $prod_name; ?>_quantity" type="text">
            Tons: <input id="<?php echo $prod_name; ?>_tons" type="text">
            Meters: <input id="<?php echo $prod_name; ?>_meters" type="text">
            Price per ton: <?php echo $prod_pricePerTon; ?>
            Calculated price: <span id="<?php echo $prod_name; ?>_price">0</span>
            <input id="<?php echo $prod_name; ?>_cart"
                   type="hidden" value="Add to shopping cart!"
                   onclick="addToCart('<?php echo $prod_name; ?>')">
            <!-- Auto-Update-->
            <script>
                // first field - quantity
                $('input[id$="<?php echo $prod_name; ?>_quantity"]').on('keyup', function () {
                    var value = parseFloat($(this).val());
                    var output1 = value * <?php echo $prod_tons . " / " . $prod_quantity; ?>;
                    var output2 = value * <?php echo $prod_meters . " / " . $prod_quantity; ?>;
                    $('input[id$="<?php echo $prod_name; ?>_tons"]').val(output1);
                    $('input[id$="<?php echo $prod_name; ?>_meters"]').val(output2);
                    $('#<?php echo $prod_name; ?>_cart').prop('type', 'button').change();
                    var price = output1 * <?php echo $prod_pricePerTon; ?>;
                    $('#<?php echo $prod_name; ?>_price').text(price);
                });
                // second field - tons
                $('input[id$="<?php echo $pieces[0]; ?>_tons"]').on('keyup', function () {
                    var value = parseFloat($(this).val());
                    var output1 = value * <?php echo $prod_quantity . " / " . $prod_tons; ?>;
                    var output2 = value * <?php echo $prod_meters . " / " . $prod_tons; ?>;
                    $('input[id$="<?php echo $prod_name; ?>_quantity"]').val(output1);
                    $('input[id$="<?php echo $prod_name; ?>_meters"]').val(output2);
                    $('#<?php echo $prod_name; ?>_cart').prop('type', 'button').change();
                    var price = value * <?php echo $prod_pricePerTon; ?>;
                    $('#<?php echo $prod_name; ?>_price').text(price);
                });
                // third field - meters
                $('input[id$="<?php echo $pieces[0]; ?>_meters"]').on('keyup', function () {
                    var value = parseFloat($(this).val());
                    var output1 = value * <?php echo $prod_quantity . " / " . $prod_meters; ?>;
                    var output2 = value * <?php echo $prod_tons . " / " . $prod_meters; ?>;
                    $('input[id$="<?php echo $prod_name; ?>_quantity"]').val(output1);
                    $('input[id$="<?php echo $prod_name; ?>_tons"]').val(output2);
                    $('#<?php echo $prod_name; ?>_cart').prop('type', 'button').change();
                    var price = output2 * <?php echo $prod_pricePerTon; ?>;
                    $('#<?php echo $prod_name; ?>_price').text(price);
                });
            </script>
        </p>
    <?php
}
?>
请注意,产品(Foo、Bar等)按其产品线(钢、铜等)分组,然后按第3列中的数字排序(在;-分隔行中的第三个值)

访问钢组
echo$lineData[$i]
显示以下内容:

Foo;Steel;1;20;30;40;4500.3
FooBar;Steel;2;20;30;40;4500.3
BarFoo;Steel;3;20;30;40;4500.3
这与所解析的文件中的内容完全相同


更新:更改为其他php版本(5.4、5.6)并不能解决此问题

for ($i = 0; $i < count($lineData)+1; $i++)

更新:在Powershell中,“C:\xampp\php\php.exe index.php | Out File test.html”生成了一个html文件,该文件没有上述问题。因此,有一个解决办法。我将进一步了解IntelliJ的想法

与此同时,我还删除了
..

标签,这些标签并没有解决问题

for ($i = 0; $i < count($lineData)+1; $i++)

生成一个包含从0到计数($lineData)-1的所有索引的数组

尝试设置
错误报告(E\u all)
ini\u集('display\u errors',1)在脚本的结尾处。可能是php抛出了一个错误而没有显示它。使用这些命令,您将激活错误报告并显示这些错误。

也许可以尝试这样做:

<?php
$body = 'your javasrcipr text';
for ($i = 0; $i<count($lineData); $i++) {
    print_r($body);
}?>


并检查它对您的网站的影响

您想要一条鱼还是学习钓鱼

“让它变得简单,尽可能简单。不要再简单了。”爱因斯坦

好吧,这也许是一个简单的答案,但确实如此您无法在合理的时间内维护/调试这样的意大利面代码。看看你在这个问题上的闲散时间。即使有赏金,你也很少有运气解决它,因为有才华的人不会花时间在这样的代码上

你的代码是干净的。没有批评者。但你的方法却不是。在10年的编码过程中,我经常遇到这种情况。损失的小时数,能源费用。澄清一切,简化,综合,失败就会出现。你的代码会更强大


这是我真正的答案。

谢谢你的意见。但是,这并不能解决代码生成突然停止的问题。+1是一个开发人员修复的问题,稍后将在另一个问题中讨论。我将从上面的我的代码中删除它$lineData确实具有从0到计数($lineData)-1的所有索引。这些都是0,1,2.0版本的PHP。我注意到,您现在评论说,问题仍然存在于PHP5.4中,但最初的问题是针对5.2的。如果您仍然在生产服务器上使用PHP5.2,我强烈建议您尽快升级——5.2从2011年初就已经过时了。一直以来,它都没有任何安全补丁,而且已知其中存在大量重大安全漏洞。如果您在internet上实时运行它,您迟早会被黑客攻击,如果您还没有被黑客攻击过的话。请尝试删除开始和结束标记。我在循环内使用
标记时遇到问题。出于某种原因,它们似乎没有遵循开始-结束模式。如果您查看输出的源代码,您将看到所有内容都在重新排序,没有任何问题。所以你的代码很好。罪魁祸首一定是别的什么…你真正的问题是你在做意大利面:语言和逻辑的混合。对不起,这是非常难看的意大利面代码,我甚至看不懂。您希望将产品信息从服务器传递到javascript。基本上,您可以在php中将一个产品定义为一个对象,并将其作为JSON传递给一个变量,然后在代码的其余部分使用javascript变量。谢谢您的输入。我将把它作为我在web-dev的进一步途径。然而,我很高兴我用我目前的知识实际完成了这类项目。谈论更好的实践:如何生成根据服务器资源动态生成的HTML/JavaScript代码?我在哪里可以学到这些?@michaelbahr一旦你知道了编码(你也知道——像你的问题一样混合了各种语言),想想架构。看到大的块,没有更多的线。很快-这里有两种情况-我想说我更喜欢一些Ajax代码(“您是否会生成根据服务器资源动态构建的HTML/JavaScript代码”=>Ajax)。AJAX和JSON。然后使用所有的HTML/JS代码,不再使用PHP。我有这样的错误,是因为HTML/JS中有太多的错误。我的意思是,您只需检查在这种情况下是否发生了错误。这取决于你应该在哪里寻找可能的失误
Foo;Steel;1;20;30;40;4500.3
FooBar;Steel;2;20;30;40;4500.3
BarFoo;Steel;3;20;30;40;4500.3
for ($i = 0; $i < count($lineData)+1; $i++)
for ($i = 0; $i < count($lineData); $i++)
$lineData[$index-1] = $line[0];
<?php
$body = 'your javasrcipr text';
for ($i = 0; $i<count($lineData); $i++) {
    print_r($body);
}?>