|
|
|
อยากสอบถามเรื่องการสร้างเทเบิ้ลสองเทเบิ้ล ในสองฐานข้อมูลค่ะ (อาจใช้คำงงๆ) |
|
|
|
|
|
|
|
เอาโค้ดที่ทำไม่ได้มาดูครับ
|
|
|
|
|
Date :
2012-11-13 07:31:08 |
By :
deawx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดูแล้วก็ไม่น่ายาก แต่ไม่รู้จะตอบยังไง ลองเอา Code ที่เขียนไว้มาดูครับ
|
|
|
|
|
Date :
2012-11-13 09:04:26 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อธิบายนะคะ คือต้องการส่งชื่อตัวแปร จาก form.php ไปยังหน้า create.php แล้วทำการสร้างเทเบิ้ลชื่อในฐานข้อมูล survey_questionเป็นชื่อคำถามในแบบสอบถาม โดยถ้าแบบสอบถามเป็นปลายเปิด(ไม่มี choice) ให้ไปทำเงื่อนไข messagebox สร้าง table อีกชื่อหนึ่งในฐานข้อมูล survey_answer แต่ถ้าเป็นปลายปิดแบบมีตัวเลือก ให้ไปทำเงื่อนไข radiobox สร้างเทเบิ้ลอีกหนึ่งหนึ่งแต่ฐานข้อมูล survey_answer เหมือนกัน กับแบบไม่มี choice ค่ะ แต่คือทุกอย่างต้องวนทำไปเรื่อยๆจนกว่าจะกดปุ่มสิ้นสุดถ้ามีการสร้างเทเบิ้ลในเงื่อนไขจะเกิดปัญหาน่ะคะ รบกวนด้วยนะคะ
ยกตัวอย่าง ถ้าชื่อเทเบิ้ลที่ตั้งมาชื่อ sample
อีกสองอัน ก็จะชื่อ sample_choice ,sample_text
** $msql = "CREATE TABLE $topic."_text" อันนี้นึกไม่ออกเลยตั้งชื่อเพื่อให้พี่เข้าใจค่ะ T T
form.php
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="keywords" content="" />
<meta name="description" content="" />
<title>Survey Application</title>
<link rel="shortcut icon" href="../pic/logo.ico"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script language="javascript" CHARSET="UTF-8">
function fncSubmit()
{
if(document.form1.form_name.value == "")
{
alert('กรุณา กรอกหัวข้อแบบสอบถาม');
document.form1.form_name.focus();
return false;
}
document.form1.submit();
if(document.form1.topic_addressDB.value == "")
{
alert('กรุณา กรอกชื่อฐานข้อมูลแบบสอบถาม');
document.form1.topic_addressDB.focus();
return false;
}
document.form1.submit();
}
</script>
</head>
<body id="wraper">
<header id="header">
</header>
<nav id="nav">
<div id="naviTab">
<a href="A_admin.php"><div id="naviTabA"></div></a>
<a href="A_member.php"><div id="naviTabB"></div></a>
<a href="#"><div id="naviTabC"></div></a>
<a href="A_form.php"><div id="naviTabD"></div></a>
<a href="A_createform.php"><div id="naviTabE"></div></a>
<a href="#"><div id="naviTabF"></div></a>
<a href="../logout.php"><div id="naviTabG"></div></a>
</div>
</nav>
<article id="article">
<article id="body">
<h1 id="head">สร้างแบบสำรวจ</h1>
<div id="formbox">
<form id="form1" name="form1" method="post" action="create.php" onSubmit="JavaScript:return fncSubmit();">
<p id="formname">โปรดตั้งชื่อแบบสำรวจ :</p>
<textarea id="formtext" name="form_name" cols="37" rows="5" id="inputform"></textarea></td>
<input id="forminput" type="submit" name="submit" value="เริ่มสร้างแบบสำรวจ" />
</form>
</div>
</article>
<div id="ooo">
</div>
</article>
<footer id="foot">
</footer>
</body>
</html>
create.php
<?php
@mysql_connect("localhost", "root", "91205") or die(mysql_error());
mysql_select_db("survey_question");
mysql_query("SET NAMES UTF8");
$topic = $_POST["form_name"];
$sql = "CREATE TABLE $topic(
q_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_topic TEXT ,
q_choice TEXT ,
q_type INT(2) );";
mysql_query($sql);
if($_POST["messagebox"]){
$quest= $_POST['quest'];
$sql = "INSERT INTO $topic VALUES
(0,'$quest','',1);";
@mysql_query($sql) or die(mysql_error());
@mysql_connect("localhost", "root", "91205") or die(mysql_error());
mysql_select_db("survey_answer");
mysql_query("SET NAMES UTF8");
$msql = "CREATE TABLE $topic."_text"(
ans_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_id int(4) ,
answer TEXT ,
q_type INT(1) );";
mysql_query($msql);
}
if($_POST["radiobox"]){
$quest = $_POST['quest'];
$choices = explode("\n", $_POST['choice']);
for($i = 0; $i < count($choices); $i++) {
if(empty($choices[$i])) {
continue;
}
$cc_data.=$choices[$i].",";
}
$sql = "INSERT INTO $topic VALUES
(0,'$quest','$cc_data',2);";
@mysql_query($sql) or die(mysql_error());
@mysql_connect("localhost", "root", "91205") or die(mysql_error());
mysql_select_db("survey_answer");
mysql_query("SET NAMES UTF8");
$rsql = "CREATE TABLE $topic."_choice"(
ans_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_id int(4) ,
choice varchar(150) ,
score INT(4) ,
vote);";
mysql_query($rsql);
}
?>
<article id="body">
<h1 id="head"><?=$_POST["form_name"]."<br>";?></h1>
<a href="#onebox" ><input id="choicebut" type="button" name="create" value="คำถามปลายเปิด"></a>
<a href="#twobox" ><input id="choicebut" type="button" name="create" value="คำถามแบบเลือกได้ตัวเลือกเดียว"></a>
<div id="boxx">
<div id="bigbox">
<div id="onebox">
<form id="form1" name="form1" method="post" action="create.php">
<table border="0" cellspacing="3" cellpadding="0" align="center">
<tr>
<td>ชนิด:</td>
<td>คำถามปลายเปิด</td>
</tr>
<tr>
<td>คำถาม:</td>
<td><input name="quest" type="text" id="quest" size="40" /></td>
</tr>
<tr>
<td
<br/>
<br/>
</td>
<td></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<input name="form_name"type="hidden" value="<?=$_POST["form_name"];?>" />
<td><input id="nextbut" type="submit" name="messagebox" value="ข้อถัดไป" /></td>
</tr>
</table>
</form>
</div>
<div id="twobox">
<form id="form2" name="form2" method="post" action="create.php">
<table border="0" cellspacing="3" cellpadding="0" align="center">
<tr>
<td>ชนิด:</td>
<td>คำถามแบบเลือกได้ตัวเลือกเดียว</td>
</tr>
<tr>
<td>คำถาม:</td>
<td><input name="quest" type="text" id="quest" size="40" /></td>
</tr>
<tr>
<td valign="top">ตัวเลือก:
<br />
(บรรทัดละ <br />
1 ตัวเลือก) </td>
<td><textarea name="choice" cols="37" rows="5" id="choice"></textarea></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<input name="form_name"type="hidden" value="<?=$_POST["form_name"];?>" />
<td><input id="nextbut" name="radiobox" type="submit" value="ข้อถัดไป" /></td>
</tr>
</table>
</form>
<a href="JavaScript:if(confirm('คุณต้องการสิ้นสุดการทำแบบสำรวจใช่หรือไม่ ?')==true){window.location='A_saveform.php?$topic=<?=$topic;?>'};" alt="" ><input id="finishbut" type="button" name="exit" value="สิ้นสุดการทำแบบสอบถาม"/></a>
</div>
</article>
|
|
|
|
|
Date :
2012-11-13 11:47:09 |
By :
jummu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ช่วยหน่อยคะ
|
|
|
|
|
Date :
2012-11-13 14:10:43 |
By :
jummu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมว่าออกแบบให้โปรแกรมสร้างเทเบิ้ลได้เอง ดูเหมือนจะไม่ค่อยถูกต้องน่ะครับ
ขอทราบเหตุผลได้มั๊ย เผื่อว่าจะแนะนำแนวทางอื่นให้
|
|
|
|
|
Date :
2012-11-13 14:36:16 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไปเยอะแล้วคะ ถ้าแก้คงรื้อใหม่เยอะมาก อยากให้เป็นแบบนี้ดีกว่าคะ
|
|
|
|
|
Date :
2012-11-13 14:52:16 |
By :
jummu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก่อนอื่น ไม่ควรใช้ <textarea id="formtext" name="form_name" มารับชื่อของตารางครับ ใหญ่เกินความจำเป็น
ควรจะเป็น <input type="text" name="form_name" id="inputform" />
โค้ดการสร้างตารางก็เกือบถูกแล้วครับ
$topic = $_POST["form_name"];
$sql = "CREATE TABLE ".$topic."_choice(
q_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_topic TEXT ,
q_choice TEXT ,
q_type INT(2) )type=myisam default character set utf8 collate utf8_general_ci;";
mysql_query($sql);
|
|
|
|
|
Date :
2012-11-13 15:44:50 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือ ต้องการทีละหลายตาราง คะ ตามเงื่อนไขที่พิมไว้ ใน คห.3 อะคะ
โปรแกรมนี้จะมีการสร้างเทเบิ้ลขึ้นมาเอง 3 เทเบิ้ล คือ เทเบิ้ลคำถาม อยู่ในฐานข้อมูล Question อีก 2 เทเบิ้ล คือ เทเบิ้ลที่รับคำตอบแบบ Text และคำตอบแบบ choice ในฐานข้อมูลของ Answer คะ แต่ไม่รู้ว่าจะเขียน PHP อย่างไรดี คะ
ช่วยหน่อยคะ
|
|
|
|
|
Date :
2012-11-13 16:17:36 |
By :
jummu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่รู้ว่าผมเข้าใจถูกหรือเปล่าว่าน้อง jummu กำลังถามถึงคำสั่งการสร้างตาราง เลยยกตัวอย่างเฉพาะคำสั่ง sql เท่านั้น
<?php
@mysql_connect("localhost", "root", "91205") or die(mysql_error());
mysql_select_db("survey_question");
mysql_query("SET NAMES UTF8");
$topic = $_POST["form_name"];
$sql = "CREATE TABLE $topic(
q_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_topic TEXT ,
q_choice TEXT ,
q_type INT(2) )type=myisam default character set utf8 collate utf8_general_ci;";
mysql_query($sql) or die(mysql_error());
$msql = "CREATE TABLE ".$topic."_text(
ans_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_id int(4) ,
answer TEXT ,
q_type INT(1) )type=myisam default character set utf8 collate utf8_general_ci;";
mysql_query($msql) or die(mysql_error());
$rsql = "CREATE TABLE ".$topic."_choice(
ans_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_id int(4) ,
choice varchar(150) ,
score INT(4) ,
vote)type=myisam default character set utf8 collate utf8_general_ci;";
mysql_query($rsql) or die(mysql_error());
}
?>
|
|
|
|
|
Date :
2012-11-13 16:47:21 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตามนั้นแหละค่ะ พี่ Unidentifier
แต่สองเทเบิ้ลหลัง ".$topic."_text และ ".$topic."_choice สร้างในฐานข้อมูล survey_answer ได้ไหมค่ะ ไม่สร้างใน survey_question ต้องการวิธีนี้มากกกกก T T
|
|
|
|
|
Date :
2012-11-13 17:01:19 |
By :
jummu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองดูครับ
<?php
@mysql_connect("localhost", "root", "91205") or die(mysql_error());
mysql_select_db("survey_question");
mysql_query("SET NAMES UTF8");
$topic = $_POST["form_name"];
$sql = "CREATE TABLE $topic(
q_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_topic TEXT ,
q_choice TEXT ,
q_type INT(2) )type=myisam default character set utf8 collate utf8_general_ci;";
mysql_query($sql) or die(mysql_error());
$msql = "CREATE TABLE survey_answer.".$topic."_text(
ans_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_id int(4) ,
answer TEXT ,
q_type INT(1) )type=myisam default character set utf8 collate utf8_general_ci;";
mysql_query($msql) or die(mysql_error());
$rsql = "CREATE TABLE survey_answer.".$topic."_choice(
ans_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_id int(4) ,
choice varchar(150) ,
score INT(4) ,
vote)type=myisam default character set utf8 collate utf8_general_ci;";
mysql_query($rsql) or die(mysql_error());
}
?>
|
|
|
|
|
Date :
2012-11-13 17:07:56 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากคร่าาาา ^^
ได้แล้ววว
|
|
|
|
|
Date :
2012-11-13 17:23:42 |
By :
jummu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สร้างเทเบิ้ลได้แล้วค่ะ แต่ว่า จะอินเสิจเข้าไป พร้อมกันทั้งสองเทเบิ้ลในสองฐานข้อมูล ใช้วิธีนี้เหมือนตอนสร้างเทเบิ้ลรึเปล่าค่ะ มันขึ้นเตือนว่า มีเทเบิ้ลชื่อนี้อยู่แล้ว (php กำหนดให้ประมวลผลในหน้าของมันเองเลยกลับมาสร้างเทเบิ้ลใหม่) ไม่ทราบว่าทำยังไงดีค่ะ
create.php
<?php
@mysql_connect("localhost", "root", "91205") or die(mysql_error());
mysql_select_db("survey_answer");
mysql_query("SET NAMES UTF8");
$topic = $_POST["form_name"];
$sql = "CREATE TABLE survey_question.".$topic."(
q_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_topic TEXT ,
q_choice TEXT ,
q_type INT(2) )type=myisam default character set utf8 collate utf8_unicode_ci;";
mysql_query($sql) or die(mysql_error());
$msql = "CREATE TABLE ".$topic."_text(
ans_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_id int(4) ,
answer TEXT)type=myisam default character set utf8 collate utf8_unicode_ci;";
mysql_query($msql) or die(mysql_error());
$rsql = "CREATE TABLE ".$topic."_choice(
ans_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_id int(4) ,
choice varchar(150) ,
score INT(4) ,
vote INT(4) )type=myisam default character set utf8 collate utf8_unicode_ci;";
mysql_query($rsql) or die(mysql_error());
if($_POST["messagebox"]){
$quest= $_POST['quest'];
$sql = "INSERT INTO survey_question.".$topic." VALUES
(0,'$quest','',1);";
@mysql_query($sql) or die(mysql_error());
$topic_id = mysql_insert_id();
$tsql = "INSERT INTO ".$topic."_text VALUES
(0,'$topic_id','');";
@mysql_query($tsql) or die(mysql_error());
}
<form id="form1" name="form1" method="post" action="create.php">
<table border="0" cellspacing="3" cellpadding="0" align="center">
<tr>
<td>ชนิด:</td>
<td>คำถามปลายเปิด</td>
</tr>
<tr>
<td>คำถาม:</td>
<td><input name="quest" type="text" id="quest" size="40" /></td>
</tr>
<tr>
<td
<br/>
<br/>
</td>
<td></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<input name="form_name"type="hidden" value="<?=$_POST["form_name"];?>" />
<td><input id="nextbut" type="submit" name="messagebox" value="ข้อถัดไป" /></td>
</tr>
</table>
</form>
|
|
|
|
|
Date :
2012-11-13 18:42:39 |
By :
jummu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?php
@mysql_connect("localhost", "root", "91205") or die(mysql_error());
mysql_select_db("survey_question");
mysql_query("SET NAMES UTF8");
$topic = $_POST["form_name"];
$sql = "CREATE TABLE IF NOT EXISTS $topic(
q_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_topic TEXT ,
q_choice TEXT ,
q_type INT(2) )type=myisam default character set utf8 collate utf8_general_ci;";
mysql_query($sql) or die(mysql_error());
$msql = "CREATE TABLE IF NOT EXISTS survey_answer.".$topic."_text(
ans_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_id int(4) ,
answer TEXT ,
q_type INT(1) )type=myisam default character set utf8 collate utf8_general_ci;";
mysql_query($msql) or die(mysql_error());
$rsql = "CREATE TABLE IF NOT EXISTS survey_answer.".$topic."_choice(
ans_id INT(4) AUTO_INCREMENT PRIMARY KEY,
q_id int(4) ,
choice varchar(150) ,
score INT(4) ,
vote)type=myisam default character set utf8 collate utf8_general_ci;";
mysql_query($rsql) or die(mysql_error());
}
?>
|
|
|
|
|
Date :
2012-11-13 20:35:29 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากค่ะ ตอนนี้ทำได้แล้ว ต้องรบกวนพี่อยู่เรื่อยเลย > <
|
|
|
|
|
Date :
2012-11-13 21:01:16 |
By :
jummu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่เป็นไรครับ อนาคตของชาติเราต้องช่วยกันดูแล
|
|
|
|
|
Date :
2012-11-13 21:21:33 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
งั้นช่วยอีกนิดนะคะ คือการรับคำตอบเป็น choice คือต้องการเก็บข้อมูลใส่สองตารางค่ะ
ตารางคำถาม
1,q_id, q_topic, q_choice, q_type
$sql = "INSERT INTO survey_question.".$topic." VALUES
(0,'$quest','$cc_data',2);";
อันนี้เก็บได้ตามที่คิดไว้
ตารางคำตอบ
2. ans_id , q_id, choice, score, vote
$tsql = "INSERT INTO ".$topic."_choice VALUES
(0,'q_id','{$choices[$i]}',0,0);";
แต่อันนี้เก็บไม่ได้ค่ะไม่ลงเทเบิ้ลที่สร้าง และก็ไม่ได้อ้างอิง q_id จากอันบนด้วย แล้วดันไปลงเทเบิ้ลคำถามซะงั้น ทำยังไงดีค่ะ
Code (PHP)
if($_POST["radiobox"]){
$quest = $_POST['quest'];
$choices = explode("\n", $_POST['choice']);
for($i = 0; $i < count($choices); $i++) {
if(empty($choices[$i])) {
continue;
}
$cc_data.=$choices[$i].",";
}
$sql = "INSERT INTO survey_question.".$topic." VALUES
(0,'$quest','$cc_data',2);";
@mysql_query($sql) or die(mysql_error());
$topic_id = mysql_insert_id();
for($i = 0; $i < count($choices); $i++) {
if(empty($choices[$i])) {
continue;
}
$tsql = "INSERT INTO ".$topic."_choice VALUES
(0,'topic_id','{$choices[$i]}',0,0);";
@mysql_query($sql) or die(mysql_error());
}
}
|
ประวัติการแก้ไข 2012-11-13 22:31:18
|
|
|
|
Date :
2012-11-13 22:26:45 |
By :
jummu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รูป การใส่เทเบิ้ลที่ผิดค่ะ
|
ประวัติการแก้ไข 2012-11-13 22:35:17
|
|
|
|
Date :
2012-11-13 22:34:48 |
By :
jummu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก่อนอื่นเอา @ ออกจาก mysql_query() ครับ เพราะถ้าโค้ดมี error มันจะไม่รายงานผลใดๆออกมาให้เห็นครับ
และเขียนคำสั่ง insert แบบเต็มรูปจะดีกว่า
24.$tsql = "INSERT INTO survey_answer.".$topic."_choice(.... , .... , .... , ..... , ....) VALUES
25.(0,'topic_id','{$choices[$i]}',0,0);";
26.mysql_query($sql) or die(mysql_error());
|
|
|
|
|
Date :
2012-11-13 22:54:45 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วคะ พี่ ขอบคุณมากคะ รบกวนพี่อยู่เรื่อยเลย
|
|
|
|
|
Date :
2012-11-13 23:22:28 |
By :
jummu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|