• ベストアンサー

GPS携帯をGoogleMapに位置情報登録

現在auの携帯電話のGPS機能を使いGoogleMapに位置情報を登録する方法を試しています。 携帯電話でXHTMLのリンクをクリックしGPS情報をPHP+SQLiteで登録しPHP+SQLiteで位置情報を表示する方法を試してました。 しかし携帯電話で登録用のリンクにアクセスすると以下のように携帯電話にエラーが表示されます。 Warning: sqlite_open() [function.sqlite-open]: Unable to access /virtual/fitou/public_html/db/mydb.db in /virtual/fitou/public_html/gmap.php on line3 データベースに接続できませんでした 登録用のスクリプトは以下のように書いています。 <?php //データベースオープン $db = sqlite_open('./db/mydb.db'); $tableName = 'gmap_2'; $date = ""; if ( !$db ) { echo "データベースに接続できませんでした"; } else { while ( list($key , $val ) = each( $_GET ) ){ $data .= $key .",". $val .":::"; } $time = date("Y.m.d H:i:s"); //サニタイズ $data = sqlite_escape_string($data); //SQL処理 データ登録 $sql = "insert into $tableName values( Null,'test','$data','$time','');"; //echo($sql); $result = sqlite_query($db, $sql); sqlite_close($db); } ?> サーバーはバリュードメインのレンタルサーバーを使用しています。 http://www.value-domain.com/ PHPとSQLiteが対応しているので問題ないのですが原因が全くわからないのでわかる人がいらっしゃいましたらご指導ください。 よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>サーバーはバリュードメインのレンタルサーバーを使用しています。 xreaなのかcoreserverなのか判断できませんが(汗 Unable to accessということですから、db/mydb.dbのパーミッションを確認してください。606になっていますか?もしDBファイルが未作成であれば、ファイルを作成するディレクトリ(db)のパーミッションが707になっていないとファイルが作成出来ないと思いますけど・・。 モジュール動作のときのディレクトリ/ファイルのパーミッションについてはSQLiteとか(ましてGoogleMapとか)などとは無関係に基本中の基本だと思います。

ekiden10
質問者

お礼

回答ありがとうございます。 もう一度確認してみます。

その他の回答 (1)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

そのまま書いてありますが・・・ Warning: sqlite_open() [function.sqlite-open]: Unable to access /virtual/fitou/public_html/db/mydb.db in /virtual/fitou/public_html/gmap.php on line3 /virtual/fitou/public_html/gmap.php の 3行目に書いてある /virtual/fitou/public_html/db/mydb.db ってのにアクセスできないっすよ。 って。

ekiden10
質問者

お礼

回答ありがとうございます。 基本的なことがあまりわかっていないのでもう少し勉強します。

関連するQ&A

  • PHP+ACCESSのデータベース接続について

    こんにちわ。PHP+ACCESSを使って、データベース接続を試みようとしておりますが、最初のところでつまづております。 <?php //データベースに接続する $DB = sqlite_open('db.mdb'); $SQL = "create table db (id integer ,name,time) $result = sqlite_query($DB, $SQL); ?> 上記のPHPで、ACCESSファイルを作成しましたが、作成したファイルを開くと、"データベース形式が認識できません"と表示し、データベースを閲覧することができません。 また、ACCESSから手動で作成したファイルをsqlite_openで接続しようとすると、sqlite_open(): file is encrypted or is not a database inエラーが表示接続することができません。 PHPとACCESSの相性の問題なのでしょうか。この原因がわかる方がいらっしゃいましたら、教えていただけないでしょうか。 宜しくお願い致します。 【php4.3.10 SQLite Library2.8.14 ACCESS2000】

    • ベストアンサー
    • PHP
  • SQLiteのデータベースについて

    PHP初心者です。以下のSQLiteより作成するデータベースについて教えてください。 $DB = sqlite_open('db1.db'); $sql="create table tables(id integer ,name,texts)"; $result=sqlite_query($db,$SQL); 上記、プログラムにより、同ディレクトリに、db1.dbが作成されますが、このデータベース情報はどのようにして、閲覧するのでしょうか(MS-ACCESS、SQLのように簡単に閲覧できないのか)。主キーやテーブルの名前またはフィールドの名前の変更、データ一覧閲覧などどのようにするのでしょうか。 環境は、Windows環境で、PHP4を使用しております。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • データベースに情報が登録されない・・・

    お世話になってます。 現在カゴヤのサーバーでデータベースに情報を登録しようと試みているのですが、登録できません。ぜひみなさんのお力を貸して下さい。phpは初心者なのでわかりやすく教えて頂けると嬉しいです。 ----------------------------------------------------------------- カゴヤPEARインストール済み PHP 5.2.6 Apacheバージョン Apache/1.3.41 MySQLバージョン 5.0.33 ----------------------------------------------------------------- <?php //PEARのDBライブラリを読み込む require_once("DB.php"); // データベースとの接続情報を記述 $dsn = "mysql://ユーザ名:パスワード@localhost/データベース名"; $db = DB::connect($dsn); if(PEAR::isError($dsn)){ print "ConnectError"; exit; } $sql = "INSERT INTO テーブル名 VALUES ('111112222233','1111111111','2222222222','3333333333','4444444444','5555555555','6666666666','7777777777','8888888888','9999999999','1212121212','2323232323','3434343434','4545454545')"; $res = $db->query($sql); $num = $db->affectedRows(); print $num . "rows Update"; ?>

    • ベストアンサー
    • PHP
  • PHP5でSQLiteが接続エラーを出します

    PHPには初心者です(データベースには多少知識有るはず)。 PHPからSQLに商品データを登録するシステムを作っていますが、データベースに接続することができません。 繋げるためにはどこを直したらよいでしょうか。 データベース名はshop、テーブル名はitemです。 SQLite:バージョン 2.8.17 PHP:バージョン 5.1.6 WindowsXPのプロフェッショナル、eclipse3.2、参考にした本は『eclipseではじめるPHP(http://item.rakuten.co.jp/book/4296315/)』と『基礎PHP(http://item.rakuten.co.jp/book/1711777/)』です。 エラーが出る行 if(!$db = sqlite_open('/../SQLiteManager/shop')){ die("データベース接続エラー.<br/>"); } エラー文 Warning: sqlite_open() [function.sqlite-open]: unable to open database: C:\SQLiteManager\shop in C:\Eclipse\workspace\shop\touroku.php on line 23 データベース接続エラー. PHPのフォルダ内にある 『PHP.iniextension=php_pdo_sqlite.dll』 『extension=php_sqlite.dll』 のコロンは外しました。 SQLiteManagerはworkspaceの中です。 設定が悪いのかファイルを置く場所が悪いのか、それともプログラムが悪いのかもわかりません。 宜しくお願いいたします。

    • 締切済み
    • PHP
  • SQLiteについて

    SQLiteのサンプルに、以下のような記述がありましたが extends(派生クラス) ということは元の基本クラスの記述があるということなのでしょうか? https://www.php.net/manual/ja/sqlite3.open.php /** * SQLite3 クラスを継承して __construct を変更し、 * open メソッドで DB を初期化します */ class MyDB extends SQLite3 {

    • ベストアンサー
    • MySQL
  • Googlemapに位置情報が表示せれないのですが・・・

    Googleのチュートリアル(http://code.google.com/intl/ja/apis/kml/articles/phpmysqlkml.html)を参考にして挑戦しているGooglemaps API/PHP初心者です。 データベースから位置情報をPHPで抽出し、自身のサイトのGooglemapに位置情報を表示する方法について質問させてください。 PHPで位置情報をKML形式で抽出するところまではうまくいっているようなのですが、HTMLに埋め込んだGooglemapに位置情報がまったく表示されずに四苦八苦しております。 どなたか解決方法をご存知の方、お教えいただけませんでしょうか。 -使用サーバ: さくらサーバ(スタンダードコース) -DB: mySQLバージョン5 -PHP: バージョン5 ※HTMLからは、DBからデータを抽出するPHPにリンクさせているのですが、これで良いものでしょうか。 何卒よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPからデータベースへの登録について

    はじめまして。現在、仕事の関係でPHPのプログラムを勉強している者です。 早速ですが、質問させていただきます。 PHPで作成したフォームメールから別で用意したデータベースに 入力データを登録しようとしているのですが、エラーでうまく動作しません。 PHP側のコードミスもあるかもしれませんが、PHPを動作させているサーバーと データベースサーバーの文字コードが違う点も原因しているのでは?と調べている状況です。 フォームからのデータを送るPHP ⇒ Shift_jis PHPをアップしているWebサーバー ⇒ Shift_jis データベースサーバー ⇒ EUC-JP データベースへの接続は問題なく行えているようですので、 登録処理するコードの部分のみを書きます。(↓) ******************************************************************************** // データベースへの登録 $sql = "INSERT INTO FORM_DATA(DataNumber, Time, Name, Email, Area, Sex, Interest, Commnet, OS, IP) VALUES('$tsvcount', '$ymdhis', '$sender_name', '$mail_address', '$mail_area', '$mail_sex', '$mail_interest', '$mail_body', '$os', '$ip')"; $sql = mb_convert_encoding($sql, 'EUC-JP', 'sjis'); mysql_query("SET NAMES 'EUC-JP'"); $db_result = mysql_query($sql); print $sql; print $db_result; if (!$db_result) { exit('Error! データを登録できませんでした。'); } // データベースとの接続解除 $db = mysql_close($db); if (!$db) { exit('データベースとの接続を閉じれませんでした。'); } **************************************************************************** PHP&Webサーバーとデータベースの文字コードを統一すればいい話かもしれませんが、 事情により異なる文字コードの環境で開発しております。 上記の通り、データベースに送信するSQL文はmb_convert_encoding()で「EUC-JP」に変換し、 mysql_query($sql);でデータベースに送信している形です。 この状態で送信すると、エラーとなり送ったSQL文を処理してくれません。 文字コードの変換処理、コードの記述など何が原因なのか分からず困っています。 考えられる原因と、解決策があればご教授いただきたいです。 ちなみに私はPHPはもちろんプログラム自体もまだ経験が浅く、 基礎的なことも理解していないことがかなりあります。 その上でご説明いただけますと大変有難いです。 ではよろしくお願い致します。

    • 締切済み
    • PHP
  • 単純ですが、意外と穴?なデータベースリソースの鮮度

    よろしくお願い致します。 環境PHP5.2.5 / SQLite3 /*---------------------------------------- * インサート -----------------------------------------*/ $sql_1 = 'INSERTなんたら~(id = 25 を作成)'; $db_pass = 'db_hoge.sqlite'; $db_res = sqlite_open($db_pass); //★タイム(1) $result = sqlite_query($db_res,$sql_1);      :   ~ INSERT処理($sql_1)をしてます ~      : //sqlite_close($db_res) ここではクローズせず      :      : /*---------------------------------------- * デリート -----------------------------------------*/ $sql_2 = 'DELETEなんたら~(id = 25 を削除)'; //省略しちゃうわけです。$db_pass = 'db_hoge.sqlite'; //省略しちゃうわけです。$db_res = sqlite_open($db_pass); //★タイム(2) $result = sqlite_query($db_res,$sql_2);      :   ~ DELETE処理($sql_2)をしてます ~      : /*---------------------------------------- * /処理完了 -----------------------------------------*/ //ここで、ようやく、クローズ sqlite_close($db_res); //============================================== 何が疑問かと言いますと、 ★タイム(1)と、★タイム(2)の時点では、 $db_res の中身の鮮度が違うのでは?と思うわけです。 つまり、 ★タイム(1)の時点では、id=25のデータは作成されていません。 ★タイム(2)の時点では、id=25のデータは作成済みです。 id=25が作成されていない状態のDBリソースを、 ★タイム(2)の所で、使用しています。 言い換えると、 id=25が存在していないDBのリソースを、 タイム(2)の時点で使用し、 そのリソースをもとに、 id=25のデータを消そう(DELETEしよう)としているわけです。 「//省略しちゃうわけです。」 という所で、省略する場合と、しない場合とでは、 結果はやはり異なるのでしょうか? 検査対象がリソースだけに、調べにくいなと思い、 質問させて頂きました。 どなたか、この辺りの正式な作法も含めて、 教えて頂けてませんでしょうか。 上記の「//省略しちゃうんです。」の方法で、 問題ないですよ、 ということであれば、今後も、省略しちゃう方向で、 コーディングしていこうと思います。笑

    • ベストアンサー
    • PHP
  • SQLite3:: escapeString使用法

    SQLite3クラスのメソッドescapeStringを使って、 SQL文の中に挿入する文字列の 浄化(SQLインジェクション対策)をする場合の、 一般的な作法について教えて下さい。 例えば、 //----------------------- //エスケープしたい文字列 $var= "Let's"; //オープンするデータベース $db= ":memory:" $obj = new SQLite3($db); $tmp = $obj->escapeString($var); $db->close(); //----------------------- こんな感じで使おうとしていますが、 「オープンするデータベース」の所が、 ちょっと理解できていません。 とりあえず文字列の浄化だけを行いたい場合には、 必ずしも、DBをオープンする必要はないと思いますので、 オープンするDBなんて、ないですよ! ということで、 :memory: を指定していたりしますが、 この辺りの正しい作法について、どなたか教えて下さい。

    • ベストアンサー
    • PHP
  • (PHP 4.4.8) sqlite_open関数の引数を相対パスにしたいのですが上手くいきません。

    PHP 4.4.8 SQLite Library 2.8.14 の環境で、 sqlite_open関数の引数を相対パスにしたいのですが上手くいきません。 (例)create_db.php <?php $db = sqlite_open("../db_test"); //←ここでエラーが出ます。 $query = "CREATE TABLE tbl_test(id,aaa,bbb)"; $result = sqlite_query($db,$query); sqlite_close($db); ?> ネットで調べた所、sqlite_open()は引数に「相対パス(or絶対パス)」を入れることは可能であり、 かつ、「../db_test」が無い場合、作られる仕組みということです。 エラー表示: Warning: sqlite_open() [function.sqlite-open]: unable to open database (...以下略) ちなみに、上記のコードにおいて、 「../db_test」ではなく、「db_test」として同じことをすると、上手くいきます。 つまり、スクリプトファイル(create_db.php)と同階層にファイルを作成することはできるのです。 $db = sqlite_open("db_test");   //← ○:ファイル作成成功 $db = sqlite_open("../db_test"); //← ×:ファイル作成失敗 どなたかご助言をよろしくお願い致します。

    • ベストアンサー
    • PHP