0

divポップアップの後に値をエコーし​​たり取得したりすることに問題があります.divpopupの後に$rが表示されないという問題を誰でも助けることができます. むしろ、フェッチが繰り返されず、最初のレコードのみが表示されます..よろしくお願いします

<?php
   $con = mysql_connect('****', 'root','****')    or die('Error connecting to MySQL server.');  
mysql_select_db("dreschema", $con) or die("cannot select DB"); 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org    /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link href="styles2.css" rel="stylesheet" type="text/css" />
<link href="styles.css" rel="stylesheet" type="text/css" />
<link href="styleshref.css" rel="stylesheet" type="text/css" />
<script>


</script>
</head>
<body>
<div id="container1">


 <div align="center"></div>
  <div id="mainContent1">




<?php 
$text = $_GET["searchtext"];
echo "Results displayed for   ". $text;
echo '</br>';


   $query4 = "SELECT * from products WHERE ProductName LIKE '%$text%'";
$data = mysql_query($query4, $con);
if (!mysql_query($query4, $con)){
print mysql_error();
exit;
}
     while ($row = mysql_fetch_array($data)) {
echo $row['ProductName'];

if($row['Stock']== 0 OR $row['Stock']== "")
{
echo "(SOLDOUT)";
echo '<input type="hidden" name="prod" value="' . $row['Image'] . ' " " id = "prod">';
echo '<a href="preorder.php?image=' . $row['Image'] . '"><img id = "imageid" src="' . $row['Image'] . '" alt="' . $row['Image'] . '"  width="80" height="80" style="margin-left:1.5em;margin-top:1.5em;"/></a>';
echo $row['Price'] . "PhP";
?>

   <div id="blanket" style="display:none;"></div>
    <div id="popUpDiv" style="display:none;">
    <a href="#" onclick="popup('popUpDiv')"><font size =" 20">x</font></a><br>


        <a href="#" onclick="popup('popUpDiv')" ><?php echo '<iframe src="orders2.php?image=' . $row['Image'] . '"style= position:absolute;width:500px;height:500px;"></iframe>';?> </a>

    </div>  
  <a href="#" onclick="popup('popUpDiv')">Click to Open CSS Pop Up</a><br>  

<?php
}
 else 
{
echo '<input type="hidden" name="prod" value="' . $row['Image'] . ' " " id = "prod">';
echo '<a href="orders2.php?image=' . $row['Image'] . '">';
echo '<img id = "imageid" src="' . $row['Image'] . '" alt="' . $row['Image'] . '"  width="80" height="80" style="margin-left:1.5em;margin-top:1.5em;"/></a>';
echo $row['Price'] . "PhP";
$r = $row['Image'];
  echo '<br>';

?>


    <div id="blanket" style="display:none;"></div>
    <div id="popUpDiv" style="display:none;">
<?php
echo $r;
?>
    <a href="#" onclick="popup('popUpDiv')"><font size =" 20">x</font></a><br>

        <a href="#" onclick="popup('popUpDiv')" ><?php echo '<iframe src="orders2.php?image=' . $row['Image'] . '"style= position:absolute;width:500px;height:500px;"></iframe>';?> </a>

    </div>  
  <a href="#" onclick="popup('popUpDiv')">Click to Open CSS Pop Up</a><br>  



   <?php
}


}
?>

    <!-- end #mainContent --></div>
<!-- end #container --></div>
</body> 
</html>
4

1 に答える 1

0

これは答えであるかもしれないし、そうでないかもしれませんが、コメントセクションには収まらないので、ここで拡大したいと思いました. コードに目を通すと、(a) MySQL が 1 行しか返さなかったことが問題であるかどうかを判断するのは困難です。(b) PHP ループで問題が発生しています。または (c) すべて正常に動作しているが、HTML マークアップが非常に混乱しているため、ブラウザーが期待どおりにレンダリングできない。

最初の問題を解決するには、クエリの直後に次を追加してください。

$num_rows = mysql_num_rows($data);
if (!$num_rows){die('no rows');}
echo "<p>$num_rows rows returned</p>";

このようにして、返される行数を確認できます。また、これをしないでください: if (!mysql_query($query4, $con)){. これを行いif(!$data){ます。

----- わきに ----

現在の設定がハッキングされ、データが台無しになるため、PDOまたはに切り替えることをお勧めします)。mysqli*MySQL に関しては、少なくとも、$text = mysql_real_escape_string($_GET["searchtext"]);最も単純な SQL インジェクション攻撃を回避するように設定する必要があります。念のrootため、サイトにユーザーを使用しないでください。権限が制限された MySQL ユーザーを設定し、それらを使用します... また、XSS インジェクションを回避するために、テキストを画面に表示するstrip_tags($_GET["searchtext"])ときにも行う必要があります。echo

----- /脇に----

クエリが単一の応答を返すことが問題でない場合は、ソース コードを確認してください。複数のループに相当するコードが表示されていませんか? 多くのマークアップの問題があります。私はいくつかを強調しました:

  1. echo '<input type="hidden" name="prod" value="' . $row['Image'] . ' " " id = "prod">';- これらの "s はそこで何をしているのですか? " が浮かんでいるだけで、ブラウザがタグを解釈する方法を台無しにする可能性があります。また、属性値の先頭または末尾にスペースがあることがよくあります...特に属性では、それらを取り除きvalueます。
  2. 同じ行 (および他の行): 要素 ID ( ) を静的にコーディングしましたprod。ID は一意であると想定されているため、コードが正常にループしている場合、同じ ID を持つ要素が多数存在することになります (これにより、直面している問題が発生することはありませんが、JavaScript が含まれています。そのため、JS が重複した ID を削除している可能性があります)。
  3. <iframe src="orders2.php?image=' . $row['Image'] . '"style= position:absolute;width:500px;height:500px;"></iframe>-style属性は属性にマージされsrcます。そこにスペースが必要です。そうしないと、ブラウザーがいずれかの属性をどう処理すればよいかわからない可能性があります。
  4. 同じ行で、style属性には開始 " がありませんが、終了 " があります。同じです。
  5. <a href="orders2.php?image=' . $row['Image'] . '">- 開始 " はありませんが、終了 " があります... 引用符を完全に省略することはできますが、両方を行うことはできません。

他にも問題があり、いくつかの一般的なコーディング標準をクリーンアップする必要がありますが、結果のコードを見て、合格することを確認する必要があります。

最後に、画像が表示されていることを確認します。最初のifステートメントでは、画像を表示するように指示されることはなく (おそらく にあるiframe)、elseステートメントでは、画像はを持つにecho編集されるため、表示されることは期待できません。問題が画像を表示していないだけの場合は、iframe src が正しいことを確認してください (変数として渡すときに画像 URI が必要になる場合があります)。divstyle="display:none"urlencode_GET

結果の HTML コードを投稿していただければ (そして、MySQL が 1 つの行を返すだけではないことを確認してください)、さらに支援できる可能性があります。

于 2013-02-11T04:10:22.347 に答える