プログラムの論理エラーが分からず困っております。時間のある方少しだけ見てもらって宜しいでしょうか。解決したらポイント多めにお支払いいたします。


問題のあるコードはこちらになります。

http://oskuni7.sakura.ne.jp/hakari_set.txt


その前のページのプログラムの流れです。

http://oskuni7.sakura.ne.jp/size_set.txt

問題があるところはデータをデータベースへ登録する所でエラーが出てしまいます。
ここの部分をコメントアウトすると通常にプログラムが流れるのでここで間違いは無いと思うのですがどうしても解決策が見つかりません。
時間があるかたおりましたらよろしくお願いします。
また皆さんはプログラムの問題が起こった際解決に時間がかかる場合や問題解決としてどうされていますか?参考に教えてください。
またプログラムについて厳しい意見をいただけるようでしたらいただきたいです。
よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/09/11 22:10:50
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:poch-7003 No.2

回答回数43ベストアンサー獲得回数8

ポイント100pt

1.size_set.txt

?>"" size

?>"" size

となっているところを?>" sizeに修正.これでうまくいけば良いのですが.だめなら2.を試してください.

					市場価格①<input type="text" name="<?php echo MARKET_PRICE_1 ; ?>" size="">円
市場価格②<input type="text" name="<?php echo MARKET_PRICE_2 ; ?>"" size="">円
市場価格③<input type="text" name="<?php echo MARKET_PRICE_3 ; ?>"" size="">円
市場価格④<input type="text" name="<?php echo MARKET_PRICE_4 ; ?>"" size="">円
市場価格⑤<input type="text" name="<?php echo MARKET_PRICE_5 ; ?>"" size="">円
市場価格⑥<input type="text" name="<?php echo MARKET_PRICE_6 ; ?>"" size="">円
市場価格⑦<input type="text" name="<?php echo MARKET_PRICE_7 ; ?>"" size="">円
市場価格⑧<input type="text" name="<?php echo MARKET_PRICE_8 ; ?>"" size="">円
市場価格⑨<input type="text" name="<?php echo MARKET_PRICE_9 ; ?>"" size="">円

2.hakari_set.txt

1を直した上で,145行目(146行目の$rs=mysql_query($sql);のまえ)に下記を入れて実行してみてください.SQL文が意図したものになっているか確認してください.

echo $sql; mysql_close($db_Handle); exit();

あと,今の状況ですとクエリ送信エラーの時にmysql_close($db_Handle)が呼ばれていないようです.

さらに,フォームから送られてきている値をチェックしていないのは良くないです.このままmysql_queryを実行してしまっては危険です.SQL文に使われてはいけない文字をエスケープするべきです.

#まだテスト段階の為,上記の処理をしていないのであればすみませんが聞き流してください(^^;

id:aiomock

丁寧にありがとうございます。試してみます。

2008/09/10 14:11:14

その他の回答2件)

id:yumisaiki No.1

回答回数70ベストアンサー獲得回数3

ポイント30pt

PHP PROでお金を出して聞くと けっこうすぐ解決します。 たぶん会社の人が教えてくれます。

id:aiomock

ありがとうございます。参考にさせていただきます。

2008/09/10 14:10:41
id:poch-7003 No.2

回答回数43ベストアンサー獲得回数8ここでベストアンサー

ポイント100pt

1.size_set.txt

?>"" size

?>"" size

となっているところを?>" sizeに修正.これでうまくいけば良いのですが.だめなら2.を試してください.

					市場価格①<input type="text" name="<?php echo MARKET_PRICE_1 ; ?>" size="">円
市場価格②<input type="text" name="<?php echo MARKET_PRICE_2 ; ?>"" size="">円
市場価格③<input type="text" name="<?php echo MARKET_PRICE_3 ; ?>"" size="">円
市場価格④<input type="text" name="<?php echo MARKET_PRICE_4 ; ?>"" size="">円
市場価格⑤<input type="text" name="<?php echo MARKET_PRICE_5 ; ?>"" size="">円
市場価格⑥<input type="text" name="<?php echo MARKET_PRICE_6 ; ?>"" size="">円
市場価格⑦<input type="text" name="<?php echo MARKET_PRICE_7 ; ?>"" size="">円
市場価格⑧<input type="text" name="<?php echo MARKET_PRICE_8 ; ?>"" size="">円
市場価格⑨<input type="text" name="<?php echo MARKET_PRICE_9 ; ?>"" size="">円

2.hakari_set.txt

1を直した上で,145行目(146行目の$rs=mysql_query($sql);のまえ)に下記を入れて実行してみてください.SQL文が意図したものになっているか確認してください.

echo $sql; mysql_close($db_Handle); exit();

あと,今の状況ですとクエリ送信エラーの時にmysql_close($db_Handle)が呼ばれていないようです.

さらに,フォームから送られてきている値をチェックしていないのは良くないです.このままmysql_queryを実行してしまっては危険です.SQL文に使われてはいけない文字をエスケープするべきです.

#まだテスト段階の為,上記の処理をしていないのであればすみませんが聞き流してください(^^;

id:aiomock

丁寧にありがとうございます。試してみます。

2008/09/10 14:11:14
id:nake No.3

回答回数87ベストアンサー獲得回数0

ポイント32pt

問題の切り分けを

1.SQL文単体で流して動作するか?

2.素直にエラー処理を入れてください。そうでないと分かりません。

id:aiomock

わかりました。ちょっとやってみます。

2008/09/11 11:20:13
  • id:pahoo
    >問題があるところはデータをデータベースへ登録する所でエラーが出てしまいます。
    エラー発生行番号とエラーメッセージをお知らせください。
  • id:dev_zer0
    > プログラムの問題が起こった際解決に時間がかかる場合や問題解決としてどうされていますか?
    今回に限って言えば、下記が怪しいということなので
    > $rs=mysql_query($sql);
    ・$sqlをログに出力して、そのSQLをそのままDBに突っ込むと正常終了するか?
    ・$rsの内容は何を出力しているのか?
    ・DBのログには(何のDBを使ってるか知らないですけど)何か出力されていないか?
    とかなどを調べてみますね。
     
    あと、PHPに限らず、スクリプトのデバッグって
    まともなデバッガが無い場合が多くて、デバッグが面倒なんですよね
    # 特にPHPってHTMLと混在することが多くて見にくいですし...
     
    取りあえず、PHPのデバッグツールのURLを下記に示しておきます。
    http://blog.asial.co.jp/278
  • id:aiomock
    ご回答ありがとうございます。
    エラー発生番号とエラーメッセージは表示されていないです。

  • id:b-wind
    >エラー発生番号とエラーメッセージは表示されていないです。
    http://www.php.net/manual/ja/function.mysql-error.php
    自分で表示させるんですよ。
    あと、INSERT 文を作成する前に使用するすべての変数は mysql_real_escape_string あたりで
    エスケープしないと。
    http://www.php.net/manual/ja/function.mysql-real-escape-string.php
  • id:Mook
    登録はともかく、元のページの SELECT OPTION の部分がおかしいですね。
    http://www.tagindex.com/html_tag/form/select.html

    市場価格①<input type="text" name="<?php echo MARKET_PRICE_1 ; ?>" size="">円<br>
    市場価格②<input type="text" name="<?php echo MARKET_PRICE_2 ; ?>"" size="">円<br>
    市場価格③<input type="text" name="<?php echo MARKET_PRICE_3 ; ?>"" size="">円<br>
    市場価格④<input type="text" name="<?php echo MARKET_PRICE_4 ; ?>"" size="">円<br>
    市場価格⑤<input type="text" name="<?php echo MARKET_PRICE_5 ; ?>"" size="">円<br>
    市場価格⑥<input type="text" name="<?php echo MARKET_PRICE_6 ; ?>"" size="">円<br>
    市場価格⑦<input type="text" name="<?php echo MARKET_PRICE_7 ; ?>"" size="">円<br>
    市場価格⑧<input type="text" name="<?php echo MARKET_PRICE_8 ; ?>"" size="">円<br>
    市場価格⑨<input type="text" name="<?php echo MARKET_PRICE_9 ; ?>"" size="">円<br>
    の部分も、"" が整合していません。

    いろいろな値(Value)が正常に入っていないのではないですか。
  • id:aiomock
    dev_zer0 さん

    とても勉強になります。ご回答ありがとうございます。

    デバッグツールも紹介していただきありがとうございます。

    少し見た目難しそうですが勉強してみます。

    ありがとうございます。
  • id:aiomock
    b-wind さん

    ご指摘ありがとうございます。

    頑張って直してみます。
  • id:aiomock
    Mook さん

    ご指摘ありがとうございます。

    改修してみます。
  • id:Mook
    SELECT タグで、Value は各Option で指定しないと・・・。

    SELECT に関していえば、例えば下記で

    ブランド①<select name="<?php echo BRAND_1 ; ?>">
    <option value="">選択してください</option>
    <option>アルチザン</option>
      :

    <option value="ARTISAN">アルチザン</option>
      :

    <option value="1">アルチザン</option>
      :
    のようにしないと、選択された値が送信されません。
  • id:tezcello
    value 属性の指示が無い場合、option タグの内容(タグで括られた部分)が渡されるのでは?
  • id:Mook
    あらら、どうやらそうのようですね。
    普段省略して使うなんてことをしないていないので。

    SELECT に関しては余計なことだったようです。
    失礼しました。

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

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

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

回答リクエストを送信したユーザーはいません