Q&A
こちらのメコログ様のmysqlに画像を保存し呼び出すプログラム(http://mekori.hatenablog.com/entry/2013/07/04/020835)を参考にフォームページから画像や文字をmysqlに保存し呼び出すプログラムを作成しました。
フォームページからデータを登録する際、緯度経度の値を手入力で行い画像を呼び出す時にはこの2つの数値を入力しして合致したデータを表示するようにしました。しかし現時点では合致したデータの先頭だけが呼び出されほかに合致しているデータがある場合でも呼び出されません。
緯度経度の数値に合致したデータを複数表示させるにはどのような方法があるかアイデアをくださるとありがたいです。
下に2つのプログラムの一部を記載します。
/*set_img.php*/ $file_dir = 'C:\xampp\htdocs\sample\image\'; //データベースに接続する $db_link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); //取得する画像のリンク $file_path = $file_dir. $_FILES["uploadfile"]["name"]; //ファイル移動処理 if(move_uploaded_file($_FILES["uploadfile"]["tmp_name"],$file_path)){ $img_dir = "./image/"; $img_path = $img_dir. $_FILES["uploadfile"]["name"]; $thumbnail_path = $img_dir. $thumbnail_name; }else{ echo "画像が選択されていません!"; exit; } $img_file = file_get_contents($img_path); // 画像の取得 //$img_file = $_FILES["uploadfile"]["tmp_name"]; //画像取得が成功した場合 $name = $_POST["name"]; $comment = $_POST["comment"]; $longitude = $_POST["longitude"]; $latitude = $_POST["latitude"]; //$word = $_POST["word"]; $lon_minus = $longitude - 0.0005; $lon_plus = $longitude + 0.0005; $lat_minus = $latitude - 0.0005; $lat_plus = $latitude + 0.0005; //if($word == 67){ if($img_file){ //画像をバイナリに変換 $img_binary = mysqli_real_escape_string( $db_link, $img_file ); //画像を保存するSQL文の実行 $result = mysqli_query( $db_link, 'INSERT INTO img_table (name,img_col,longitude,latitude,comment) VALUES ("'.$name.'","'.$img_binary.'","'.$longitude.'","'.$latitude.'","'.$comment.'")'); //結果の表示 if($result){echo "画像をデータベースに保存しました。"; }else{ echo "保存できませんでした。"; } } /*view_img.php*/ session_start(); $_SESSION["longitude"] = $_POST["longitude"]; $_SESSION["latitude"] = $_POST["latitude"]; $com_longitude = $_POST["longitude"]; $com_latitude = $_POST["latitude"]; //下の2つの関数を使い、緯度軽度に合致したテキストを表示する。 CallImg($com_longitude,$com_latitude); //指定した緯度経度を持つテキストを表示する関数 function CallImg($longitude_num,$latitude_num){ print TextSearchDB($longitude_num,$latitude_num); echo nl2br("\n"); } //データベースから、指定した緯度経度を持つテキストファイルを検索する関数。 function TextSearchDB($longitude_num,$latitude_num){ $com_longitude_minus = $longitude_num - 0.0005; $com_longitude_plus = $longitude_num + 0.0005; $com_latitude_minus = $latitude_num - 0.0005; $com_latitude_plus = $latitude_num + 0.0005; //データベースへ接続する $db_link1 = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); //指定した緯度経度のテキストを検索 $serch_query1 = mysqli_query($db_link1,"SELECT * FROM `img_table` WHERE `longitude` BETWEEN '".$com_longitude_minus."' AND '".$com_longitude_plus."'"); $serch_query2 = mysqli_query($db_link1,"SELECT * FROM `img_table` WHERE `latitude` BETWEEN '".$com_latitude_minus."' AND '".$com_latitude_plus."'"); $row_lon = mysqli_fetch_array($serch_query1); $row_lat = mysqli_fetch_array($serch_query2); if($row_lon['comment']==$row_lat['comment']){ header( 'Content-Type: text/html' ); echo $row_lon['comment']; }else{ echo"一致したデータがありませんでした"; } $close_flag1 = mysqli_close($db_link1); }
回答1件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2018/01/02 08:45
2018/01/02 10:26
2018/01/05 06:52