リンク付き画像とPHPの組み合わせによる画像の表示制御についてのエラー

このQ&Aのポイント
  • MySQLとPHPを組み合わせたシステムで、特定の条件に基づいてリンク付き画像を表示するかどうかを制御しようとしていますが、うまくいきません。
  • 解決法として、画像のソース部分を適切に置き換えることが必要です。
  • エラーの原因は、画像のソース部分における引用符のエスケープや変数の記述などの問題が考えられます。
回答を見る
  • ベストアンサー

locatin.hrefのリンク付き画像とPHP

現在、MySQLとPHPを組み合わせたシステムを作っています。 MySQLのi5_volumeというカラムの中の数値が「1より大きい」ときにボタンを表示させ、0以下であれば表示させないようにしたいと考えています。 ボタンは画像でありlocation.hrefで別のページにリンクされています。 (OAuthで認証エラーを避けるため <a href></a> はNG) 画像からのリンクは下記のソースになります。 【画像のソース(locatin.hrefのリンク付き)】 <img src="./abc.png" onclick="location.href='sell.php?e2_id=<?php echo $price['e2_id']; ?>&time=<?php $time = date('G'); echo $time; ?>';" /> 「i5_volumeが1より大きければ画像を表示させ、0以下であれば表示させない」ためのPHPは下記です。 【規定値で画像が表示されるPHP(画像は直リンク)】 <?php IF ($my_volume['i5_volume'] >= 1) {echo "<IMG src=\"./abc.png\" >";} ELSE {echo "";} ?> 従い、 【規定値で画像が表示されるPHP(画像は直リンク)】 の画像のソース部分を 【画像のソース(locatin.hrefのリンク付き)】 に置き換えれば基本的にはいいはずなのですが、下記ではうまくいきません。エラーになり何も表示されません。 どこが悪いかご指摘頂けませんでしょうか? <?php <?php IF ($my_volume['i5_volume'] >= 1) {echo " <img src=\"./abc.png\" onclick="location.href='sell.php?e2_id=$_price['e2_id'];&time= $time = date('G'); echo $time;'" /> ";} ELSE {echo "";} ?>

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

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

  • ベストアンサー
noname#244856
noname#244856
回答No.2

ハンパなく読みにくいので以下リンクを読んで別の方法も知っておいてください。 HTMLタグを動的に作るときに有用な関数 http://php.net/manual/ja/function.sprintf.php http://php.net/manual/ja/function.vsprintf.php クエリを連想配列から生成する関数(第3引数まではほぼ必須) http://php.net/manual/ja/function.http-build-query.php echo短縮構文 http://php.net/manual/ja/function.echo.php 制御構造に関する別の構文 http://php.net/manual/ja/control-structures.alternative-syntax.php 私だったらこう書くかな・・・ <?php if ($my_volume['i5_volume'] >= 1): ?> <?php $q = http_build_query(array(  'e2_id' => $_price['e2_id'],  'time' => date('G'), ), '', '&'); ?> <img src="./abc.png" onclick="location.href='self.php?<?=$q?>'" /> <?php endif; ?> 全角スペースでインデントしてるので注意。

tajix14
質問者

お礼

いつもためになるご指導ありがとうございます。 また、新しい知識を学ぶことが出来ました。 大変ありがとうございました。 お教え頂いたことをもとに、下記で所期の目的を達成することが出来ました。 深く御礼申し上げます。 <?php $data = array('e2_id'=>$row_e_latest_stock_price['e2_id'], 'time'=>date('G')); $data_b = http_build_query($data, '', '&amp;'); if ($row_my_volume['i5_volume'] >= 1) { echo "<img src=\"./abc.png\" onclick=\"location.href='sell.php?$data_b'\" />";} ELSE {echo "";} ?>

その他の回答 (2)

noname#244856
noname#244856
回答No.3

いつも貼ってますが念のためこちらもご覧ください。 http://qiita.com/mpyw/items/b00b72c5c95aac573b71

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

onclickの中身がエスケープされてないんじゃない? {echo " <img src=\"./abc.png\" onclick=\"location.href='sell.php?e2_id=$_price['e2_id'];&time= $time = date('G'); echo $time;'\" /> ";} PHPに限らずJavaサーブレットやJSPなど、「プログラムから最終的に(HTMLなどの)文字列を作るのが目的である」ものは、どこまでがPHPの文字列で、どこからがHTMLの文字列(タグのエレメントやアトリビュート)になるかを確認しながら作るのが肝要だ。

tajix14
質問者

お礼

エスケープミスのご指摘ありがとうございました。 凡ミス失礼しました。 ただ、エスケープの処理だけではエラーは変わりませんでした。 ありがとうございました。

関連するQ&A

  • 画像 重ねる

    htmlソース <div id="title"> <a href="index.html"><img src="img/logo.png"></a> </div> cssソース #title{ background-image: url(img.jpg); } cssソースに記述してある画像が、htmlソースのリンク付き画像の背景に表示されません。 対処方法をご教示いただけないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • 画像リンクの上に文字リンクを乗せる方法は?

    画像(アイコン)リンクの上にテストで、文字リンクを貼りつけたいのですが、どのようにしたらよいでしょうか? ちなみに、リンク先はphpで読み込ませています。 ソースは <li><a href="<!--{$smarty.const.URL_DIR}-->abouts/index.php"><img src="<!--{$TPL_DIR}-->img/side/about_on.jpg" width="166" height="30" alt="当サイトについて" style="border: none" name="about" id="about" /></a></li> のようになっています。現在、画像(アイコン)リンクはこれで表示できています。 どなたかよろしくお願い致します。

  • 背景が透明なリンクボタンで、透明部分からリンクをさせない方法

    1.pngという背景透明なボタンを作り、そこからonmouseでリンクを含む3種類のjavascriptが走るようにしてありますが、それだけだと、画像の透明部分でもリンクとjavascriptが有効になってしまいます。 画像の透明部分にマウスがあるときは何も起こらず、透明でない部分にマウスが乗った時だけにリンクとjavascriptを実行させることはできませんか? よろしくお願いします。 実際使用しているソースは次の通りです。 -------------------------------------------------- <img border="0" alt="1" src="images/1.png" onclick="location.href='1.htm'" onmousedown="bdown()" onmouseup="bup()" onmouseover="bover(); PP(1)" onmouseout="bout(); PC(1)" id="bimage"/> -------------------------------------------------- ボタンの周囲にアクティブを示す点線の枠を表示させたくないため、リンクにはあえてホットスポットや通常のリンクを使用していません。 よろしくお願いします。

  • 画像にリンクを張ったら、レイアウトが崩れました。

    ホームページを制作しているのですが、リストにして並べた画像にリンクを張ったら、レイアウトが崩れてしまいました。 まず、リンクを張らずにやってみました。 HTML部分 <ul id="main_center"> <li id="1"><img src="http://***.jpg" /></li> <li id="2"><img src="http://***.jpg" /></li> <li id="3"><img src="http://***.jpg" /></li> </ul> CSS部分 #main_center #1,#2,#3 { display: block; width: 220px; height: 20px; list-style-type: none; margin-bottom: 10px; } タグは以上の通りでやったところ、問題なく画像が綺麗に並んだのですが、 <ul id="main_center"> <li id="1"><a href="http://***/"><img src="http://***.jpg" /></a></li> <li id="2"><a href="http://***/"><img src="http://***.jpg" /></a></li> <li id="3"><a href="http://***/"><img src="http://***.jpg" /></a></li> </ul> といった感じで、画像にリンクさせたところ上下に余分なスペースが出来てしまいました。 リンクを張っただけで、レイアウトが崩れてしまうということはあるのでしょうか。 または、なにかタグが間違っているのでしょうか。 どなたかアドバイスをお願いいたします。

    • ベストアンサー
    • HTML
  • PHP PCでログインできたのに、スマホから無理

    PCからは既存アカウントでログインできるのですが、スマホからログインできません。 もちろんスマホ用サイトにも同様のスクリプトを書いております。 PCでは、ブラウザ:Google Chrome スマホのOSは、Android4.3 です。 ログインスクリプトは下記のようなものです。ちなみにこのスクリプトはスマホ用の方です。 -------------------------------------------------------------------------------------------- <?php session_start(); //////////////////// // POST変数の取得 // //////////////////// $login_id = (isset($_POST['login_id']))? $_POST['login_id'] : ""; $password = (isset($_POST['password']))? $_POST['password'] : ""; /* var_dump($login_id); var_dump($password); exit; */ if($login_id!=="" and $password!==""){ //////////////////////// // データベースを検索 // //////////////////////// $con = mysql_connect("~", "~", "~"); mysql_select_db("LAA0471050-shopcart"); mysql_set_charset('utf8'); $sql = "SET NAMES utf-8"; mysql_query($sql); $sql = "SELECT * FROM member_profile;"; $result = mysql_query($sql, $con) or die(mysql_error()); $rowco = mysql_num_rows($result); for($i=0; $i<$rowco; $i++){ $row = mysql_fetch_row($result); // 取得された行に対応する配列を返し、内部のデータポインタを前に進める if($login_id===$row[4] && $password===$row[5]){ // IDとパスワードが両方一致していた場合 $_SESSION['login'] = 1; // ログイン状態にする // setcookie("id", $login_id, time()+60*60*24*365); // アカウント用のクッキーの有効期限は一年間 // setcookie("pass", $password, time()+60*60*24*365); $_SESSION['login_id'] = $login_id; // メールアドレス header("Location: mypage.php?login_id=$login_id"); }else{ // header("Location: login.php"); // echo 'error'; } } mysql_close($con); // データベースとの接続を解除する } ?> <!doctype html> <html> <head><title>ログインページ</title> <meta charset="utf-8"> <!-- ◆ スマートフォン用 --> <meta name="viewport" content="width=device-width, initial-scale=1" /> <!-- jQuery本体--> <script type="text/javascript" src="./jquery/jquery-2.1.3.js"></script> <!-- スマホ用スタイルシート --> <link rel="stylesheet" href="./jquery/jquery.mobile-1.4.5.min.css" /> <!-- スマホ用JavaScript --> <script src="./jquery/jquery.mobile-1.4.5.min.js"></script> </head> <body bgcolor="#FFFFCC"> <br> <?php for($i=0; $i<60; $i++){ echo '&nbsp'; } if($_SESSION['login']!==1){ echo '<a href="membership_form.php"><img src="./images/shinki.png" border="0"></a>'; echo '&nbsp;<a href="login.php"><img src="./images/login.png" border="0"></a>'; }else{ // ログインしてれば echo '<a href="mypage.php"><img src="./images/mypage.png" border="0"></a>'; echo '&nbsp;<a href="logout.php"><img src="./images/logout.png" border="0"></a>'; } ?> <br><br> <?php ////////////// // 表の表示 // ////////////// echo '<center>'; echo '<table width="320" cellpadding="0" cellspacing="0" border="0">'; echo '<tr rowspan="10" width="320">'; // ⇐ このrowspan="14"で、⇒の画像などを幅寄せできる【重要】 echo '<form name="form1" method="post" action="login.php">'; echo '<tr><td><img src="./images/login_bar.png" width="100%"></td></tr>'; echo '<tr><td width="320" height="20" class="line1">ログインID(メールアドレス)</td></tr>'; echo '<tr>'; echo '<td width="320" height="20" align="middle">'; echo '<input type="text" class="yokohaba" name="login_id" id="login_id" size="75" tabindex="1">'; echo '</td>'; echo '</tr>'; echo '<td width="320" height="20" class="line1">パスワード</td>'; echo '</tr>'; echo '<tr>'; echo '<td width="320" height="20" align="middle">'; //echo '<input type="password" class="yokohaba" name="password" id="password" size="75" tabindex="2" value="'.$_COOKIE['pass'].'">'; echo '<input type="password" class="yokohaba" name="password" id="password" size="75" tabindex="2">'; echo '</td>'; echo '</tr>'; echo '<tr><td width="320" height="20" align="middle">'; echo '<a href="JavaScript:document.form1.submit()" onclick="location.href=\'login.php\'"><img src="./images/login_send.png" border="0" tabindex="3" width="100%"></a>'; echo '</td></tr>'; echo '</form>'; echo '</table>'; ?> <br><br> <center><a href="top.php">トップページ</a></center> </center> </body> </html> どこがどう間違っているのか、ご指導お願い致します。

    • 締切済み
    • PHP
  • phpでのリンク

    PHP初心者なのですが、教えて下さいm(__)m プルダウンでの選択史を選ぶと次にまた選択史を表示させたいのですが、PHPを勉強したばかりなのでスマートにソースを書くことができません。 ↓のような感じで一応できたのですが、これはおかしいと言われました。 PHPなのになぜ、リンクのところだけがHTMLになっているの?と。 言われてみればそうなのですが、これ以外よく分からなくて…。 色々調べたのですが、上手くいきませんでした。 <A href="data/hoge.php"><? echo ($hoge_data[0]); ?></A><BR> <A href="data/hoge_1.php"><? echo ($hoge_data[1]); ?></A><BR> : : : このおかげで<hoge.php>、<hoge_1.php>…といっぱい必要になってきてしまい…。 何かスマートな方法はありますでしょうか? 宜しくお願い致しますm(__)m

    • ベストアンサー
    • PHP
  • FC2画像リンクについて

    現在、fc2でホームページを作成しているのですが、画像をクリックすると別のページへ飛べるリンク方法がどうしても上手くいきません。 今は、Root内に「index.html」と「imageフォルダ」そのimageフォルダの中に「image01.png」があります。 このimage01.pngの画像をindexにバナーのように表示し、別ページへリンクさせたいのですがタグのリンク部分の階層でつまづいてしまいました; <a href="別ページのURL"><img src="/image/image01.png" Border="0"></a> このようにしているのですが、画像が表示されず、別ページへのリンクも上手くいきません; index.htmlはPC内でメモ帳を使って作成したものをアップロードしています。 よろしくお願いします><

  • 画像リンクをマウスオーバーで透過画像を重ねる方法

    複数の画像リンクをマウスオーバー時に決まった画像を重ねて表示させたいのですが分かりません。 ご教授頂けないでしょうか。 画像リンクの上にマウスが乗った時に虫眼鏡や再生ボタンが表示される みたいな事がしたいのです。 自分なりに調べた結果画像を上に重ねるところまでは分かったのですが、重なった時点で画像リンクが無効になってしまいます。 方法としては <p class="figure" id="jpg01">   <a href="リンク先" target="_blank"><img src="画像" width="300" height="150" alt=""></a> </p> p.figure{position:relative;} p.figure:after{position:absolute;bottom:0;left:0;} p#jpg01:hover:after{content:url(重ねる画像.png);} としているのですがリンク先に飛ぶことができません。  <a href="リンク先" target="_blank"><p class="figure" id="jpg01">  <img src="画像" width="300" height="150" alt=""> </p></a> とすれば上手くいったのですが不格好な気がします。 ちなみに画像リンクに使いたい画像もそれに重ねたい画像も同じサイズです。 どうかよろしくお願いします。

  • PHP、確認画面の画像を自作の画像をクリックする

    PHP、確認画面の画像を自作の画像をクリックすることで、入力情報の確認表示画面を表示させたいのですが、上手くいきません。今までは入力された情報確認画面の表示で 一番したの方にある<p colspan="2"><input type ="submit" name ="submit"value="確認画面へ"></p> "確認画面へ" というボタンを押すことで次ページに行けたのですが、 "確認画面へ"のボタンをオリジナルの画像(付属画像名sss.png)という画像をクリックして同じように確認画面の次ページに行きたいのですが、以下のコードで <a href="sample2.html"><img src=”sss.png" alt="次へ"></a> で一応画像をクリックすれば、次ページに行けますが情報が送られていません。 <p colspan="2"><input type ="submit" name ="submit"value="確認画面へ"></p> のコードに画像を加えたコードはどう書いたらよいでしょうか? 困っています。回答よろしくお願い致します。 <?php session_start(); $errors = array(); if(isset($_POST['submit'])) { $email = $_POST['email']; if($email === "") { $errors['email'] ="メールアドレスが入力されていません。 "; } if(count($errors) === 0) { $_SESSION['email'] = $email; header('Location:http://◎◎◎.php'); exit(); } } if(isset($_GET['action']) && $_GET['action'] === 'edit'){ $email = $_SESSION['email']; } ?> <!DOCTYPE html> <html> <head> <meta content="text/html; charset=utf-8"/> <title>お問い合わせ</title> <link rel="stylesheet" href="syoki.css"> <style> <?php echo "<ul>";foreach($errors as $value) { echo "<li>"; echo $value; echo "</li>"; } echo "</ul>"; ?> </head> <body> <form action ="hpform1.php" method ="post" class="auto-style1"> <div class="auto-style1"> <p class="px-num"> メールアドレス:※ </p> <input type="text" class="email" name="email" id="email" value="<?php if(isset($email)){ echo $email; } ?>"/> <p></p> <p colspan="2"><a href="sample2.html"></a><input type ="submit" name ="submit"value="確認画面へ"></p> <a href="sample2.html"><img src="next.png" alt="次へ"></a> </form> </body></html>

    • ベストアンサー
    • PHP
  • 画像 表示について質問です。

    画像 表示について質問です。 <?php echo '<a href="A.php"><img src="img/advance.gif" wwidth="80" height="80" style="border-style:none;" onmouseover="this.src="img/returen2.gif";" onmouseout="this.src="img/returen.gif";" /></a>'; ?> と考えたのですが、画像は表示されるもののONマウスの時に画像が変化しません。 どうしてなのでしょうか。

    • ベストアンサー
    • PHP

専門家に質問してみよう