0

rsales と salessumarry の 2 つのテーブルがあり、この ff 値があります。

salessumarry からの値

date       |  receipt  |
09/29/2103 |  112233   |

rsales からの値

name       |  category  | receipt  |
33uf       |  capacitor |  112233  |
ic         |  ic22      |  112233  |

期待される出力は、このようなものでなければなりません。

    date       |  receipt  |
    09/29/2103 |  112233   |
   *name       | category  | receipt  |*
    33uf       | capacitor |  112233  |
    ic         | ic22      |  112233  |

しかし、私は間違っているこのような結果を得ます。これまでのところ、以下のコードがあります。

    date       |  receipt  |
    09/29/2103 |  112233   |
   *name       | category  | receipt  |*
    33uf       | capacitor |  112233  |
   *name       | category  | receipt  |*
    ic         | ic22      |  112233  |

そして、私はこれまでのところこのffコードを持っています

$a=$_POST['dayfrom'];
$b=$_POST['dayto'];

    $result1 = mysql_query ("SELECT s.*, r.category, r.name,r.receipt
    FROM salessumarry s
    JOIN rsales r ON s.reciept = r.reciept
    WHERE s.register_mode = 'sales'
    AND s.date BETWEEN '$a' AND '$b' ");

    while($row = mysql_fetch_array($result1))
    {
        echo '<tr>';
        echo '<td style="border-color:#000000; border-style:solid; border-width:1px;"><div align="center">'.$row['date'].'</div></td>';
        echo '<td style="border-color:#000000; border-style:solid; border-width:1px;"><div align="center">'.$row['reciept'].'</div></td>';
        echo '</div></td>';
        echo '</tr>';

        echo '<th style="border-color:#000000; border-style:solid; border-width:1px;"><div align="center">'.$row['name'].'</div>
        echo '<th style="border-color:#000000; border-style:solid; border-width:1px;"><div align="center">'.$row['category'].'</div></th>';
        echo '<th style="border-color:#000000; border-style:solid; border-width:1px;"><div align="center">'.$row['receipt'].'</div></th>';                              


        echo '<tr>';                        
        echo '<th style="border-color:#000000; border-style:solid; border-width:1px;font-size:10px;background-image:url(images/buts3.png);color:white"">name</th>';
        echo '<th style="border-color:#000000; border-style:solid; border-width:1px;font-size:10px;background-image:url(images/buts3.png);color:white"">category</th>';

        echo '<th style="border-color:#000000; border-style:solid; border-width:1px;font-size:10px;background-image:url(images/buts3.png);color:white"">receipt</th>';
 }
mysql_close($con);
?>  
4

1 に答える 1

0

質問を誤解した場合は申し訳ありませんが、投稿したコードは投稿した出力を生成しないようですが、ここに私の2セントがあります。テーブルヘッダーが結果全体で繰り返されるという問題を解決するには、次のブロックを配置する必要があると思います。

 echo '<tr>';                        
    echo '<th style="border-color:#000000; border-style:solid; border-width:1px;font-size:10px;background-image:url(images/buts3.png);color:white"">Product Code</th>';
    echo '<th style="border-color:#000000; border-style:solid; border-width:1px;font-size:10px;background-image:url(images/buts3.png);color:white"">Name</th>';

1 回だけ表示されるように、if ブロックの側で:

if(!$displayed) {
    $displayed = true;
    echo '<tr>';                        
    echo '<th style="border-color:#000000; border-style:solid; border-width:1px;font-size:10px;background-image:url(images/buts3.png);color:white"">Product Code</th>';
    echo '<th style="border-color:#000000; border-style:solid; border-width:1px;font-size:10px;background-image:url(images/buts3.png);color:white"">Name</th>';
}

while ループの前に$displayed を false に初期化することを忘れないでください。

さらに、実際の質問は別として、あなたが投稿したこのコードは、SQL インジェクションとして知られる攻撃に対して脆弱であるため、非常に安全ではありません。セキュリティ上の問題が発生しないようにするために、PDO プリペアド ステートメントのようなものを使用することをお勧めします。

于 2013-09-29T07:55:45.790 に答える