前提・実現したいこと
画像(背表紙)をクリックすると詳細が現れるというプログラムを書いています。
script内で実行している詳細を示す関数での挙動がうまくいきません。
下のプログラムではまずconsole.log()で引数を正しく受け取れているかを確認しようとしています。
DB内にはidとimage(画像データ)とimage_name(画像の名前(output_1.jpg以降数字が昇順となり続く))が格納されています。
SQL文で$resultに全てのデータを格納しています。
発生している問題・エラーメッセージ
console.log(js_array)での出力
console.log(js_array[image_name]での出力
undefind Uncaught ReferenceError: image_name is not defined
該当のソースコード
php
1<?php 2 //データベース接続用変数 3 $host = "xxxx"; 4 $dbname = "yyyy"; 5 $user = "wwww"; 6 $pass = "zzzz"; 7 8 //データベース接続 9 try{ 10 $dbh = new PDO( 11 //サーバー名、データベース名、文字エンコード 12 "mysql:host=$host;dbname=$dbname;charset=UTF8", 13 //ユーザ名 14 $user, 15 //パスワード 16 $pass, 17 //オプション 18 array( 19 //例外発生時スローを指定 20 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 21 //静的プレースホルダの指定 22 PDO::ATTR_EMULATE_PREPARES => false, 23 ) 24 ); 25 26 //SQL文実行準備 27 $prepare = $dbh -> prepare('SELECT * FROM book_image'); 28 //実行 29 $prepare -> execute(); 30 //データ取得 31 $result = $prepare -> fetchAll(PDO::FETCH_ASSOC); 32 }catch (PDOException $e){ 33 //例外処理 34 $error = $e -> getMessage(); 35 } 36 37?> 38<!DOCTYPE html> 39<html lang="en"> 40 <head> 41 <meta charset="utf-8"> 42 <title>Ring Web Application Inner</title> 43 <meta http-equiv="X-UA-Compatible" content="chrome=IE8"> 44 <link rel="stylesheet" type="text/css" href="bookinterfacestyle.css"/> 45 <!-- <script src="javascript/ring.js" type="text/javascript" charset="utf-8"></script> --> 46 <script> 47 function onDetails(){ 48 var js_array = <?php echo $json_array ?> 49 console.log(js_array[image_name]); 50 } 51 </script> 52 </head> 53 <body> 54 <div id = "interface"> 55 <div id = "search"></div> 56 <div id = "books"> 57 <?php foreach($result as $res): ?> 58 <?php $json_array = json_encode($res) ?> 59 <?php $img = base64_encode($res[image]) ?> 60 <img src = "data:image/jpg;base64,<?php echo $img ?>" alt = "<?php echo $res[image_name] ?>" onClick = "onDetails()"> 61 <?php endforeach ?> 62 </div> 63 </div> 64 <div id = "details"> 65 <div id = "title"></div> 66 <div id = "author"></div> 67 <div id = "category"></div> 68 <div id = "images"> 69 <div id = "beforeImage"></div> 70 <div id = "afterImage"></div> 71 </div> 72 <div id = "content"></div> 73 </div> 74 </body> 75</html>
試したこと
引数を$res[image_name]とし、console.log()を実行すると正しく表示されます。
nなのでjson形式に変換しているところ付近でのミスかと思います。
補足情報(FW/ツールのバージョンなど)
20/12/28 19:30 ソースコード(DB接続部分)を追記しました。
回答2件
あなたの回答
tips
プレビュー