• 締切済み

リンクを押すして該当データを呼び出す?

こんにちは。宜しくお願いします。 仕組みはこうです。 ・・・ <a href = "http://XXXX.XXX.com/7">チワワ7歳、</a> <a href = "http://XXXX.XXX.com/8">チワワ8歳、</a> <a href = "http://XXXX.XXX.com/9">チワワ9歳、</a> <a href = "http://XXXX.XXX.com/10">チワワ10歳、</a> ・・・ このようなのリンクがあります。 (ここからはFlashです。) 各リンクを押すと各一つのFlashの画面が表示されます。 画面にはボタンがありましてクリックすると、 次の画面で該当するチワワのデータが表示されます。 詳細: DB名:dogs テーブル名:mydog に以下のようなデータあります。 tosi   name   ookisa   sumai  seibetu birthday 8   まさお   中   東京   オス 20010602 7   かおり   大   大阪   メス 20050906 8   トシ   大   大阪   オス 20020615 10   へん   少   東京   オス 20050101 8   まつり   大   東京   メス 20060509 この中で、8歳の犬の名前、住まい、誕生日だけを出力して、flashに呼び込んで、見えるようにします。 今現在、Flashnにデータベースの8歳犬の 名前、住まい、誕生日を呼び込むことができました。 ただし、$sql = "select name,sumai,birthady from mydog where tosi=8"; にで tosi=8に設定して8歳のデータを呼び込みました。これだとデータが固定されちゃって、 チワワ9歳、チワワ10歳のリンクを押しても、チワワ8歳のデータが表示されます。これをなんとか解決したいです。 自分は、tosi=8の8部分を変数にしたらいいだろうと思いますが、、、どうのように変数をしたら良いかわかりません。 以下は データを取り出すソースです。 dogdb.php <?PHP $db = mysql_connect("", "master" , "XXXXXX" ); mysql_select_db("dogs"); $sql = "select name,sumai,birthady from mydog where tosi=8"; $results = mysql_query($sql); echo "<?xml version=\"1.0\"?>\n"; echo "<mydog>\n"; while($line = mysql_fetch_assoc ($results)){ echo "<item>" . $line["name"] . $line["sumai"] .$line["birthady"] ."</item>\n"; } echo "</mydog>\n"; mysql_close($db); ?> ご教授よろしくお願いします。

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 今回の問題は、単に文字列の結合を行うにはどうするかというだけで、SQLもましてやDBも何も関係ない。  で、PHPでは文字列リテラルを結合するのはピリオドを使う。  $s = "Hello," . " World!"  こうすると、$sには「Hello, World!」という文字列がセットされる訳だ。  次に変数だが、  $p = "String is $s";  とやったらできる(設定にもよるのかも知れない)。確実にするには  $p = "String is " . $s;  とすれば良いだろう。  年齢をPOSTして貰えば、例えばそれが$_POST['age']のような変数に入っているとすれば  $sql = "select name,sumai,birthady from mydog where tosi=" . $_POST['age'];  で良い。もちろんSQLインジェクションなどはきちんと対処していただきたい。  仮に、実はPHPでの文字列の結合は知ってて<a href = "http://XXXX.XXX.com/7">チワワ7歳、</a>のURLから「/7」を取り出す方法が分からないというのであれば、Apacheならばmod_rewriteに関する情報を探せば良いだろう。または、rewriteは使わずにリクエストURLの文字列を自前でパースして取得しても良い。いずれにせよURL直打ちなどの不正行為は正しく防がないといけないけど。

karisuma79
質問者

補足

anmochi様、ご回答ありがとうございます。 初心者のレベルでは、理解しにくいです。 今、日々勉強していますが、、、