前提・実現したいこと
職業訓練でPHPを学び始めて数か月です。卒業制作でPHPのサイトを作っていました。
通販サイトで商品管理ページ→商品登録情報ページ→商品登録情報編集ページ→更新完了ページ→商品管理ページと移動させたいのですが、更新完了ページにて下記のエラーが発生しました。
定義されていない変数を使おうとしていてエラーになっているのはわかるのですが、なぜ定義されていないかがわかりません。
先生に聞いてみても分からないと言われてしまいました。
また、エラー表示は出ていないものの、更新完了ページに更新後の内容を表示させる部分に何も表示されていませんでした。
エラーを消去し、更新後の情報を表示させるにはどうしたらよいでしょうか?
回答よろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージ Notice: Undefined index: image in C:\xampp\htdocs\originalsite\edit_complete.php on line 29 Notice: Undefined index: image in C:\xampp\htdocs\originalsite\edit_complete.php on line 30
商品登録情報編集ページのソースコード
PHP7.1
1 2<form action="edit_complete.php" method="post"> 3 <?php 4 $code=$_GET['code']; 5 6 $dsn='mysql:dbname=original;host=localhost'; 7 $user='root'; 8 $password=''; 9 $dbh=new PDO($dsn,$user,$password); 10 $dbh->query('SET NAMES utf8'); 11 12 $sql='SELECT*FROM stock_info WHERE code=?'; 13 $date[]=$code; 14 $stmt=$dbh->prepare($sql); 15 $stmt->execute($date); 16 17 while(1){ 18 $rec=$stmt->fetch(PDO::FETCH_ASSOC); 19 if($rec==false){ 20 break; 21 } 22 if($rec['image']!=""){ 23 print "<img src='upload/".$rec['image']."'>"; 24 } 25 print "<input type='text' name='name' value='".$rec['name']."'>"; 26 print $rec['id']; 27 print "<input type='hidden' name='id' value='".$rec['id']."'>"; 28 print "<input type='number' name='price' value='".$rec['price']."'>"; 29 print "<input type='number' name='member_price' value='".$rec['member_price']."'>"; 30 ?> 31 <select name='category'> 32 <option value="1">うまい棒</option> 33 <option value="2">チョコレート類</option> 34 <option value="3">スナック菓子</option> 35 <option value="4">ガム類</option> 36 <option value="5">珍味</option> 37 </select> 38 <?php 39 print "<input type='number' name='stock' value='".$rec['stock']."'>"; 40 print "<input type='radio' name='marketing' value='0'"; 41 if($rec['marketing']==0){ 42 print "checked"; 43 } 44 print ">販売不可"; 45 print "<input type='radio' name='marketing' value='1'"; 46 if($rec['marketing']==1){ 47 print "checked"; 48 } 49 print ">販売可能"; 50 print "<textarea name='description' value='".nl2br($rec['description'])."'></textarea>"; 51 print "<input type='file' name='image'>"; 52 //↑ここに画像ファイルを入れても、完了ページにその画像が届かない 53 } 54 55 $dbh=null; 56 ?> 57 <input type="submit" name="submit" value="編集"> 58</form>
更新完了ページのソースコード
PHP7.1
1<?php 2function h($str){ 3 return htmlspecialchars($str,ENT_QUOTES,"UTF-8"); 4} 5 6$name=$_POST['name']; 7$id=$_POST['id']; 8$price=$_POST['price']; 9$member_price=$_POST['member_price']; 10$category=$_POST['category']; 11$category_id=$category; 12 13$category_master[1]="うまい棒"; 14$category_master[2]="チョコレート類"; 15$category_master[3]="スナック菓子"; 16$category_master[4]="ガム類"; 17$category_master[5]="珍味"; 18 19$category=$category_master[$category]; 20 21$description=$_POST['description']; 22 23$stock=$_POST['stock']; 24 25$marketing=$_POST['marketing']; 26 27//↓画像に関する処理 28$tmp_name=$_FILES['image']['tmp_name']; 29$file_type=$_FILES['image']['type']; 30 31$image_name="torachan".$id.".jpg"; 32 move_uploaded_file($tmp_name,"upload/".$image_name); 33//↑ここまで 34 35 $dsn='mysql:dbname=original;host=localhost'; 36 $user='root'; 37 $password=''; 38 $dbh=new PDO($dsn,$user,$password); 39 $dbh->query('SET NAMES utf8'); 40 41 $sql = "UPDATE stock_info SET name=?, price=?, member_price=?, category_id=?, category=?, description=?, stock=?, marketing=?, image=? WHERE sid='" . $id . "'"; 42 $stmt=$dbh->prepare($sql); 43 $stmt->bindValue('1', $name); 44 $stmt->bindValue('2', $price); 45 $stmt->bindValue('3', $member_price); 46 $stmt->bindValue('4', $category_id); 47 $stmt->bindValue('5', $category); 48 $stmt->bindValue('6', $description); 49 $stmt->bindValue('7', $stock); 50 $stmt->bindValue('8', $marketing); 51 $stmt->bindValue('9', $image_name); 52 $stmt->execute(); 53 $dbh=null; 54?> 55 56<!doctype html> 57<html> 58 <head> 59 <meta charset="utf-8"> 60 <title>商品管理</title> 61 </head> 62 63 <body> 64 更新情報 65 <?php 66 $dsn='mysql:dbname=original;host=localhost'; 67 $user='root'; 68 $password=''; 69 $dbh=new PDO($dsn,$user,$password); 70 $dbh->query('SET NAMES utf8'); 71 $sql='SELECT*FROM stock_info WHERE id="'.$id.'"'; 72 $rec=$stmt->fetch(PDO::FETCH_ASSOC); 73 $stmt=$dbh->prepare($sql); 74 $stmt->execute(); 75 76 //↓ここから下が表示されない 77 //$recからのデータ抽出をwhileでループさせる 78 if($rec['image']!=""){ 79 print "<img src='upload/".$rec['image']."'>"; 80 } 81 print $rec['name']; 82 print $rec['id']; 83 print $rec['name']; 84 print $rec['price']; 85 print $rec['member_price']; 86 print $rec['category_id']; 87 print $rec['category']; 88 print $rec['description']; 89 print $rec['stock']; 90 print $rec['marketing']; 91 92 $dbh=null; 93 94?> 95 </body> 96</html>
試したこと
何を試せばいいのかさえ分かりませんでした。
補足情報(FW/ツールのバージョンなど)
データベース:MySQL
データベース名:original
テーブル名:stock_info
カラム名:code,name,id,price,member_price,category_id,category,description,stock,marketing,image
回答3件
あなたの回答
tips
プレビュー