現在、商品検索画面をPHPと、Mysqlで一人で作成してる初心者です。
こちらのほうで、参考にさせていただきながら、
下記のようには何とか組めたのですが、
送信ボタンを押すと
SELECT * FROM syohin_list WHERE "
. "(入力した文字 Like '%" . join("%') OR (入力した文字 Like '%", $texthinmeiArray) . "%')";
がそのまんま画面に出力され、
データから抽出してうまく出力画面が出ない状態です。
どこをどう改善したらよいのか、教えていただきたく思いご質問させていただきます。
説明不足など不慣れなところが多々あるかと思いますが、どうぞよろしくお願いいたします。
PHPはこちらでの回答を模倣アレンジさせていただき下記のように作成しております。
" ?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
</head>
//これをスクリプトの1行目に入れるとエラーを表示させなくなります。作成中は//でエスケープして、間違い訂正をする。サーバーに上げるときは有効にするのです。
//error_reporting(1);
$link=mysql_connect("localhost","root","");
if(!$link){
die("データベースへ接続できません。");
}
$db=mysql_select_db("データベース名");
if(!$db){
die("データベースを選択できません。");
}
$sql=<<<SQL</p>
select*from syohin_list
SQL;
$result=mysql_query($sql,$link);
if(!$result){
die(mysql_error()."SQLの発行に失敗しました。");
}
?>
//while($data=mysql_fetch_assoc($result)):
?>
$texthinmei=$_POST['hinmei']; // 入力されたテキスト
$textjan=$_POST['jan']; // 入力されたテキスト
$texthinmeiArray = preg_split("/ /", preg_replace("/( | )+/", " ", trim($texthinmei))); // 分割
$textjanArray = preg_split("/ /", preg_replace("/( | )+/", " ", trim($textjan))); // 分割
$sqlStr=""; // 初期化
if($texthinmeiArray[0]!="" and $textjanArray[0]!="") { // 両方入力されている場合のSQL生成
$sqlStr="SELECT * FROM syohin_list WHERE "
. "((hinmei Like '%" . join("%') OR (hinmei Like '%", $texthinmeiArray) . "%')) AND "
. "((jan Like '%" . join("%') OR (jan Like '%", $textjanArray) . "%'))";
} elseif($texthinmeiArray[0]!="") { // 商品名だけ入力されている場合のSQL生成
$sqlStr="SELECT * FROM syohin_list WHERE "
. "(hinmei Like '%" . join("%') OR (hinmei Like '%", $texthinmeiArray) . "%')";
} elseif($textjanArray[0]!="") { // JANだけ入力されている場合のSQL生成
$sqlStr="SELECT * FROM syohin_list WHERE "
. "(jan Like '%" . join("%') OR (jan Like '%", $textjanArray) . "%')";
} else{
echo "エラー!商品名もJANも入力されていません。";
}
echo $sqlStr;
?>
訂正箇所
echo $sqlStr;
訂正例
$result = mysql_query( $sqlStr, $link ); if ( !$result ) { while ( $data = mysql_fetch_assoc( $result ) ) { echo $data['hinmei']; // 品名 echo $data['jan']; // JANコード echo '<br />'; // 改行タグ } }
サンプル作って動かしてみたら…、
2013/04/17 02:07:52!が混じってました。
if ( !$result ) {
ではなく
if ( $result ) {
です。
お手数かけてすみません。
私が作ったテスト用コードです。
チェック1からチェック5まで順にチェック箇所を追加して行って、
やっと…!が入っているという凡ミスに気づきました…。
データサンプル
2013/04/17 02:48:04