เพิ่มเติม Project จากของเก่า เว็ปบริการ Upload/Download Files ครับ มีข้อกำหนด เพิ่้มเติมขึ้นมาจากของเดิม
คือข้อกำหนด จากของเดิม สิ่งที่ต้่องทำได้ สิ่งที่ต้องมี
**** สิ่งที่ทำได้แล้ว ****
เมื่อ User Login เข้ามาแล้ว จะสามารถทำการ Download/Upload ได้ (อันนี้ทำได้แล้ว)
เมื่อมีการ Upload Files จะมีการจัดเก็บเวลา แล้วแสดงเวลาที่ทำการ Upload (อันนี้ได้แล้วครับ)
เมื่อ Login เข้ามาแล้ว จะโชว์ session ระบุตัวตน ว่าใช่คนที่ Login เข้ามาไหม (อันนี้ได้แล้วครับ)
เช็ค user/pass ถ้าตรงก็จะสามารถ Login เข้าได้ ถ้าไม่ตรงก็ไม่สามารถ Login ได้ (อันนี้ได้แล้วครับ)
**** สิ่งที่ยังทำไม่ได้ ****
เมื่อ User Login เข้ามา จะแบ่งสถานะออก เป็น admin/user (อันนี้ยังไม่ได้ครับ)
เมื่อ User Login เข้ามา จะเห็นเพียงแค่ไฟล์ของตัวเองที่ได้ Upload ไป ไฟล์คนอื่นจะไม่สามารถเห็น (อันนี้ยังไม่ได้ครับ)
เมื่อมีการสมัครสมาชิก ให้มีการ จัดเก็บเวลา ที่ีมีการสมัครสมาชิคด้วย (อันนี้ยังไม่ได้ครับ)
เมื่อมีการกด Click Download จะมีการจัดเก็บ เวลา/และจำนวนครั้งที่ดาวโหลด (อันนี้ยังไม่ได้ครับ)
Table Database
*** member ***
- UserID (PK)
- Username
- Password
- Name
- Date(Register) เก็บเวลาที่สมัครสมาชิก
- Type ระบุว่า เป็น นักศึกษา,พ่อค้า
- Status ระบุว่าเป็น admin/user
*** File ***
- IDFiles (PK)
- Name
- Mime
- Size
- Data
- Create เก็บเวลาที่มีการอัพโหลดไฟล์
- UserID (FK) จะได้รู้ว่า ใครเป็นคน Upload
*** SumDonwload ***
- UserID
- IDFiles
- Date เก็บเวลาที่มีการดาวโหลดไฟล์
ในส่วนของ Database ต้องแก้ ส่วนไหนบ้างไหมครับ
get_files (คือการดาวโหลดไฟล์)
Code (PHP)
<?php
// Make sure an ID was passed
if(isset($_GET['id'])) {
// Get the ID
$id = intval($_GET['id']);
// Make sure the ID is in fact a valid ID
if($id <= 0) {
die('The ID is invalid!');
}
else {
// Connect to the database
$dbLink = new mysqli('localhost', 'root', 'root', 'magicbox');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}
// Fetch the file information
$query = "SELECT `mime`, `name`, `size`, `data`
FROM `file`
WHERE `id` = {$id}";
$result = $dbLink->query($query);
if($result) {
// Make sure the result is valid
if($result->num_rows == 1) {
// Get the row
$row = mysqli_fetch_assoc($result);
// Print headers
header("Content-Type: ". $row['mime']);
header("Content-Length: ". $row['size']);
header("Content-Disposition: attachment; filename=". $row['name']);
// Print data
echo $row['data'];
}
else {
echo 'Error! No image exists with that ID.';
}
// Free the mysqli resources
@mysqli_free_result($result);
}
else {
echo "Error! Query failed: <pre>{$dbLink->error}</pre>";
}
@mysqli_close($dbLink);
}
}
else {
echo 'Error! No ID was passed.';
}
?>
list_file (คือหน้าที่โชว์ไฟล์ที่ให้ดาวโหลดได้)
Code (PHP)
<?php
session_start();
?>
<?php
// Connect to the database
$dbLink = new mysqli('localhost', 'root', 'root', 'magicbox');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}
// Query for a list of all existing files
$sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM `file`';
$result = $dbLink->query($sql);
// Check if it was successfull
if($result) {
// Make sure there are some files in there
if($result->num_rows == 0) {
echo '<p>There are no files in the database</p>';
}
else {
// Print the top of a table
echo '<table width="100%">
<tr>
<td><b>Name</b></td>
<td><b>Mime</b></td>
<td><b>Size (bytes)</b></td>
<td><b>Created</b></td>
<td><b> </b></td>
</tr>';
// Print each file
while($row = $result->fetch_assoc()) {
echo "
<tr>
<td>{$row['name']}</td>
<td>{$row['mime']}</td>
<td>{$row['size']}</td>
<td>{$row['created']}</td>
<td><a href='get_file.php?id={$row['id']}'>Download</a></td>
</tr>";
}
// Close table
echo '</table>';
}
// Free the result
$result->free();
}
else
{
echo 'Error! SQL query failed:';
echo "<pre>{$dbLink->error}</pre>";
}
// Close the mysql connection
$dbLink->close();
?>
<html>
<head>
<title>User Login</title>
<link rel="stylesheet" type="text/css" href="styles.css" />
</head>
<body>
<table border="0" cellpadding="10" cellspacing="1" width="500" align="center">
<tr class="tableheader">
<td align="center"></td>
</tr>
<tr class="tablerow">
<td>
<?php
if($_SESSION["Username"]) {
?>
Welcome <?php echo $_SESSION["Username"]; ?>. Click here to <a href="index.html" tite="Logout">Logout.
<?php
}
?>
</td>
</tr>
</body>
</html>
login.php (คือหน้าที่ใช้ในการเข้าสู่ระบบ)
Code (PHP)
<?php
session_start();
mysql_connect("localhost","root","root");
mysql_select_db("magicbox");
$strSQL = "SELECT * FROM member WHERE Username = '".trim($_POST['Username'])."' and Password = '".trim($_POST['Password'])."'";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
if(!$objResult)
{
echo "Username and Password Incorrect!";
}
else
{
$_SESSION["Username"] = $objResult["Username"];
session_write_close();
header("location:add_file.php");
}
mysql_close();
?>
Tag : PHP, MySQL, HTML/CSS
Date :
2014-11-11 11:27:38
By :
xgabpyz
View :
2418
Reply :
38
รบกวนหน่อยนะครับ
เหลือแค่บางข้อ ยังทำออกมาไม่ได้
Date :
2014-11-11 12:49:55
By :
xgabpyz
เมื่อ User Login เข้ามา จะแบ่งสถานะออก เป็น admin/user (อันนี้ยังไม่ได้ครับ)
-เมื่อ login ผ่านก็ให้เก็บ status = $_SESSION["status"] = $objResult["status"];
$_SESSION["id"] = $objResult["UserID"]; // เก็บ id ด้วยจะได้เอาไปใช้ในการตรวจสอบว่าใครอัพ
แล้วก็เอา ไปเทียบว่าเป็น user หรือ admin
เมื่อ User Login เข้ามา จะเห็นเพียงแค่ไฟล์ของตัวเองที่ได้ Upload ไป ไฟล์คนอื่นจะไม่สามารถเห็น (อันนี้ยังไม่ได้ครับ)
-เวลาจะเเสดงเฉพาะของคนๆนั้น ก็ใส่ WHERE UserID='ไอดีคนอัพ' ที่เก็บมาจาก session ข้างบน
ลองดูนะคับ
ประวัติการแก้ไข 2014-11-11 15:18:22
Date :
2014-11-11 15:15:38
By :
esthook
ก็เขียนนำข้อมูลมาโชว์ปกตินั้นละครับ เขียนดึงจากฐานข้อมูลยังไงก็ทำอย่างนั้นแต่เวลาเลือกใช้แบบเช็ค SESSION id ก็จะเจอเฉพาะของคนๆนั้น
Code (PHP)
<?
$DownloadSQL = "select * from download where t_userid='".$_SESSION["userid"]."' and t_cat='".$av_cat."'";
$DownloadQRY = mysql_db_query($dbname, $DownloadSQL);
$t=0;
while($DownloadRS = mysql_fetch_object($DownloadQRY)){
$t_id = $DownloadRS -> t_id;
$t_userid = $DownloadRS -> t_userid;
$t_cat = $DownloadRS -> t_cat;
$t_name = $DownloadRS -> t_name;
$t_file = $DownloadRS -> t_file;
$t_detail = $DownloadRS -> t_detail;
$t++;
?>
ตัวอย่างประมาณนี้นะครับ
Date :
2014-11-11 21:50:56
By :
LAGO
ในส่วนของการ upload file ควรมีตารางมากับว่า ใครเป็น โหลด เพื่อ ใช้ในการอ้างอิงครับ
อัพโหลดเข้า folder เดียวกัน แต่ไม่ได้เก็บ ว่าใครเป็นคนโหลด มันก็ ตรวจสอบไ่ม่ได้
หรือ ไม่ต้อง ตาราง แต่การเซฟ อาจต้องใช้ รหัสของผู้ล๊อคอิน มาเป็นตัวกำหนดชื่อ ร่วมด้วย
เช่น id 123
ชื่อไฟล์ ก็เป็น custom123_yymmdd_rng0-1000.jpg
เพื่อใช้ในการอ้างอิงได้ครับ
foreach( glob('custom123*.*') as $fileName){
}
Date :
2014-11-12 20:27:39
By :
Chaidhanan
กำ ตอนนี้แก้ไป แก้มา พอกดสมัครสมาชิกแล้ว ข้อมูลเข้า database แค่ช่อง Name งงเลย
ช่อง Username Password Status ว่างเปล่างะ งงเลย
Code (PHP)
<?php
if( $_POST )
{
$con = mysql_connect("localhost","root","root","magicbox");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("magicbox", $con);
$Username = $_POST['Username'];
$Password = $_POST['Password'];
$Name = $_POST['Name'];
$Username = mysql_real_escape_string($Username);
$Password = mysql_real_escape_string($Password);
$Name = mysql_real_escape_string($Name);
$query = "INSERT INTO member VALUES('','$Username', '$Password', '$Name');";
mysql_query($query);
echo "<h2>Thank you for your Register!</h2>";
echo "<br> Go to <a href='index.html'>Login page</a>";
mysql_close($con);
}
?>
Date :
2014-11-12 20:49:16
By :
xgabpyz
ตอนนี้กด register ไม่เข้าฐานข้อมูลเลยครับ ไม่รู้ไปแก้ไรผิด
ตอนแรกไปแก้ไข Database แต่ตอนนี้ก็แก้ชื่อตัวแปร ตรงหมดแล้ว
แต่ก็ยังไม่ได้ ตอนแรกไปเพิ่ม Status มาครับ
Date :
2014-11-12 21:46:08
By :
xgabpyz
Could not connect: Can't connect to MySQL server on 'angsila.informatics.buu.ac.th' (111)
หมายความว่าไงครับ อันนี้ลองอัพลง Server แล้ว ลองแก้ไขแล้ว มันขึ้นแบบนีอะครับ
Date :
2014-11-12 22:29:14
By :
xgabpyz
เชื่อมต่อไม่ได้ครับ ในส่วนโค้ดของคุณเขียนมานั้นใช้ได้ปกติครับไม่ผิด ลองไปดูตัวแปรที่ฟอร์มกรอกข้อมูลดูครับว่าตรงกันหรือเปล่า อันนี้ลองแล้วปกติดีครับ
Date :
2014-11-13 00:28:36
By :
LAGO
ไม่อยากพูดตามตรง โค้ดพวกนี้ คุณควรเข้่าใจเหตุผล
**** สิ่งที่ยังทำไม่ได้ ****
เมื่อ User Login เข้ามา จะแบ่งสถานะออก เป็น admin/user (อันนี้ยังไม่ได้ครับ)
เมื่อ User Login เข้ามา จะเห็นเพียงแค่ไฟล์ของตัวเองที่ได้ Upload ไป ไฟล์คนอื่นจะไม่สามารถเห็น (อันนี้ยังไม่ได้ครับ)
เมื่อมีการสมัครสมาชิก ให้มีการ จัดเก็บเวลา ที่ีมีการสมัครสมาชิคด้วย (อันนี้ยังไม่ได้ครับ)
เมื่อมีการกด Click Download จะมีการจัดเก็บ เวลา/และจำนวนครั้งที่ดาวโหลด (อันนี้ยังไม่ได้ครับ)
อยากจะบอกว่าทำไมต้องทำทีละขั้น ทำไมไม่คิดก่อนทำ
เหตุผลของคุณคืออะไร คุณแก้โค้ดคนอื่น? คุณพัฒนาเองทั้งหมด? คุณแค่ทำตามงานที่ได้รับ?
มี่บางข้อที่ผมเคยทำ และ ควรได้รับการทดสอบว่าทำได้ตามนั้นหรือไม่ ผมจะไม่ช่วยคนโขมยโค้ดคนดื่น ผมจะช่วยคนพัฒนาด้วยตัวเองและมีปัญหาจริงๆ ผมจะบอกว่าคนที่พัฒนาด้วยตั้วเองเรื่องพวกนี้เบบี้มากๆ
Date :
2014-11-13 00:36:40
By :
pjgunner.com
โอเค คุณบอกความจริงแสดงว่ามีความจริงใจส่วนหนึ่ง
ผมบอกให้ว่า บางทีุถ้าคุณทำเองตั้งแต่เริ่ม คุณฉลาดและเข้าใจในหลายๆเรื่อง ผมว่าอาจจะง่ายกว่าเอาโค้ดคนอื่นมาใช้
ลองพิจารณาดูครับ ผมไม่ได้ว่าคุณเลว แต่คุณบอกความจริง ผมนับถือที่คุณยอมรับ
จริงๆ อยากใบ้ว่า คุณเข้่าใจส่วนใหญ่แล้วแต่บางส่วนต้องทดสอบด้วยตัวเอง
จริงๆ แล้วผมเกรงว่าเวลามี aec จริงๆ คุณจะไม่สามารถแข่งขันกับประเทศที่ สามาถเข้าใจภาษา อังกฤษได้
อืม เรื่องนี้ไม่ยากครับ เพียงแต่ระบบที่คุณได้มา มันไม่ได้ออกแบบตามที่คุณเต้องการตั้งแต่แรก
ผมไม่อยาจะบอกว่าผมไม่เคยโขมยงานคนอื่นเป็นเวลา 7 ปี อันดับแรก คุณต้องเข้าในว่า ฐานข้องมูลระบบนั้น ขาดตรงๆไหนที่คุณจะเพิ่มเติม
2 คุณต้องวิเคราะห์รูปแบบนั้น ให้ถ่องแท้เพื่อคุณจะสามารถปรับปรุงหรือแก้ไขได้ หรือเปลี่ยนแปลงทั้งหมดได้
แค่นี้เอง อยากจะบอกว่าอนาคต โปรแกรมเมอร์ไทย ต้องคิดด้วยตัวเอง การโขมยผมไม่เคยทำ แต่จะบอกว่า แค่ทำเว็บอย่างเดียว ไม่รอดครับ
เพราะการแข่งขันสูง ถ้าอยากคุยเรื่องส่วนตัวก็ติดต่อมาได้คับ คุยกันสนุกๆ [email protected] ผมช่วยคนมาเยอะ (โดยเฉพาะสาวๆ ตจว. บางคน ถึงขั้น ...) ฮิฮิ
ประวัติการแก้ไข 2014-11-13 01:55:43 2014-11-13 01:58:45 2014-11-13 01:59:11
Date :
2014-11-13 01:47:16
By :
pjgunner.com
ตอบความคิดเห็นที่ : 14 เขียนโดย : pjgunner.com เมื่อวันที่ 2014-11-13 01:47:16
รายละเอียดของการตอบ ::
ครับ ขอบคุณมากที่ใบ้ให้
คืออีกอย่างที่ผมจะบอกคือ
เว็ปนี้ตอนแรก ผมเขียนขึ้นมาโดยหลักการง่าย ๆ เพียงแค่อัพไฟล์ลงคอมได้
ผมทำจนเสร็จสิ้นแล้ว ทั้งในส่วน Code และ Database
แต่พอผมเอางานนี้ไปยื่นส่งอาจารย์ เขากลับบอกว่า ยังไม่พอใจ
ให้ไปทำเพิ่มมาอีก และ ให้ทำแบบดีกว่านี้
โดยรายละเอียดต้องมากกว่านี้
ผมก็เลย ลองเอางานกลับมาแก้
ผมดูตัวอย่างจาก เว็ปนี้ และ เว็ป Stackoverflow (อังกฤษล้วน)
แล้วผมก็ลองทำทำดู
แต่ตอนนี้ ผมทำไปทำมา งานมันเล๊ะไปหมดเลย 555
ผมเลยต้องไป งมโค้ดเอาใหม่หมด
ยังไงก็ขอบคุณครับที่ใบ้ให้ ผมจะพยายาม ทำมันต่อไป
งานนี้อาจารย์เขาสั่งมา ตอนแรกเหมือนจะไม่ยาก
แต่ตอนนี้ มันเริ่มยากแล้วคับ เพราะเขาต้องการมากกว่าที่ทำได้ในของเดิม 555
Date :
2014-11-13 02:32:19
By :
xgabpyz
ดีแล้วแหละ ผมจะนอนหลับสบายๆละ
ทำเอง ผมรับรองว่า ผ่านนนนนนน อย่างน้อยคุณควรบอกได้ว่าทเอง
ถ้าบอกว่ามีคนผ่านคนเดียว ควรเป็นเคนที่ทำด้วยความสามารุของตัวเอง
Date :
2014-11-13 02:39:47
By :
pjgunner.com
การที่จะให้โชว์ไฟล์ แค่ของเราคนเดียว ที่เป็นคนอัพโหลด
โดยจะเช็คด้วย session[UserID] จะทำด้วยกรณีไหนดีครับ
if else เช็ค
หรือว่า ตั้งแต่คำสั่ง select จาก DB เลย
Code (PHP)
<?php
session_start();
?>
<?php
// Connect to the database
$dbLink = new mysqli("localhost", "it55660293", "password", "it55660293");
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}
// Query for a list of all existing files
$sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM `file`';
$result = $dbLink->query($sql);
// Check if it was successfull
if($result) {
// Make sure there are some files in there
if($result->num_rows == 0) {
echo '<p>There are no files in the database</p>';
}
else {
// Print the top of a table
echo '<table width="100%">
<tr>
<td><b>Name</b></td>
<td><b>Mime</b></td>
<td><b>Size (bytes)</b></td>
<td><b>Created</b></td>
<td><b> </b></td>
</tr>';
// Print each file
while($row = $result->fetch_assoc()) {
echo "
<tr>
<td>{$row['name']}</td>
<td>{$row['mime']}</td>
<td>{$row['size']}</td>
<td>{$row['created']}</td>
<td><a href='get_file.php?id={$row['id']}'>Download</a></td>
</tr>";
}
// Close table
echo '</table>';
}
// Free the result
$result->free();
}
else
{
echo 'Error! SQL query failed:';
echo "<pre>{$dbLink->error}</pre>";
}
// Close the mysql connection
$dbLink->close();
?>
<html>
<head>
<title>User Login</title>
<link rel="stylesheet" type="text/css" href="styles.css" />
</head>
<body>
<table border="0" cellpadding="10" cellspacing="1" width="500" align="center">
<tr class="tableheader">
<td align="center"></td>
</tr>
<tr class="tablerow">
<td>
<?php
if($_SESSION["Username"]) {
?>
Welcome <?php echo $_SESSION["Username"]; ?>. Click here to <a href="index.html" tite="Logout">Logout.
<?php
}
?>
</td>
</tr>
</body>
</html>
ประวัติการแก้ไข 2014-11-13 18:56:50
Date :
2014-11-13 18:54:26
By :
xgabpyz
Code (PHP)
<?php
session_start();
function create_folder(){
// เปลี่ยนขนาด sub folder ลด จำนวน $x
$x=100000+$_SESSION['profile']['id']; $ln=strlen($x); $dir='';
for($i=1; $i<$ln; $i++){
$dir .=substr($x, $i, 1);
if(! is_dir($dir) ) mkdir( $dir , 0777);
$dir .='/';
}
return $dir;
}
if(isset($_REQUEST['login'])){
if( $_REQUEST['user']=='test' && $_REQUEST['password']=='test'){
$_SESSION['profile']=array('id'=>'0', 'user'=>'test', 'psw'=>'test', 'admin'=>1);
header('location: ?run=upload_file_content');
}
}else if(isset($_REQUEST['run'])){
switch( $_REQUEST['run']){
case 'upload_file_content':
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
</head>
<body>
<ul style="width: 880px">
<?php
$folder=create_folder();
foreach( glob($folder.'*.*') as $filename){
echo
<<<HTML
<li style="float: left; padding-left: 0; padding-right: 0; width: 176px;">
<img src="$filename" width="160" onDblClick="location.href='?run=delete&filename=$filename' ;" title="DoubleClick for delete">
<li>
HTML;
}
?>
</ul>
<form name="frm_upload" method="post" enctype="multipart/form-data">
<input type="file" name="upload" ><br>
<input type="submit" name="run" value="Upload" >
</form>
</body>
</html>
<?php
exit;
case 'Upload':
$folder= create_folder();
$target=$folder.$_FILES['upload']['name'];
move_uploaded_file($_FILES['upload']['tmp_name'], $target);
header('location: ?run=upload_file_content');
exit;
case 'delete':
unlink(create_folder().$_REQUEST['filename']);
header('location: ?run=upload_file_content');
exit;
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
</head>
<body>
<form name="frm_login" method="post">
Name <input type="text" name="user"><br>
Password <input type="password" name="password" ><br>
<input type="submit" name="login" value="Login" >
</form>
</body>
</html>
ลองศึกษาและประยุกต์ใช้เอานะครับ upload / delete file
Date :
2014-11-13 19:57:41
By :
Chaidhanan
ไม่ครับ ให้ลองดู วิธีการ
เซฟ เป็นอีก ไฟล์ เก็บไว้ใน folder ต่างหาก แล้วลอง ทำดูครับ
จะได้เห็น รูปแบบ การสร้าง directory เวลาลบ ก็จะได้ลบ ทั้ง directory ได้
ประวัติการแก้ไข 2014-11-14 10:13:12
Date :
2014-11-14 10:12:09
By :
Chaidhanan
งั้นขอสอบถามเรื่อง Database หน่อยนะครับ
ให้บอกตามตรงเลยก็
ตอนนี้่ผมยังไม่ได้เรียน Database
แต่ผมอยากเรียนตามเพื่อนให้ทัน ก็เลยลงวิชานี้มาด้วย
ซึ่งเขาไม่ได้กำหนด เงื่อนไขไว้ว่าต้องผ่านเลยลงวิชานี้มา
ซึ่งตอนนี้ ผมกำลัง อ่านเองตามเว็ปอยู่ครับ ว่าควรทำยังไง
-------
ผมอยากทราบว่า ตอนที่ผม ออกแบบ ER diagram ผมเขียน แบบนี้ส่งเขาไป มันถูกมั้ยครับ
ซึ่งถ้ามันถูก ผมจะได้นำมาเขียน โค้ดโปรแกรม ได้ต่อ
ปล. อีกอย่างคือ ผมอยากรู้ว่า ตาราง บางทีมันมีความสัมพันธ์ เชื่อมกัน
เราจะเพิ่ม Fields ไปดื้อ ๆ เลยเหรอคับ
เราจะตั้งค่าให้เป็น FK ยังไงเหรอครับ
Date :
2014-11-14 14:25:40
By :
xgabpyz
ซึ่งตอนนี้ใน Database ผมมีแค่นี้ครับ
ผมไม่รู้วิธีการ ทำให้ PK มาเชื่อมความสัมพันกันในอีกตารางได้ยังไง
เพื่อที่จะนำ UserID ในตาราง member มาสัมพันกับ ตาราง File
เพื่อใช้ประโยชน์ต่อไป ในการแสดงไฟล์ของตัวเอง
ประวัติการแก้ไข 2014-11-14 14:34:46
Date :
2014-11-14 14:32:38
By :
xgabpyz
ผมไม่เข้าใจเกี่ยวกับการใช้มันสักเท่าไหร่อะครับ
ผมจะทำไงดี เพื่อดึง UserID มาใช้ร่วมกัน ทั้ง2ตาราง
Date :
2014-11-14 15:33:33
By :
xgabpyz
ตอนนี้ใน ตาราง file ผมเพิ่ม UserID ไปดื้อ ๆ
แล้วก็
แก้ไขไฟล์ save.php
Code (PHP)
<?php
if( $_POST )
{
$con = mysql_connect("localhost","root","root","magicbox");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("magicbox", $con);
$Username = $_POST['Username'];
$Password = $_POST['Password'];
$Name = $_POST['Name'];
$Status = $_POST['Status'];
$query = "INSERT INTO member (Username,Password,Name,Status) VALUES ('".$_POST["Username"]."',
'".$_POST["Password"]."','".$_POST["Name"]."','".$_POST["Status"]."')";
$query = "INSERT INTO file (UserID) VALUES ('".$_POST["UserID"]."')";
mysql_query($query);
echo "<h2>Thank you for your Register!</h2>";
echo "<br> Go to <a href='index.html'>Login page</a>";
mysql_close($con);
}
?>
แต่ในฐานข้อมูล UserID มันก็ยังไม่เป็นตามตาราง member
มันโชว์เป็น 0 ครับ
ประวัติการแก้ไข 2014-11-14 16:24:23
Date :
2014-11-14 16:22:14
By :
xgabpyz
เรียบร้อยแล้วครับ โชว์แค่ไฟล์ที่ตัวเองอัพโหลดแล้ว
หน้าโชว์ และ ดาวโหลด
$sql = "SELECT `id`, `name`, `mime`, `size`, `created` FROM `file` WHERE UserID = '$_SESSION[UserID]'";
หน้าอัพโหลดไฟล์ insert
$query = "INSERT INTO `file` ( `name`, `mime`, `size`, `data`, `created`,`UserID`)
VALUES ( '{$name}', '{$mime}', {$size}, '{$data}', NOW(),'{$_SESSION["UserID"]}')";
******
ทีนี้ก็เหลือแค่ โชว์ข้อมูล สมัครว่า สมัครตอนไหน (อันนี้น่าจะใช้ คล้าย ๆ กับ อัพโหลดเมื่อไหร่)
******
ปัญหาใหญ่สุดเลยคือ ต้องทำ ให้มันนับด้วยว่า ไฟล์นี้ถูกดาวไปกี่ครั้งแล้วว
Date :
2014-11-14 17:44:34
By :
xgabpyz
เพื่อเรียนรู้ mysql เอาตารางง่ายๆ ก่อนนะครับ
tablename = test
field 1) id ทำให้เป็น integer ( type = int) กำหนด attribute=unsigned คลิกปุ่ม primary เลือก extra=autoincrement
field 2) data ทำเป็น varchar(80)
เมื่อสร้าง แล้ว ลอง insert ด้วยคำสั่ง
Code (PHP)
<?php
$con=new mysqli('host', 'user', 'psw', 'dbname');
$mk=date('Y-m-d H:i:s');
$sql = "insert into test set data='test data today = $mk' ";
$con->query($sql) or die( $sql . "<br>" . $con->error );
echo $con->insert_id;
?>
แล้วลองดู พร้อมกับเปิด PHPmyadmin ดูสิ่งที่เกิดขึ้น
เมื่อเข้าใจ แล้ว ก็ลอง update ข้อมูลต่อ
Code (PHP)
<?php
$con=new mysqli('host', 'user', 'psw', 'dbname');
$mk=date('Y-m-d H:i:s');
$id=1;
$sql = "update test set data='test update data at = $mk' where id=$id ";
$con->query($sql) or die( $sql . "<br>" . $con->error );
echo $con->affected_row;
?>
ดูสิ่งที่เกิดขึ้น
ต่อด้วยคำสั่ง delete
Code (PHP)
<?php
$con=new mysqli('host', 'user', 'psw', 'dbname');
$mk=date('Y-m-d H:i:s');
$id=1;
$sql = "delete from test where id=$id ";
$con->query($sql) or die( $sql . "<br>" . $con->error );
echo $con->affected_row;
?>
ต่อด้วย การสร้าง ตาราง detail ที่อ้างอิง PK ของ test
tablename = test_detail
field 1) id ทำให้เป็น integer ( type = int) กำหนด attribute=unsigned คลิกปุ่ม primary เลือก extra=autoincrement
field 2) test_id int unsigned index
field 3) topic ทำเป็น varchar(80)
Code (PHP)
<?php
$con=new mysqli('host', 'user', 'psw', 'dbname');
$mk=date('Y-m-d H:i:s');
$sql = "insert into test_detail set test_id=1, topic='test topic today = $mk' ";
$con->query($sql) or die( $sql . "<br>" . $con->error );
echo $con->insert_id;
?>
ทดสอบการ join
Code (PHP)
<?php
$con=new mysqli('host', 'user', 'psw', 'dbname');
$mk=date('Y-m-d H:i:s');
$sql = "select test.id tsID, test.data, test_detail.test_id, test_detail.id dtID test_detail.topic
from test left join test_detail on test.id = test_detail.test_id"
$rs=$con->query($sql);
while( $ro=$rs->fetch_assoc()){
echo '<pre>', print_r($ro, true), '</pre>';
}
?>
ประวัติการแก้ไข 2014-11-14 17:59:35
Date :
2014-11-14 17:58:30
By :
Chaidhanan
เสร็จเกือบ 100% แล้วครับ เย้เย้
http://angsila.informatics.buu.ac.th/~55660293/magicbox/
ทีนี้ก็เหลือแค่ ทำให้มันนับจำนวนครั้ง ทีดาวโหลดไฟล์นั้นได้ *0*
---
เอ่อ ผมอยากถาามว่า ทำไมตอนกดสมัครสมาชิกเสร็จ
ไปอีกหน้านึง เพื่อโชว์ข้อมูล ผมก็ทำให้มันโช
ทุกอย่างมันโชขึ้นมาหมดแล้ว ยกเว้น วันที่อะครับ (ทั้ง ๆ ที่ฐานข้อมูลมันก็เข้าแล้ว)
echo "<h2>Thank you for your Register!</h2>";
echo "Username : $Username";
echo "Name : $Name";
echo "Date : $date_reg";
header("Refresh:2; url=index.html");
Uername กับ Name ขึ้นโชแล้วนะครับ ตามจริงเลย
แต่ date_reg ไม่ยอมโชว์วันที่ ที่มันสมัครเสร็จ ทั้ง ๆ ที่ในฐานข้อมูลก็เกบข้อมูลแล้วตรงด้วย
แต่เรียกออกมาไม่ยอมขึ้นอะครับ
Date :
2014-11-15 20:57:08
By :
xgabpyz
ไม่ยอมโชว์ข้อมูลวันที่ครับ
ทั้งทั้งที่ก็เข้า ฐานข้อมูลแล้ว
Code (PHP)
<?php
if( $_POST )
{
$con = mysql_connect('localhost', 'test', 'test', 'test');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("it55660293", $con);
$Username = $_POST['Username'];
$Password = $_POST['Password'];
$Name = $_POST['Name'];
$query = "INSERT INTO `member` (`Username`, `Password`, `Name`, `date_reg`) VALUES ('{$Username}', '{$Password}', '{$Name}', NOW())";
$query2 = "INSERT INTO file (UserID) VALUES ('".$_POST["UserID"]."')";
mysql_query($query);
mysql_query($query2);
echo "<h2>Thank you for your Register!</h2>";
echo "Username : $Username";
echo "Name : $Name";
echo "Date : $date_reg";
header("Refresh:2; url=index.html");
mysql_close($con);
}
?>
Date :
2014-11-16 05:56:17
By :
xgabpyz
Code (PHP)
$Name = $_POST['Name'];
$date_reg=date('Y-m-d H:i:s');
$query = "INSERT INTO `member` (`Username`, `Password`, `Name`, `date_reg`) VALUES ('{$Username}', '{$Password}', '{$Name}', '$date_reg')";
แค่เอาใส่ databaes แต่ไม่ได้ get มันออกมา
เมื่อไม่ได้ get ก็ Set มันก่อนที่จะเอาเอาเข้า $date_reg=date('Y-m-d H:i:s');
Date :
2014-11-16 07:49:38
By :
Chaidhanan
ถามหน่อยครับ
สองตาราง insert ข้างล่างนี้ มันอ้างอิงถึงกันอย่างไร
Code (PHP)
$query = "INSERT INTO `member` (`Username`, `Password`, `Name`, `date_reg`) VALUES ('{$Username}', '{$Password}', '{$Name}', NOW())";
$query2 = "INSERT INTO file (UserID) VALUES ('".$_POST["UserID"]."')";
Date :
2014-11-16 07:52:41
By :
Chaidhanan
คือตอนแรกมีแค่
$query = "INSERT INTO `member` (`Username`, `Password`, `Name`, `date_reg`) VALUES ('{$Username}', '{$Password}', '{$Name}', NOW())";
แต่พอต้องการให้มันโชว์แค่ไฟล์ตัวเอง ตอนสมัครเสร็จ ก็ให้มันเก็บ UserID ไปไว้ที่ file ด้วย
เพื่อตอน อัพโหลด จะได้ดึง UserID มาใช้ เพื่อให้ล๊อกอินมาเหนแค่ไฟล์ของตัวเองครับ
$query2 = "INSERT INTO file (UserID) VALUES ('".$_POST["UserID"]."')";
----
ผมเข้าใจผิดแน่เลย ฮ่าฮ่าาา
Date :
2014-11-16 12:35:27
By :
xgabpyz
ขอดู structure ของ member หน่อยครับ ว่าเป็นอย่างไร
ซึ่ง 2 ตารางนี้สามารถ รวมกันได้นะครับ
ประวัติการแก้ไข 2014-11-16 12:39:02
Date :
2014-11-16 12:38:20
By :
Chaidhanan
คือ user_id ควรจะอยู่ใน ตาราง member นะครับ
ตาราง member
id autoincrement primary key ( สามารถนำมาใช้ แทน user_id)
ืname ชื่อ user
password
ฯลฯ
ตารางไฟล์
id autoincrement primary key ( ไว้อ้างอิง pic_id
ีurl varchr (80)
user_id int (อ้างอิงกับ id ของ ตาราง member จะได้รู้ว่าใครอัพโหลด)
ประวัติการแก้ไข 2014-11-16 12:55:18
Date :
2014-11-16 12:53:36
By :
Chaidhanan
นี่ครับโครงสร้าง
และ
ซึ่งตอนนี้ทำได้แล้วครับ
login มาเห็นแค่ไฟล์ของคนที่ลอกอินแล้วครับ
ประวัติการแก้ไข 2014-11-16 12:58:26
Date :
2014-11-16 12:57:31
By :
xgabpyz
อืม..ตามมาอ่าน อารมณ์เหมืออนคอร์สอน php online เลยแฮะ
Date :
2014-11-16 13:52:24
By :
mangkunzo
เย้ เย้ !! ตอนนี้สมบูรณ์ใกล้หมดแล้ว
เหลืออย่างสุดท้าย
คือ นับจำนวนการดาวน์โหลดดดของไฟล์นั้นนั้น เมื่อมีการคลิ๊กดาวโหลดอ่าครับ TT
Date :
2014-11-16 21:33:39
By :
xgabpyz
Load balance : Server 04