7月1日の業務報告

こんばんは。B3の岩井です。
もうすぐ提出なんですね。
遠回りのように思えますが、今何をやってるのか理解するとプログラミングはだいぶ楽になることがありますよ。

本日の質問と回答です。
=======================================
<知識情報演習I>
Q1. HTMLのフォームで入力したキーワードがCGIでどのように使われるのか分からない。
A1. 演習のテキストを参照してプログラムの流れを説明しました。

Q2. 検索結果が表示されず、真っ白な画面になってしまう。
A2. アクセスしようとしていたデータベースのパーミッションの設定が適切でなかったので、指摘して直してもらいました。

Q3. データベースにあるはずのテーブルがない。
A3. 開こうとしているデータベースを保存しているディレクトリと異なるディレクトリ上で開こうとしていたため、指摘しました。

Q4. 日本語を含む文字列をsplitメソッドで分割できない。
A4. 文字コードを指定していなかったため、指摘しました。

Q5. 部分一致のためにキーワードの前後に「%」を追加したい(例:「%図書館%」)が、
どのように追加すればいいのか分からない。
A5. HTML側で入力したキーワードはCGI側では変数に入っていると思いますので、
その変数に入っているキーワードの前後に「%」を追加して、変数に入れ直す、あるいは新しい変数に入れてくださいと答えました。

Q6. 検索結果が表示されない。
A6. printfメソッドでの指定が間違っていたため、指摘しました。

Q7. 部分一致で検索するために、キーワードの前後に「%」を入れたいが、どのようにすればいいか。
A7. 複数の文字列をつなげるアイディアはないか尋ねたところ、+(プラス)演算子を用いてみたができなかったと言っていました。
どのようにプログラムを書いたのか確認したところ、記述に誤りがありました。
「%」を文字列として認識できるように、プログラムを修正してくださいと答えました。

Q8. 書誌レコードをデータベース化するプログラムを作ったが、エラーが出てしまう。
A8. プログラムの流れを一緒に確認しているときに、質問者が変数名のスペルミスがあることに気付きました。
変数名を書き直したら、実行できるようになりました。

Q9. 第2回テキストp2に載っているSQLの例(create文)に書いてある「integer」や「text(20)」とは何か。
A9. テーブルを定義する時はカラム毎にデータ型を指定することができます。
例えば、SQL文: create table sample1( id integer, name text(20)); の場合、カラム名 id は符号付き整数、カラム名 name はテキスト(最大文字数20文字)を指定していることになります。

Q10. 題名検索がうまくいかない。
A10. まずどこに原因があるのか探す手法としてifなどを使っている場合は{ }の中で何か文字列を表示してみることを伝えました。そうして原因を探っていくと入力された題名が正しく受け取れていないことがわかったので代入の部分の記述をなおしたところうまく動きました。

Q11. タイトルを入れると検索ができるけど著者を入れると検索ができない。
A11. データベースを検索するときの式を記述する部分で、検索式の中で変数を受け取るための”?”が2つあるのにわたす変数が1つであったので、たとえ同じものをわたす場合でも変数は”?”の数と同じだけ指定してやらなければならないと伝えました。

Q12. データベースへの格納ができない。
A12. 格納のためにjbisc10.txtを変換して”|”で区切る形のものを表示するプログラムはできていましたが、それでファイルを出力してそのファイルを入力するということがわかっていなかったのでその方法についてテキストをみながら確認しました。

回答 Q1~6:鈴木、Q6-9:栗山、Q10-Q12:岩井
=======================================

エラーと戦うことが多くあるでしょうがなかよくしてあげてください。自分の書いたプログラムと。
エラーばっかり言う子はうちの子じゃありませんなんて言わないで。

(文責:岩井)