PHPについて質問です。


現在、検索機能を作成しています。
メニューをクリックすると商品データを表示するようにしています。

http://www.aiomock2008.sakura.ne.jp/kaimono.php

しかし、青色のワード検索の欄で検索した後、ページを戻り、ピンクのメニューをクリックした際に
データベースへ入っているデータが全て表示されたり、いくつか表示されたり等のエラーが出てしまいます。
PHP詳しい方おりましたら一度コードを見ていただけないでしょうか。
大変お手数をおかけしますがよろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/08/01 00:06:09
  • 終了:2010/08/01 02:03:22

ベストアンサー

id:rouge_2008 No.1

rouge_2008回答回数594ベストアンサー獲得回数3512010/08/01 01:29:09

ポイント100pt

検索に使用するセッションを破棄していないのが原因です。

以下のようにして、使い終わったセッションを削除するといいです。

function order() {
require "database_connect.php";

$sql1=mysql_query(" SELECT * from KAIMONO WHERE TITLE Like '%".$_SESSION["kensaku"]."%'");

unset($_SESSION['kensaku']); // これ以降は使っていないようですので、ここで削除します。

http://oshiete.goo.ne.jp/qa/3224862.html

http://www.php.net/manual/ja/function.session-unset.php

id:aiomock

ご回答ありがとうございます。

2010/08/01 02:00:06
  • id:aiomock
    こちらが買物のページのコードになります。 kaimono.php

    <?


    if(isset($_POST["submit"])){

    session_start();

    $_SESSION["kensaku"] = "";

    //以下検索で空白、データベースに登録されていないデータが検索された際のエラー処理を施しております。

    if(!$_POST["kensaku"]){ // 条件を指定
    header('Location:kaimono_kensaku_error.php');
    }else{ // 先ほどの条件に当てはまらない場合
    require "database_connect.php";
    $_SESSION["kensaku"] = mysql_real_escape_string($_POST["kensaku"]);
    $sql = mysql_query(" SELECT * from KAIMONO WHERE TITLE Like '%".$_SESSION["kensaku"]."%'"); // 送信するSQL文の中に「;」は必要ありません。
    if (mysql_num_rows($sql) == 0) {
    header('Location: kaimono_kensaku_error.php');
    }



    header('Location:kaimono_kensaku.php');
    }

    }if(isset($_POST["submit"]))
    {

    session_start();
    $_SESSION['kensaku']=$_POST["kensaku"];

    $kw = trim($_SESSION['kensaku']);
    if ($kw == '') {
    header('Location: kaimono_kensaku_error.php');
    exit;
    }

    require 'database_connect.php';
    $kw = mysql_real_escape_string($kw);
    $res = mysql_query("SELECT * from KAIMONO WHERE TITLE Like '%" . $kw . "%' ; ");
    if (mysql_num_rows($res) == 0) {
    header('Location: kaimono_kensaku_error.php');
    exit;
    }

    header('Location:kaimono_kensaku.php');
    exit;

    }



    ?>
    <html>
    <head>
    <meta content="text/html;charset=Shift_JIS" http-equiv="Content-Type">
    <title></title>
    </head>
    <body>
    <form method="post" action="kaimono.php">
    <center>
    <table border="1" bordercolor="gray" cellspacing="0" width="800">
    <tbody>
    <tr>
    <td><a href="http://www.aiomock2008.sakura.ne.jp/index.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/title.jpg" border="0"></a><br>
    </td>
    </tr>
    </tbody>
    </table>
    <table border="0" bordercolor="gray" cellspacing="0">
    <tbody>
    <tr>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/index.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/1.jpg"
    onmouseover="this.src='6.jpg'" onmouseout="this.src='1.jpg'" border="0"></a>
    </td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/syoukai.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/2.jpg"
    onmouseover="this.src='7.jpg'" onmouseout="this.src='2.jpg'" border="0"></a>
    </td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/kaimono.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/3.jpg"
    onmouseover="this.src='8.jpg'" onmouseout="this.src='3.jpg'" border="0"></a></td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/taiken.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/4.jpg"
    onmouseover="this.src='9.jpg'" onmouseout="this.src='4.jpg'" border="0"></a>
    </td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/toiawase.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/5.jpg"
    onmouseover="this.src='10.jpg'" onmouseout="this.src='5.jpg'"
    border="0"></a></td>
    </tr>
    </tbody>
    </table>
    <table border="1" bordercolor="gray" cellspacing="0">
    <tbody>
    <tr>
    <td style="vertical-align: top;">
    <table>
    <tbody>
    <tr>
    <td border="1" bgcolor="#99ffff" width="200"><br>
        <span style="font-weight: bold;">- 商品検索 -</span><br>
    <br>
    <input name="kensaku" size="25" type="txt"> <input
    name="submit" value="検索" type="submit"> <br>
    <br>
    </td>
    <td rowspan="2" valign="top" width="600"><br>
    <img src="http://www.aiomock2008.sakura.ne.jp/kaimono.jpg">
    <br>
    <br>
    <small>宮崎農園では毎朝取れたての農作物を直送便にてお客様にお届けし
    ております。<br>
    その為 新鮮でおいしい野菜をご家庭で味わう事が可能です。<br>
    <br>
    宮崎農園の野菜の魅力はたくさんあります。<br>
    <br>
    1:</small><small>無農薬野菜のため【 </small><small>健康に良く  </small><small>】、また、</small><small>【 < /small><small>農
    作物本来の味</small><small> </small><small>】< /small><small>を楽しめます。</small><small><br>
    2:</small><small>【 </small><small>昼夜の温度差の激しい気候 </small><small> </small><small>】</small> <small>に
    恵まれ実が非常に引き締まっています。</small><br>
    <small>3:お客様との直接取引を実現したため</small><small>【 </small><small>安
    くておいしい野菜</small><small> </small><small>】</small><small>をお届けすることが可能です。<br>
    <br>
    農園スタッフが愛情を込めて作った農作物をこの機会に是非是非お求めくださいませ^^。<br>
    </small><br>
    <img src="http://www.aiomock2008.sakura.ne.jp/whatnew.jpg"><br>
    <small><br>
    商品を新しい順から表示しております。</small><br>
    <br>
    <br>

    <table border="0" ><tr>

    <td align="center" valign="center">

    <?


    require "database_connect.php";

    $sql=mysql_query(" SELECT * FROM `KAIMONO` ORDER BY `BANGOU` DESC LIMIT 0 ,1 ; ");

    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {

    echo "<a href=\"KAIMONO/".$row["BANGOU"].".php\"><img src=\"PICTURE/mini_pic/".$row["BANGOU"].".jpg\"></a><Br><Br><font size=\"-1\">

    ".$row["TITLE"]."</font>";
    }



    ?>

    </td>

    <td align="center" valign="center">

    <?


    require "database_connect.php";

    $sql=mysql_query(" SELECT * FROM `KAIMONO` ORDER BY `BANGOU` DESC LIMIT 1 ,1 ; ");

    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {

    echo "<a href=\"KAIMONO/".$row["BANGOU"].".php\"><img src=\"PICTURE/mini_pic/".$row["BANGOU"].".jpg\"></a><Br><Br><font size=\"-1\">

    ".$row["TITLE"]."</font>";
    }



    ?>

    </td>

    <td align="center" valign="center">

    <?


    require "database_connect.php";

    $sql=mysql_query(" SELECT * FROM `KAIMONO` ORDER BY `BANGOU` DESC LIMIT 2 ,1 ; ");

    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {

    echo "<a href=\"KAIMONO/".$row["BANGOU"].".php\"><img src=\"PICTURE/mini_pic/".$row["BANGOU"].".jpg\"></a><Br><Br><font size=\"-1\">

    ".$row["TITLE"]."</font>";
    }



    ?>

    </td>

    </tr></table>

    <br>
    <br>
    <img
    src="http://www.aiomock2008.sakura.ne.jp/kaimono2.jpg"> <br>
    <br>
    <small>宮崎農園の人気商品です。<br>
    ご家庭で利用される方だけでなく、遠くの旦那さんや息子さん、お世話になった人への贈り物としてのご利用はいかがでしょうか。<br>
    この機会に是非宮崎農園をご利用くださいませ。</small>

    <br><Br>

    <table border="0" ><tr>

    <td align="center" valign="center">

    <?


    require "database_connect.php";

    $sql=mysql_query(" SELECT * FROM `KAIMONO` ORDER BY `NINKI` DESC LIMIT 0 ,1 ; ");

    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {

    echo "<a href=\"KAIMONO/".$row["BANGOU"].".php\"><img src=\"PICTURE/mini_pic/".$row["BANGOU"].".jpg\"></a><Br><Br><font size=\"-1\">

    ".$row["TITLE"]."</font>";
    }



    ?>

    </td>

    <td align="center" valign="center">

    <?


    require "database_connect.php";

    $sql=mysql_query(" SELECT * FROM `KAIMONO` ORDER BY `NINKI` DESC LIMIT 1 ,1 ; ");

    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {

    echo "<a href=\"KAIMONO/".$row["BANGOU"].".php\"><img src=\"PICTURE/mini_pic/".$row["BANGOU"].".jpg\"></a><Br><Br><font size=\"-1\">

    ".$row["TITLE"]."</font>";
    }



    ?>

    </td>

    <td align="center" valign="center">

    <?


    require "database_connect.php";

    $sql=mysql_query(" SELECT * FROM `KAIMONO` ORDER BY `NINKI` DESC LIMIT 2 ,1 ; ");

    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {

    echo "<a href=\"KAIMONO/".$row["BANGOU"].".php\"><img src=\"PICTURE/mini_pic/".$row["BANGOU"].".jpg\"></a><Br><Br><font size=\"-1\">

    ".$row["TITLE"]."</font>";
    }



    ?>

    </td>

    </tr></table>






    </td>
    </tr>
    <tr>
    <td bgcolor="pink">
    <div style="text-align: center;"><br>
    <iframe
    src="http://www.aiomock2008.sakura.ne.jp/kaimono_menu.php"
    name="WhatsNewSample" cellpadding="0" height="700" width="180">インラインフレー
    ム対応ブラウザでご覧いただけま
    す。 </iframe><br>
    </div>
    <br>
    </td>
    </tr>
    </tbody>
    </table>
    </td>
    </tr>
    <tr>
    <td colspan="2" align="center">
    <center><img
    src="http://www.aiomock2008.sakura.ne.jp/sitaba.jpg"><br>
    </center>
    </td>
    </tr>
    </tbody>
    </table>
    </center>
    </form>
    </body>
    </html>
  • id:aiomock
    そしてこちらがメニューバーをクリックした際やワード検索をした際の結果を表わすページのコードになります。 kaimono_kensaku.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta content="text/html;charset=Shift_JIS" http-equiv="Content-Type">
    <title>kudamono</title>
    </head>
    <body>
    <br>
    <center>
    <table border="1" bordercolor="gray" cellspacing="0" width="800">
    <tbody>
    <tr>
    <td><a href="http://www.aiomock2008.sakura.ne.jp/index.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/title.jpg" border="0"></a><br>
    </td>
    </tr>
    </tbody>
    </table>
    <table border="0" bordercolor="gray" cellspacing="0">
    <tbody>
    <tr>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/index.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/1.jpg"
    onmouseover="this.src='6.jpg'" onmouseout="this.src='1.jpg'" border="0"></a>
    </td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/syoukai.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/2.jpg"
    onmouseover="this.src='7.jpg'" onmouseout="this.src='2.jpg'" border="0"></a>
    </td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/kaimono.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/3.jpg"
    onmouseover="this.src='8.jpg'" onmouseout="this.src='3.jpg'" border="0"></a></td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/taiken.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/4.jpg"
    onmouseover="this.src='9.jpg'" onmouseout="this.src='4.jpg'" border="0"></a>
    </td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/toiawase.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/5.jpg"
    onmouseover="this.src='10.jpg'" onmouseout="this.src='5.jpg'"
    border="0"></a></td>
    </tr>
    </tbody>
    </table>
    <table border="1" bordercolor="gray" cellspacing="0">
    <tbody>
    <tr>
    <td style="vertical-align: top;">
    <table>
    <tbody>
    <tr>
    <td border="1" bgcolor="#99ffff" width="200"><br>
        <span style="font-weight: bold;">- 商品検索 -</span><br>
    <br>
    <input name="kensaku" size="25" type="txt"> <input
    name="submit" value="検索" type="submit"> <br>
    <br>
    </td>
    <td rowspan="2" valign="top" width="600"><small><small>
    </small></small><br>




    <?php

    //青色のワード検索で調べた結果を表示しています。

    session_Start();

    if(isset($_SESSION["kensaku"]))
    {

    function order() {
    require "database_connect.php";

    $sql1=mysql_query(" SELECT * from KAIMONO WHERE TITLE Like '%".$_SESSION["kensaku"]."%' ; ");

    while ($row = mysql_fetch_array($sql1, MYSQL_ASSOC)) {

    echo '<table border="1" bordercolor="gray" cellpadding="4"
    cellspacing="0" width="600">
    <tbody>';


    /**/
    echo '<tr>

    <FORM method="POST" action="kaimono_kakunin.php">

    <td colspan="3" rowspan="1" align="center"
    bgcolor="#99c001"><font color="white"><b>
    <input type="hidden" name="kanri_no" value="'.$row["BANGOU"].'">'.$row["TITLE"].'</b></font><br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="4" align="center"
    valign="center" width="200"><img src="http://www.aiomock2008.sakura.ne.jp/PICTURE/'.$row["SYURUI"].'/'.$row["BANGOU"].'.jpg"><br>
    </td>
    <td colspan="2" rowspan="1" valign="top">'.$row["SETUMEI"].'<br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    </td>
    </tr>
    <tr>
    <td><b>値段:<big><font color="red" size="+2"><big>'.$row["NEDAN"].'</big></font></big>
    円</b><br>
    </td>
    <td colspan="1" rowspan="3" align="center"
    valign="center">

    <INPUT TYPE="image" SRC="cart1.jpg" name="submit">


    <br>
    </td>
    </tr>
    <tr>
    <td><b>在庫数:<big>'.$row["KOSUU"].'</big> 個</b><br>
    </td>
    </tr>
    <tr>
    <td><b>購入数:<select name="kosuu"></b>';


    if($row["KOSUU"]>0)
    {

    for ($i = 0; $i <= $row["KOSUU"]; $i++) {

    echo '<option>'.$i.'</option>';
    }

    }
    else { echo '<option>-</option>'; }

    echo '</select>
    </td>
    </tr>
    </tbody>
    </table></form><br><Br>';









    }} order(); }
    ?>




    <br>
    <br>




    <?php

    //ピンクのメニュー検索で調べた結果を表示しています。

    if(isset($_POST["keyword"]))
    {

    function order2() {
    require "database_connect.php";

    $sql2=mysql_query(" SELECT * from KAIMONO WHERE TITLE Like '%".$_POST["keyword"]."%' ; ");

    while ($row = mysql_fetch_array($sql2, MYSQL_ASSOC)) {

    echo '<table border="1" bordercolor="gray" cellpadding="4"
    cellspacing="0" width="600">
    <tbody>';


    /**/
    echo '<tr>

    <FORM method="POST" action="kaimono_kakunin.php">

    <td colspan="3" rowspan="1" align="center"
    bgcolor="#99c001"><font color="white"><b>
    <input type="hidden" name="kanri_no" value="'.$row["BANGOU"].'">'.$row["TITLE"].'</b></font><br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="4" align="center"
    valign="center" width="200"><img src="http://www.aiomock2008.sakura.ne.jp/PICTURE/'.$row["SYURUI"].'/'.$row["BANGOU"].'.jpg"><br>
    </td>
    <td colspan="2" rowspan="1" valign="top">'.$row["SETUMEI"].'<br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    </td>
    </tr>
    <tr>
    <td><b>値段:<big><font color="red" size="+2"><big>'.$row["NEDAN"].'</big></font></big>
    円</b><br>
    </td>
    <td colspan="1" rowspan="3" align="center"
    valign="center">

    <INPUT TYPE="image" SRC="cart1.jpg" name="submit">


    <br>
    </td>
    </tr>
    <tr>
    <td><b>在庫数:<big>'.$row["KOSUU"].'</big> 個</b><br>
    </td>
    </tr>
    <tr>
    <td><b>購入数:<select name="kosuu"></b>';


    if($row["KOSUU"]>0)
    {

    for ($i = 0; $i <= $row["KOSUU"]; $i++) {

    echo '<option>'.$i.'</option>';
    }

    }
    else { echo '<option>-</option>'; }

    echo '</select>
    </td>
    </tr>
    </tbody>
    </table></form><br><Br>';

    }}order2(); }
    ?>




    <br>
    <br>

    </td>
    </tr>
    <tr>
    <td bgcolor="pink" valign="top">
    <div style="text-align: center;"><br>
    <iframe
    src="http://www.aiomock2008.sakura.ne.jp/kaimono_menu.php"
    name="WhatsNewSample" cellpadding="0" height="700" width="180">インラインフレー
    ム対応ブラウザでご覧いただけま
    す。 </iframe><br>
    </div>
    <br>
    </td>
    </tr>
    </tbody>
    </table>
    </td>
    </tr>
    <tr>
    <td colspan="2" align="center">
    <center><img
    src="http://www.aiomock2008.sakura.ne.jp/sitaba.jpg"><br>
    </center>
    </td>
    </tr>
    </tbody>
    </table>
    </center>
    </form>
    </body>
    </html>
  • id:rouge_2008
    まだコードは確認していませんが、気が付いた事があったので・・・
    「kaimono.php」に余分な処理が多すぎます。
    私が回答した処理と、bayanさんが回答した処理の両方が入っています。
    どちらかを使用するようにしてください。
    ※無駄にデータベースに接続する等していないので、私が回答した処理がおすすめです。(※回答+コメントの修正)
  • id:rouge_2008
    前のコメントを撤回します。
    検索した商品が無かった時も「kaimono.php」で処理したいのですね。
    bayanさんの方のコードを残してください。

    ※以下のようにまとめても大丈夫です。

    <?

    if(isset($_POST["submit"])){

    session_start();

    $_SESSION["kensaku"] = "";

    //以下検索で空白、データベースに登録されていないデータが検索された際のエラー処理を施しております。

    if(!$_POST["kensaku"]){
    header('Location:kaimono_kensaku_error.php');
    }else{
    require "database_connect.php";
    $_SESSION["kensaku"] = mysql_real_escape_string($_POST["kensaku"]);
    $sql = mysql_query(" SELECT * from KAIMONO WHERE TITLE Like '%".$_SESSION["kensaku"]."%'");

    if (mysql_num_rows($sql) == 0) {
    header('Location: kaimono_kensaku_error.php');
    exit;
    }

    header('Location:kaimono_kensaku.php');
    }

    }

    ?>
  • id:rouge_2008
    「kaimono_kensaku.php」についてですが、73行目の「session_start();」より先に文字を出力しているため、設定によっては警告が表示されます。
    73行目の「session_start();」を削除して、ファイルの先頭に記述してください。

    <?php

    session_start();

    ?>
    // ※ここより前に追加※
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません