表格的日期和照片插入mysql table的問題

Home Home
引用 | 編輯 獨吾洋
2008-04-17 14:32
樓主
推文 x0
假設我做個form

想要儲存日期和照片到mysql資料庫裡

index.tpl
複製程式
<html>
<body>
<h2>Add your details</h2>

<form method="post" action=".">
<table border=1>
       <tr>
              <td>Name</td>
              <td><input type="text" name="name"></td>
       </tr>
       </tr>
       <tr>
              <td>Location</td>
              <td><input type="text" name="location"></td>
       </tr>
       <tr>
              <td>Email</td>
              <td><input type="text" name="email"></td>
       </tr>
       <tr>
              <td>Date of Birth</td>
              <td>
                     <select name="month">
                     <option value="-1" selected>Month</option>
                     <option value="01">Jan</option>
                     <option value="02">Feb</option>
                     <option value="03">Mar</option>
                     <option value="04">Apr</option>
                     <option value="05">May</option>
                     <option value="06">Jun</option>
                     <option value="07">Jul</option>
                     <option value="08">Aug</option>
                     <option value="09">Sep</option>
                     <option value="10">Oct</option>
                     <option value="11">Nov</option>
                     <option value="12">Dec</option>
                     </select>
              
                     <select name="day">
                     <option value="-1" selected>Day</option>
                     <option value="01">01</option>
                     <option value="02">02</option>
                     <option value="03">03</option>
                     <option value="04">04</option>
                     <option value="05">05</option>
                     <option value="06">06</option>
                     <option value="07">07</option>
                     <option value="08">08</option>
                     <option value="09">09</option>
                     <option value="10">10</option>
                     <option value="11">11</option>
                     <option value="12">12</option>
                     <option value="13">13</option>
                     <option value="14">14</option>
                     <option value="15">15</option>
                     <option value="16">16</option>
                     <option value="17">17</option>
                     <option value="18">18</option>
                     <option value="19">19</option>
                     <option value="20">20</option>
                     <option value="21">21</option>
                     <option value="22">22</option>
                     <option value="23">23</option>
                     <option value="24">24</option>
                     <option value="25">25</option>
                     <option value="26">26</option>
                     <option value="27">27</option>
                     <option value="28">28</option>
                     <option value="29">29</option>
                     <option value="30">30</option>
                     <option value="31">31</option>
                     </select>
              
                     <select name="year">
                     <option value="-1" selected>Year</option>
                     <option value="1994">1994</option>
                     <option value="1993">1993</option>
                     <option value="1992">1992</option>
                     <option value="1991">1991</option>
                     <option value="1990">1990</option>
                     <option value="1989">1989</option>
                     <option value="1988">1988</option>
                     <option value="1987">1987</option>
                     <option value="1986">1986</option>
                     <option value="1985">1985</option>
                     <option value="1984">1984</option>
                     <option value="1983">1983</option>
                     <option value="1982">1982</option>
                     <option value="1981">1981</option>
                     <option value="1980">1980</option>
                     <option value="1979">1979</option>
                     <option value="1968">1978</option>
                     <option value="1977">1977</option>
                     <option value="1976">1976</option>
                     <option value="1975">1975</option>
                     <option value="1974">1974</option>
                     <option value="1973">1973</option>
                     <option value="1972">1972</option>
                     <option value="1971">1971</option>
                     <option value="1970">1970</option>
                     </select>
              </td>
       <tr>
              <td>Gender</td>
              <td>
                     <input type="radio" name="gender" value="m">Male
                     <input type="radio" name="gender" value="f">Female
              </td>
       </tr>
       <tr>
              <td>Photo</td>
              <td><input type="file" name="upload_photo"></td>
       </tr>
       <tr>
              <td></td>
              <td align="right"><input type="submit" value="Sign up"></td>
       </tr>
</table>
</form>

<hr>

<h2>Member List</h2>

{if count($members) == 0}
<p>No members found.</p>
{else}
{foreach from=$members item=member}
       <ul> 
              <li>{$member.name}, {$member.location}, {$member.gender}</li>
       </ul>
{/foreach}
{/if}

</body>
</html>


index.php
複製程式
<?php
require "/usr/local/Smarty/libs/Smarty.class.php";
require "includes/defs.php";

$name = $_POST['name'];
$location = $_POST['location'];
$email = $_POST['email'];
$birthday = $_POST['year']."-".$_POST['month']."-".$_POST['day'];
$gender = $_POST['gender'];

$tmpName = $_FILES['upload_photo']['tmp_name'];

$fp = fopen($tmpName, 'r');
$photo = fread($fp, filesize($tmpName));
$photo = addslashes($photo);
fclose($fp);


if (!empty($name)){
       add_member($name, $location, $email, $birthday, $gender, $photo);
}


$smarty = new Smarty();
$smarty->assign('members', $members);

$smarty->display('index.tpl');
?>


defs.php
複製程式
<?php
function showerror() {
       die("Error ". mysql_errno() . " : " . mysql_error());
}

function add_member($name, $location, $email, $birthday, $gender, $photo){
       $connection = @ mysql_connect("mysql", "s2603948", "FHpRgXTG")
       or die("Could not connect");
       mysql_select_db("s2603948db", $connection) or showerror();
       
       $insert = "insert into temp values" .
       "(null, '$name', '$location', '$email', '$birthday', '$gender', '$photo')";
       $result = @ mysql_query ($insert, $connection) or showerror();
       mysql_close($connection) or showerror();
}

function is_member() {
       $connection = @ mysql_connect("mysql", "s2603948", "FHpRgXTG")
       or die("Could not connect");
       mysql_select_db("s2603948db", $connection) or showerror();
       
       $query = "select * from temp order by id";
       $result = @ mysql_query($query, $connection) or showerror();
       
       $members = array();
       while ($row = mysql_fetch_array($result)) {
              $members[] = $row;
       }
       mysql_close($connection) or showerror();
       return $members;
}
?>


mysql table
複製程式
mysql> create table temp (id int(4) auto_increment,
    -> name varchar(40),
    -> email varchar(40),
    -> birthday date default 񟍰-00-00',
    -> gender char(1),
    -> photo blob,
    -> primary key (id));
Query OK, 0 rows affected (0.05 sec)


獻花 x0
引用 | 編輯 andyz
2008-04-17 19:46
1樓
  
$birthday= $bthY."-".$bthM."-".$bthD;
檔案在SQL裡面
不是存檔案
是存路徑
存你上傳檔案在SERVER的路徑
$photo = $_FILES['upload_photo']['name'];
move_uploaded_file($_FILES['upload_photo']['tmp_name'],$_FILES['upload_photo']['name']);


$insert ="INSERT INTO temp(birthday ,photo ) VALUES ('$birthday','$photo') ";

還有
不要用function
你寫的一個function
但是你又沒有呼叫它
它就不會去跑

獻花 x1
引用 | 編輯 獨吾洋
2008-04-17 21:49
2樓
  
下面是引用andyz於2008-04-17 19:46發表的 :
$birthday= $bthY."-".$bthM."-".$bthD;
檔案在SQL裡面
不是存檔案
是存路徑
存你上傳檔案在SERVER的路徑
$photo = $_FILES['upload_photo']['name'];
move_uploaded_file($_FILES['upload_photo']['tmp_name'],$_FILES['upload_photo']['name']);


$insert ="INSERT INTO temp(birthday ,photo ) VALUES ('$birthday','$photo') ";

還有
不要用function
你寫的一個function
但是你又沒有呼叫它
它就不會去跑


現在插入日期的問題應該是有解決了
利用$_POST['year']."-".$_POST['month']."-".$_POST['day'];
我用select * from temp;查的時候也有顯示
但是photo的部分還是空白這樣是對的嗎?

謝謝版主~這裡真是靠你撐起半邊天!! 表情
不知道你有沒有在教人
好想跟你學喔 QQ

獻花 x0
引用 | 編輯 andyz
2008-04-17 22:34
3樓
  
-> photo blob,
改 photo char(128) 試試

跟我學喔~
不好啦
我鐘點費很貴的
而且你又是學生
收太貴會不好意思

獻花 x0
引用 | 編輯 獨吾洋
2008-04-17 23:11
4樓
  
下面是引用andyz於2008-04-17 22:34發表的 :
-> photo blob,
改 photo char(128) 試試

跟我學喔~
不好啦
我鐘點費很貴的
而且你又是學生
收太貴會不好意思

可是其實photo用blob
是照我要交的報告要求做的
可以用blob做嗎?

呵呵~
鐘點費貴的話
真的付不起 ~"~
不過像你這麼厲害
應該也有從事相關行業了吧

獻花 x0
引用 | 編輯 andyz
2008-04-18 11:23
5樓
  
如果是造你的方式做的話

這兩行
$photo = $_FILES['upload_photo']['name'];
move_uploaded_file($_FILES['upload_photo']['tmp_name'],$_FILES['upload_photo']['name']);

改成

$photo = $_FILES['upload_photo']['tmp_name'];

因為blob可以存圖片
但是有檔案大小的限制
試試看傳檔案較小的圖片

獻花 x0
引用 | 編輯 獨吾洋
2008-04-18 22:34
6樓
  
下面是引用andyz於2008-04-18 11:23發表的 :
如果是造你的方式做的話

這兩行
$photo = $_FILES['upload_photo']['name'];
move_uploaded_file($_FILES['upload_photo']['tmp_name'],$_FILES['upload_photo']['name']);

改成

$photo = $_FILES['upload_photo']['tmp_name'];

因為blob可以存圖片
但是有檔案大小的限制
試試看傳檔案較小的圖片


那請問我要如何確定有上傳到資料庫了?
print_r也只有看到檔案名稱而已
我用command select * from temp
photo field沒有任何東西顯示
這樣是正常的嗎

獻花 x0
引用 | 編輯 andyz
2008-04-19 17:02
7樓
  
用WEB介面試試看
看會不會出現圖片

或者用 phpmyadmin去看資料庫

獻花 x0
引用 | 編輯 獨吾洋
2008-04-20 12:15
8樓
  
下面是引用andyz於2008-04-19 17:02發表的 :
用WEB介面試試看
看會不會出現圖片

或者用 phpmyadmin去看資料庫

我用phpMyAdmin瀏覽那表格的內容
photo field還是沒有東西 (0 Byte)
哪裡出了錯?
我更新我最新的code給你看
麻煩一下了...
謝謝!!!!

獻花 x0
引用 | 編輯 andyz
2008-04-20 13:10
9樓
  
try this

$tmpName = $_FILES['upload_photo']['tmp_name'];

$fp     = fopen($tmpName, 'r');
$photo = fread($fp, filesize($tmpName));
$photo = addslashes($photo);
fclose($fp);

and then write that to your sql

remember!!
upload file must < 64 kilobytes

獻花 x0
引用 | 編輯 獨吾洋
2008-04-21 07:18
10樓
  
下面是引用andyz於2008-04-20 13:10發表的 :
try this

$tmpName = $_FILES['upload_photo']['tmp_name'];

$fp     = fopen($tmpName, 'r');
$photo = fread($fp, filesize($tmpName));
$photo = addslashes($photo);
fclose($fp);

and then write that to your sql

remember!!
upload file must < 64 kilobytes

still no working...
我把你這段code放在index.php
$gender的下面
我上面index.php有更新


還有不好意思我可以額外問另一個問題嗎
就是依我的網頁首頁你可以知道我有做個member list
但只有一行summary
有name, location, gender
然後我現在想要做個連結
去完整敘述那個會員的基本資料
所以我想是再做個php網頁
然後一樣連結到database
$connection....;
mysql_select_db....;
$query = "select * from temp where id = id";
問題就出在我如何知道user點哪一個會員在首頁的時候

之後知道如何擷取該會員資料
就在同一個php裡的下面
寫個table去display就可以了吧?


我原本是想是不是可以像網址常看到的php?id=...
所以我就寫這樣
in index.tpl
複製程式
{foreach from=$members item=member}
       <ul> 
              <li>{$member.name}, {$member.location}, {$member.gender}</li>
                     <a href="./details.php?id={$member.id}">more</a>
       </ul>
{/foreach}
但是好像沒用
我在details.php想說print_r或echo看有沒有id傳過來也沒有
所以我到底要怎麼利用這id?

獻花 x0
引用 | 編輯 andyz
2008-04-21 11:36
11樓
  
那麼參考這個
$PSize = filesize($Picture);
$mysqlPicture = addslashes(fread(fopen($Picture, "r"), $PSize));
mysql_connect($host,$username,$password) or die("Unable to connect to SQL server");
@mysql_select_db($db) or die("Unable to select database");
mysql_query("INSERT INTO Images (Image) VALUES '($mysqlPicture')") or die("Can't Perform Query");


你的list作好後

連結做成這樣
xxxxxxxxx.php?id=$id
這樣就可以把id的參數傳過去

獻花 x0
引用 | 編輯 獨吾洋
2008-04-21 18:43
12樓
  
下面是引用andyz於2008-04-21 11:36發表的 :
那麼參考這個
$PSize = filesize($Picture);
$mysqlPicture = addslashes(fread(fopen($Picture, "r"), $PSize));
mysql_connect($host,$username,$password) or die("Unable to connect to SQL server");
@mysql_select_db($db) or die("Unable to select database");
mysql_query("INSERT INTO Images (Image) VALUES '($mysqlPicture')") or die("Can't Perform Query");


你的list作好後

連結做成這樣
xxxxxxxxx.php?id=$id
這樣就可以把id的參數傳過去

複製程式
<ul> 
       <li>{$member.name}, {$member.location}, {$member.gender}</li>
       <p><a href="./details.php?id=${$member.id}">more</a></p>
</ul>

連結是像這樣嗎?
那我在details.php裡面如拿取id
是像 $id = $_GET['id']; 這樣嗎?

獻花 x0
引用 | 編輯 andyz
2008-04-21 19:27
13樓
  
right

獻花 x0