簡體   English   中英

如何停止 PHP 循環以重復並覆蓋舊數據?

[英]How can I stop PHP the while loop to repeat and cover old data?

我是 PHP 的新手,所以我希望 while 循環每次的結果都不同,因為我從 CSV 文件中獲取數據,所以它不應該是所有數據都是相同的。

這是我的代碼

<div style="margin: 1%">


            <?php
            //include 'barcode128.php';
            require 'vendor/autoload.php';

                if (($csvfile = fopen($_FILES['file']['tmp_name'], "r")) !== FALSE) {
                    while (($csvdata = fgetcsv($csvfile, 1000, ",")) !== FALSE) {

                        $colcount = count($csvdata);

                        if($colcount!=5) {
                            $error = 'Column count incorrect';
                        } else {

                            /*$product = $csvdata[0];
                            $product_id = $csvdata[1];
                            $rate = $csvdata[2];
                            $description = $csvdata[3];
                            $image = $csvdata[4];
                            $imageData = base64_encode(file_get_contents($image));

                                echo '<div class="wrapper">';
                                echo '<div class="a"><img src="data:image;base64,'.$imageData.'" width="50"/>
                                      <div><b>Item: '.$product.'</b></div>
                                      <div><svg id="barcode"><script>JsBarcode("#barcode", "'.$product_id.'",{
                                      format: "code128",width: 1,height: 35,fontOptions: "bold",marginRight:30});</script></svg></div><span><b>Price: '.$rate.' </b></span><div><span><b>Desc: </b>'.$description.'</span></div></p></span>
                                      </div></div>';
                            */

                            $imageData = base64_encode(file_get_contents($csvdata[4]));

                                echo '<div class="wrapper">';
                                echo '<div class="a"><img src="data:image;base64,'.$imageData.'" width="50"/>
                                      <div><b>Item: '.$csvdata[0].'</b></div>
                                      <div><svg id="barcode"><script>JsBarcode("#barcode", "'.$csvdata[1].'",{
                                      format: "code128",width: 1,height: 35,fontOptions: "bold",marginRight:30,font:"arial"});</script></svg></div><span><b>Price: '.$csvdata[2].' </b></span><div><span><b>Desc: </b>'.$csvdata[3].'</span></div></p></span>
                                      </div></div>';

                        }

                    }
                    fclose($csvfile);
                }
            ?>

    </div>

當前代碼的結果: image-result


CSV 文件: image-csv


這就是我想要的結果:在此處輸入圖像描述

那么,我怎樣才能讓結果每次循環並打破它,然后循環 CSV 文件中的下一個數據? 謝謝

問題是您正在創建多個具有相同 ID 的svg元素。 然后,您將在JsBarcode()調用中使用這個單一 ID。 通過這樣做,Javascript 將始終作用於具有此 id 的第一個元素。

為了解決這個問題,我們必須創建具有唯一 ID 的元素,然后在每個 Javascript 調用中使用這個唯一 ID。

因為你有$product_id = $csvdata[1]; 在您注釋掉的代碼中,此答案將假定$csvdata[1]每行都是唯一的。

在你的echo里面,改變

<div><svg id="barcode"><script>JsBarcode("#barcode", "'.$csvdata[1].'",{

<div><svg id="barcode_'.$csvdata[1].'"><script>JsBarcode("#barcode_'.$csvdata[1].'", "'.$csvdata[1].'",{

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM