พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com | บล็อกอาหาร
PHP development / แก้ปัญหาให้หน่อยครับ
โอ
โอ
Mon 28 Aug 2006 23:44:10

ถามดังนี้นะครับ

-เราต้องใส่ session_start(); ทุกเพจเลยหรือเปล่าครับ หรือว่าเฉพาะเพจแรกที่เริ่มใช้

-ดูโคตให้หน่อยครับ

**********verify.php

<?php
session_start();
session_register('ss_UserID');
session_register('ss_Pwd');
session_register('ss_iddep');
session_register('ss_DBname');

$ss_UserID = $_POST["cUserID"];
$ss_Pwd = $_POST["cPwd"];
$ss_DBname =  "project";
$host = "localhost";
$user = "root";
$password = "";
$link = mysql_connect($host,$user,$password) or die ("++ไม่สามารถติดต่อกับฐานข้อมูลได้++");
mysql_select_db($ss_DBname, $link);
$table = mysql_query("SELECT * FROM student WHERE Id_student = '$ss_Pwd' ") ;
if($row  =  mysql_fetch_array($table)){
  if($ss_UserID ==  $row["std_Fname"]){
     echo "<b>รหัสนักศึกษา </b>   " . $row[Id_student]  . "   <br>";
     echo "<b>ชื่อ</b> " .  $row[std_Fname] . "    ";
     echo "<b>นามสกุล</b> " .  $row[std_Lname] . "   <br>";
     echo "<b>แผนก</b> " .  $row[department] . "     <br>";
     echo "<b>ชั้นปีที่ </b> " .  $row[year] . "       ";    $ss_iddep = $row[id_dep];
     echo "<b>คณะ</b> " .  $row[faculty] . " <br><br><b>วิชาที่ลงทะเบียนเรียนในปีการศึกษา 2549</b><br><br>";
     echo "<Table border=0 cellpadding=3 cellspacing=1 bgcolor=#BFBFBF bordercolor=#BFBFBF><tr bgcolor=#CCCCCC> <th>รหัสวิชา</th> <th>ชื่อวิชา</th> <th>อาจารย์ผู้สอน</th><th>ประเมิน</th><th>สถานะ</th></tr>";
    
$sql = "SELECT DISTINCT(s.id_sub), t.id_teach, s.name_sub , t.name_teach  FROM register r, subject s , teacher t   WHERE r.id_sub = s.id_sub AND id_std LIKE '$ss_Pwd' AND t.id_teach = r.id_teach  ;";
$result = mysql_db_query($ss_DBname, $sql ); 

while ($dbarr = mysql_fetch_array($result)) {
$ss_id_sub = $dbarr[id_sub];
$ss_id_teach = $dbarr[id_teach];
$ss_name_sub = $dbarr[name_sub] ;
$ss_name_teach = $dbarr[name_teach];

 echo "<tr bgcolor=#DDDDDD> <td>".$ss_id_sub."</td> <td>".$ss_name_sub."</td><td>อ. ".$ss_name_teach."</td><td><form name='saveidsub'  method='GET'  action='scoreform.php'> <a href='scoreform.php?ss_id_sub=".$ss_id_sub."&ss_id_teach=".$ss_id_teach."'>ให้คะแนน</a></td>";
$sql2 = "SELECT *  FROM status  WHERE  id_student LIKE '$ss_Pwd' AND id_sub LIKE '$ss_id_sub' AND id_teach LIKE '$ss_id_teach' ";
$result2 = mysql_db_query($ss_DBname, $sql2);
$row  = mysql_fetch_array($result2);
if ($row[status] == "Y"){
 echo "<td>ให้คะแนนแล้ว</td></tr></form>";
 }
 else{
 echo "<td>ยังไม่ได้ให้คะแนน</td></tr></form>";
 }
 
}         //while
echo "</table><br>";
echo "<a href= # onclick = 'history.back()'><--back</a>";
  }     //if
    else{
      print "<font color=#FF0000><b>ไม่มีชื่อในฐานข้อมูลนักศึกษาหรือ รหัสนักศึกษาไม่ถูกต้อง กรุณากรอกใหม่</b></font><br>";
      print "<a href= 'login.php'>click here</a>";
    }
}
   else{
     print "<font color=#FF0000><b>ไม่มีชื่อในฐานข้อมูลนักศึกษาหรือ รหัสนักศึกษาไม่ถูกต้อง กรุณากรอกใหม่</b></font><br>";
     print "<a href= 'login.php'>click here</a>";
   }

?>

**********scoreform.php

<?php
 session_register('ss_idsub');
session_register('ss_namesub');
 session_register('ss_nameteach');
  session_register('ss_idteach');
$host = "localhost";
$user = "root";
$password = "";
$ss_idsub = $_GET[ss_id_sub];
$ss_idteach = $_GET[ss_id_teach];
$link = mysql_connect($host,$user,$password) or die ("++ไม่สามารถติดต่อกับฐานข้อมูลได้++");
mysql_query("USE project;");
$sql = "SELECT * FROM score r, subject s, teacher t  WHERE  s.id_sub LIKE '$ss_idsub'  AND s.id_teach LIKE '$ss_idteach' AND s.id_sub = s.id_sub AND t.id_teach = s.id_teach;";
$result = mysql_query($sql);
$dbarr = mysql_fetch_array($result);
    $ss_namesub = $dbarr["name_sub"] ;
 $ss_nameteach =  $dbarr["name_teach"];
$sql2 = "SELECT * FROM status WHERE id_teach LIKE '$ss_idteach' AND id_sub LIKE '$ss_idsub' AND id_student = '$_SESSION[ss_Pwd]' AND id_teach = '$ss_idteach';";
$result2 = mysql_query($sql2);
$row = mysql_fetch_array($result2);
if($row[status] == "Y"){
 echo "<center>คุณได้ทำการประเมินคะแนนวิชา <b>$ss_namesub</b> เรียบร้อยแล้ว <br> กรุณาเลือกวิชาใหม่  <a href= # onclick = 'history.back()'>click here</a></center>";
 exit;
 }

echo "<center>";
echo "<br>ท่านกำลังประเมินวิชา    ";
echo "<Table  border=0 cellpadding=3 cellspacing=1 bgcolor=#97CBFF bordercolor=#97CBFF><tr bgcolor=#D7EBFF> <td>รหัสวิชา</td> <td>ชื่อวิชา</td> <td>อาจารย์ผู้สอน</td></tr>";
echo "<tr bgcolor=#ECF5FF> <td>".$ss_idsub."</td> <td>".$ss_namesub."</td><td>อ. ".$ss_nameteach."</td></tr>";
echo "</table>";
echo "<br><form name='scoreform' method='post' action='scoreset.php'>";
echo "<table border=0 cellpadding=3 cellspacing=1 bordercolor=#97CBFF bgcolor=#97CBFF>";
echo "<tr bgcolor=#D5EBFF><th align=center rowspan = 2>ข้อที่<th align=center rowspan = 2>รายการ<th align=center colspan = 5>คะแนน";
echo "<tr bgcolor=#D5EBFF><td align=center> 5 <td align=center> 4 <td align=center> 3 <td align=center> 2 <td align=center> 1 ";
echo "<tr bgcolor=#DFEFFF><td colspan =8 align=left><b>1.  การสอนของอาจารย์</b>";
echo "<tr bgcolor=#ECF5FF><td align=center>1.1<td>มีวิธีการสอนโดยใช้ภาษาที่เข้าใจง่ายชัดเจน<td><input type='radio' name='point1' value='5'><td><input type='radio' name='point1' value='4'><td><input type='radio' name='point1' value='3'><td><input type='radio' name='point1' value='2'><td><input type='radio' name='point1' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>1.2<td>มีวิธีการแจ้งวัตถุประสงค์รายวิชาให้นักศึกษาทราบ<td><input type='radio' name='point2' value='5'><td><input type='radio' name='point2' value='4'><td><input type='radio' name='point2' value='3'><td><input type='radio' name='point2' value='2'><td><input type='radio' name='point2' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>1.3<td>สอนครบถ้วนตามเนื้อหารายวิชา<td><input type='radio' name='point3' value='5'><td><input type='radio' name='point3' value='4'><td><input type='radio' name='point3' value='3'><td><input type='radio' name='point3' value='2'><td><input type='radio' name='point3' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>1.4<td>เข้าสอนตรงเวลาตามตารางสอน<td><input type='radio' name='point4' value='5'><td><input type='radio' name='point4' value='4'><td><input type='radio' name='point4' value='3'><td><input type='radio' name='point4' value='2'><td><input type='radio' name='point4' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>1.5<td>นักศึกษามีส่วนร่วมในกิจกรรมการเรียนการสอน<td><input type='radio' name='point5' value='5'><td><input type='radio' name='point5' value='4'><td><input type='radio' name='point5' value='3'><td><input type='radio' name='point5' value='2'><td><input type='radio' name='point5' value='1'>";
echo "<tr bgcolor=#DFEFFF><td colspan =8 align=left><b>2. การใช้สื่อการสอน</b>";
echo "<tr bgcolor=#ECF5FF><td align=center>2.1<td>ใช้สื่อการสอนหลากหลายตามเนื้อหาวิชา<td><input type='radio' name='point6' value='5'><td><input type='radio' name='point6' value='4'><td><input type='radio' name='point6' value='3'><td><input type='radio' name='point6' value='2'><td><input type='radio' name='point6' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>2.2<td>มีทำษะในการใช้เครื่องมือและอุปกรณ์การสอน<td><input type='radio' name='point7' value='5'><td><input type='radio' name='point7' value='4'><td><input type='radio' name='point7' value='3'><td><input type='radio' name='point7' value='2'><td><input type='radio' name='point7' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>2.3<td>ใช้สื่อการสอนสอดคล้องกับเนื้อหารายวิชาในทุกหน่วยเรียน<td><input type='radio' name='point8' value='5'><td><input type='radio' name='point8' value='4'><td><input type='radio' name='point8' value='3'><td><input type='radio' name='point8' value='2'><td><input type='radio' name='point8' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>2.4<td>มีอุปกรณ์และเครื่องมือประกอบการสอนเพียงพอ<td><input type='radio' name='point9' value='5'><td><input type='radio' name='point9' value='4'><td><input type='radio' name='point9' value='3'><td><input type='radio' name='point9' value='2'><td><input type='radio' name='point9' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>2.5<td>มีการใช้ตำราและเอกสารประกอบการสอนด้วยความเหมาะสม<td><input type='radio' name='point10' value='5'><td><input type='radio' name='point10' value='4'><td><input type='radio' name='point10' value='3'><td><input type='radio' name='point10' value='2'><td><input type='radio' name='point10' value='1'>";
echo "<tr bgcolor=#DFEFFF><td colspan =8 align=left><b>3.  การวัดและประเมินผลการเรียน</b>";
echo "<tr bgcolor=#ECF5FF><td align=center>3.1<td>มีหลักเกณฑ์และวิธีวัดการประเมินผลการเรียน<td><input type='radio' name='point11' value='5'><td><input type='radio' name='point11' value='4'><td><input type='radio' name='point11' value='3'><td><input type='radio' name='point11' value='2'><td><input type='radio' name='point11' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>3.2<td>เนื้อหาและการทดสอบสอดคล้องตามจุดประสงค์การสอน<td><input type='radio' name='point12' value='5'><td><input type='radio' name='point12' value='4'><td><input type='radio' name='point12' value='3'><td><input type='radio' name='point12' value='2'><td><input type='radio' name='point12' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>3.3<td>ตรวจงานที่มอบหมายและส่งกลับรวดเร็ว<td><input type='radio' name='point13' value='5'><td><input type='radio' name='point13' value='4'><td><input type='radio' name='point13' value='3'><td><input type='radio' name='point13' value='2'><td><input type='radio' name='point13' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>3.4<td>อาจารย์ได้ตรวจสอบผลการเรียนรู้ของนักศึกษาอย่างสม่ำเสมอ<td><input type='radio' name='point14' value='5'><td><input type='radio' name='point14' value='4'><td><input type='radio' name='point14' value='3'><td><input type='radio' name='point14' value='2'><td><input type='radio' name='point14' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>3.5<td>ให้นักศึกษาสามารถติดตามผลการวัดผลของการทดสอบตนเองได้<td><input type='radio' name='point15' value='5'><td><input type='radio' name='point15' value='4'><td><input type='radio' name='point15' value='3'><td><input type='radio' name='point15' value='2'><td><input type='radio' name='point15' value='1'>";
echo "<tr bgcolor=#DFEFFF><td colspan =8 align=left><b>4.  การปกครองชั้นเรียน</b>";
echo "<tr bgcolor=#ECF5FF><td align=center>4.1<td>มีการตักเตือนลงโทษและให้กำลังใจ ชมเชยเป็นบางครั้งอย่างเหมาะสม<td><input type='radio' name='point16' value='5'><td><input type='radio' name='point16' value='4'><td><input type='radio' name='point16' value='3'><td><input type='radio' name='point16' value='2'><td><input type='radio' name='point16' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>4.2<td>กำกับดูแลให้นักศึกษาเข้าเรียนหรือเข้าร่วมกิจกรรมอย่างสม่ำเสมอ<td><input type='radio' name='point17' value='5'><td><input type='radio' name='point17' value='4'><td><input type='radio' name='point17' value='3'><td><input type='radio' name='point17' value='2'><td><input type='radio' name='point17' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>4.3<td>มีการสอดแทรกจริยธรรมและคุณธรรมในระหว่างการเรียนการสอน<td><input type='radio' name='point18' value='5'><td><input type='radio' name='point18' value='4'><td><input type='radio' name='point18' value='3'><td><input type='radio' name='point18' value='2'><td><input type='radio' name='point18' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>4.4<td>มีการตรวจสอบรายชื่อจำนวนนักศึกษาทุกครั้งที่เข้าสอน<td><input type='radio' name='point19' value='5'><td><input type='radio' name='point19' value='4'><td><input type='radio' name='point19' value='3'><td><input type='radio' name='point19' value='2'><td><input type='radio' name='point19' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>4.5<td>สร้างบรรยากาศในการเรียนการสอนได้อย่างเหมาะสม<td><input type='radio' name='point20' value='5'><td><input type='radio' name='point20' value='4'><td><input type='radio' name='point20' value='3'><td><input type='radio' name='point20' value='2'><td><input type='radio' name='point20' value='1'>";
echo "<tr bgcolor=#DFEFFF><td colspan =8 align=left><b>5.  บุคลิกภาพของอาจารย์ผู้สอน</b>";
echo "<tr bgcolor=#ECF5FF><td align=center>5.1<td>แต่งกายเหมาะสมกับกาลเทศะ<td><input type='radio' name='point21' value='5'><td><input type='radio' name='point21' value='4'><td><input type='radio' name='point21' value='3'><td><input type='radio' name='point21' value='2'><td><input type='radio' name='point21' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>5.2<td>ใช้วาจาและภาษาที่เหมาะสม<td><input type='radio' name='point22' value='5'><td><input type='radio' name='point22' value='4'><td><input type='radio' name='point22' value='3'><td><input type='radio' name='point22' value='2'><td><input type='radio' name='point22' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>5.3<td>มีการควบคุมอารมณ์ได้อย่างเหมาะสม<td><input type='radio' name='point23' value='5'><td><input type='radio' name='point23' value='4'><td><input type='radio' name='point23' value='3'><td><input type='radio' name='point23' value='2'><td><input type='radio' name='point23' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>5.4<td>มีอัธยาศัยดี ยิ้มแย้มแจ่มใส<td><input type='radio' name='point24' value='5'><td><input type='radio' name='point24' value='4'><td><input type='radio' name='point24' value='3'><td><input type='radio' name='point24' value='2'><td><input type='radio' name='point24' value='1'>";
echo "<tr bgcolor=#ECF5FF><td align=center>5.5<td>นักศึกษามีความประทับใจในอาจารย์ผู้สอน<td><input type='radio' name='point25' value='5'><td><input type='radio' name='point25' value='4'><td><input type='radio' name='point25' value='3'><td><input type='radio' name='point25' value='2'><td><input type='radio' name='point25' value='1'>";
echo "<tr bgcolor=#DFEFFF><td align=center>ข้อเสนอแนะอื่นๆ<td align=center><textarea name='txtcm' cols='70' rows='3'></textarea>";
echo "<td align = center border = 0 colspan= 5><input type='submit' name='scorcesubmit' value='submit'>";
echo "</table>";
echo"</form>";
echo "<br><a href= # onclick = 'history.back()'><--back</a></center>";
?>

มีปัญหาตรงที่ไอ้ตัวสีแดงน่ะครับ ทั้งๆที่ฐานข้อมูลเป็น 'Y' แล้วมันก็ไม่ยอมบอกว่าได้ประเมินแล้วแต่สามารถเข้าหน้าประเมินได้อีก

แต่พอถ้าเข้ามาในหน้า verify ลองรีเฟช แล้วคลิก ให้คะแนน ปรากฏว่ามันใช้งานได้ตรงตามที่ต้องการ

มันจะเกี่ยวกับ session หรือเปล่าครับ คือถ้าไม่ รีเฟชหน้า verify ตรงหน้าหลัง ๆ ที่เป็น session จะไม่แสดงข้อมูลเลย

Administrator
Tue 29 Aug 2006 02:14:37
ปกติแล้วถ้าคุณต้องการใช้งาน SESSION จะต้องเรียกใช้งาน session_start() ทุกครั้งครับในทุกเอกสารที่ต้องการใช้งาน

จากโค๊ดข้างบนลองทำการ print_r($_SESSION) ดูก่อนบรรทัดที่เริ่ม query ดูครับว่าค่าที่ส่งมาตรงตามที่มันควรจะเป็นหรือไม่ครับ เข้าใจว่าน่าจะเป็นที่ตัวแปร session ไม่ถูกส่งมาครับ
โอ
โอ
Tue 29 Aug 2006 21:22:27

ลองดูแล้วครับ

คือเหมือนเดิมครับ

ถ้าไม่refresh ก็ไม่ออกครับ

Administrator
Tue 29 Aug 2006 21:25:48
ใส่ session_start() แล้วเหมือนเดิม แล้วลอง print_r($_SESSION) ตัวแปรต่างๆถูกส่งมาครบถ้วนหรือไม่ครับ
โอ
โอ
Tue 29 Aug 2006 23:12:27

ใส่ session_start() ไว้ทุกหน้าแล้วครับ

ปริ้นดูแล้วถ้า refresh ค่ามันก็ออก ถ้าไม่ refresh มันก็ไม่ออก

ไม่รู้เป็นเพราะไร

Administrator
Wed 30 Aug 2006 00:30:24
session_register('ss_idsub');
session_register('ss_namesub');
session_register('ss_nameteach');
session_register('ss_idteach');
$host = "localhost";
$user = "root";
$password = "";
$ss_idsub = $_GET[ss_id_sub];
$ss_idteach = $_GET[ss_id_teach];

$ss_idsub และ $ss_idteach ใช่ตัวแปร session ที่ register ไว้ใช่หรือไม่ครับ ถ้าใช่ควรใช้
$_SESSION["ss_idsub"] และ $_SESSION["ss_idteach"] แทนครับ

ถ้าทำการทดลองในเครื่องตนเองให้แก้ php.ini ให้ register_global = off เนื่องจาก
http://forum.modoeye.com/module26-22.html
และน่าจะเป็นเหตุผลที่ทำให้ application ของคุณมีปัญหาครับ
โอ
โอ
Wed 30 Aug 2006 21:36:06

 - register_globals = Off         [Security, Performance]
;     Global variables are no longer registered for input data (POST, GET, cookies,
;     environment and other server variables).  Instead of using $foo, you must use
;     you can use $_REQUEST["foo"] (includes any variable that arrives through the
;     request, namely, POST, GET and cookie variables), or use one of the specific
;     $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
;     on where the input originates.  Also, you can look at the
;     import_request_variables() function.
;     Note that register_globals is going to be depracated (i.e., turned off by
;     default) in the next version of PHP, because it often leads to security bugs.
;     Read http://php.net/manual/en/security.registerglobals.php for further
;     information.

ตรงนี้ใช่หรือเปล่าครับ

มันเปลี่ยนให้แล้วครับ

แก้ตามที่บอกแล้วครับ

ยังเป็นเหมือนเดิม

ยังไงก็ขอบคุณนะครับสำหรับคำแนะนำ

Administrator
Wed 30 Aug 2006 22:21:42
$link = mysql_connect($host,$user,$password) or die ("++ไม่สามารถติดต่อกับฐานข้อมูลได้++");
mysql_query("USE project;");
$sql = "SELECT * FROM score r, subject s, teacher t  WHERE  s.id_sub LIKE '".$_GET["ss_id_sub"]."'  AND s.id_teach LIKE '".$_GET["ss_id_teach"]."' AND s.id_sub = s.id_sub AND t.id_teach = s.id_teach;";
$result = mysql_query($sql);
$dbarr = mysql_fetch_array($result);
    $ss_namesub = $dbarr["name_sub"] ;
 $ss_nameteach =  $dbarr["name_teach"];
$sql2 = "SELECT * FROM status WHERE id_teach LIKE '".$_GET["ss_id_teach"]."' AND id_sub LIKE '".$_GET["ss_id_sub"]."' AND id_student = '".$_SESSION["ss_Pwd"]."' AND id_teach = '".$_GET["ss_id_teach"]."';";
$result2 = mysql_query($sql2);

ลองเปลี่ยนเป็นแบบนี้ดูครับ ความเห็นส่วนตัวแล้วผมจะไม่ทำการสร้างตัวแปรมารับค่าจาก pre-define global variables ($_GET, $_POST, $_REQUEST, $_SESSION, $_ENV, $_SERVER) ครับเนื่องจากมันเป็น global variable อยู่แล้วสามารถเรียกใช้งานได้โดยตรง และการสร้างตัวแปรมารองรับในแต่ละ script นั้นจะเป็นการเพิ่มภาระให้เครื่องโดยไม่จำเป็นครับ

ลองทดลองเปลี่ยนตามโค๊ดข้างบนดูครับ หรือลอง print() query string มาตรวจสอบค่าดูเพื่อความถูกต้องในการส่งข้อมูลแต่ละครั้งครับ
โอ
โอ
Thu 31 Aug 2006 20:46:39

ขอบคุณครับสำหรับคำตอบ

ลองย้าย session_start() ไปไว้บนสุด ปรากฏว่าได้ผลครับ

วันนี้มีคำถามใหม่ครับ

คือ สมมติว่า เพจ a.php จะทำฟอร์มโดยใช้ checkbox แล้วส่งไปให้ b.php

อยากจะถามว่าจะทำไงถึงจะรับค่าจาก form ในเพจ a ได้ ต้องใช้ post   เหมือน radio หรือเปล่าครับ คืองงที่ว่ามันมาได้หลายค่าอะครับ

Administrator
Thu 31 Aug 2006 23:58:09
session_start() ต้องอยู่บนสุดก่อนการใช้งาน $_SESSION ทั้งหมดครับ

การใช้งาน checkbox นั้นคือสามารถส่งค่ามาได้หลายค่า จึงต้องใช้ method post ครับ การสร้างฟอร์มก็สร้างเป็น array ของ object เช่น
<input type="checkbox" name="chk[]" value="1">
<input type="checkbox" name="chk[]" value="2">
<input type="checkbox" name="chk[]" value="3">

การรับค่าก็รับจากตัวแปร $_POST ครับ เช่น $_POST["chk"] ซึ่งจะได้เป็น array ของค่าที่มีการเลือกไว้ครับ
โอ
โอ
Sat 2 Sep 2006 01:22:32

--แล้วเวลาจะรับค่าจะต้องใส่อินเดกหรือเปล่าครับ

$_POST['chk[]']   ?

--และตรงใน input ต้องใส่ index ด้วยไหมครับ

name='chk[i]'   ?

ออ อีกอย่างครับสงสัยมานาน

--single and double quote ใช้แทนกันได้ไหมครับ หรือว่าเหมือนกันเลย

--ใน $_POST[]   || $_SESSION  || $_GET[]  จำเป็นไหมที่จะต้องมี quotation mark

--session_register() ถ้าเราไม่ใส่แล้วใส่ $_SESSION[] แล้ว assign ค่าให้มันเลยจะได้ไหมครับ

โอ
โอ
Sat 2 Sep 2006 01:29:00

อีกนิดนึงครับ

มีปัญหาอยู่ตรงที่ว่า ทำlay out ใน dream เอา php ไปวางแล้ว

เวลาที่ php มันทำงานแล้วหน้าเว็บมันจะยืดออกไป(แนวดิ่ง) ทำให้เกิดช่องว่างดูไม่สวยเลย

คือหน้าเว็บมันไม่แน่นอนอะครับ ถ้าให้ยาวไป เวลารันเนื้อหาออกมานิดเดียวมันก็ไม่เหมาะอีก ถ้าให้สั้น เวลารันเนื้อหาออกมามากก็เกิดรอยแยกของขอบกระดาษ

ไม่รู้ว่าโดยทั่วไปมีวิธีจัดการกับหน้าเว็บไงอะครับ

Administrator
Sat 2 Sep 2006 02:56:01
-เวลารับค่าก็จะเป็น array ครับ ถ้าต้องการเข้าถึงแต่ละข้อมูลก็ต้องเข้าถึงด้วย index เช่น $_POST["chk"][0]

-การสร้าง object แบบ array ใน html ไม่ต้องใส่ index ครับแต่ละตัวเขียนตามนั้นได้เลยครับ ซึ่ง browser จะทำการสร้าง index ให้แต่ละ object โดยอัตโนมัติครับ

-single quote และ double quote นั้นใน php จะเห็นเป็นค่าเดียวกันครับ ถ้าใน c การใช้ single quote จะหมายถึง charactor และ double quote ใช้ในกรณีสร้าง string เนื่องจากใน php จะมี automatic casting ทำให้แต่ละชนิดข้อมูลจะ cast ไปมาได้ไม่ต้องระบุชนิดของตัวแปร ทั้ง single quote และ double quote จะมีค่าเหมือนกันครับ

-การเข้าถึง associative array นั้นตาม syntax แล้วควรจะมี quote คร่อมชื่อของ index ครับ ในทางปฏิบัติผมเห็นหลายคน ไม่ค่อยใส่กัน (โดยส่วนตัวผมจะใส่ทุกครั้งครับ)

-การใช้ session_register() นั้นเท่าที่ทดลองผมไม่เห็นความแตกต่างระหว่างการ register หรือไม่ก็สามารถเรียกใช้งานได้อย่างถูกต้องครับ แต่ใส่ไว้ก็ไม่ได้เสียหลายครับ

-ถ้าหมายถึง lay out ที่เป็นรูปเช่น กรอบแสดงข้อความนั้น การตัดให้ตัดหัวท้ายและเส้นขอบด้านข้างแต่ละข้างนั้น ให้นำเส้นกรอบด้านข้างไปใส่เป็น background ของ column ที่ควรอยู่ครับ เช่น
<tr><td><img src="images/slices_02.jpg"></td>....
อย่างนี้ถ้า content ยาวๆแล้วจะเกิดช่องว่าง ให้เปลี่ยนเป็น
<tr><td width="10" background="images/slices_02.jpg"></td>....
การนำมาสร้างเป็น background นั้นจะทำให้มีการ แสดงซ้ำไปเรื่อยๆใน column นั้นๆครับ ที่สำคัญต้องระบุความกว้างของ column นั้นๆไว้ด้วยครับ
<tr><td style="background-image:url(images/slices_02.jpg); background-repeat: repeat-y; width: 10px;"></td>....
ผมใช้ style sheet ในการใส่ background สั่งให้มีการ repeat ในแกน y และที่สำคัญต้องระบุความกว้างของ column ไว้ด้วยครับ
โอ
โอ
Sun 3 Sep 2006 00:54:01

ขอบซ้ายและขอบขวาถ้าใส่เป็น background

เราไม่ต้องยืดหน้าเว็บรอมันใช่ไหมครับ

มันจะยืดเองได้ใช่ไหมครับ

ขอบคุณครับสำหรับทุก ๆ คำตอบ

เก่งจังเลยครับ จบ com sci หรือเปล่าครับ

Administrator
Sun 3 Sep 2006 02:02:02
ไม่ต้องยืดหรือหดครับเป็นคุณสมบัติของ table และคุณสมบัติของ background ครับ
ไม่ได้เก่งอะไรหรอกครับ เคยเจอปัญหานี้เหมือนกันก็ลองผิดลองถูกมาเยอะครับ

ปล. com eng ครับ
โอ
โอ
Mon 4 Sep 2006 00:16:54

<?
session_start();
if ($_SESSION["auth"] == "ok") {
session_register('ID');
$_SESSION[ID]=$_POST[Id_student];
$db_name = "project";
$table_name = "student";
$connection = @mysql_connect("localhost", "root", "") or die(mysql_error());
$db = @mysql_select_db($db_name, $connection) or die(mysql_error());
$sql = "INSERT INTO $table_name (Id_student, std_Fname, std_Lname, year, department, faculty, id_dep) VALUES ('$_POST[Id_student]','$_POST[std_Fname]', '$_POST[std_Lname]','$_POST[year]', 'Information System', 'Business Administration', '1')";
$result = @mysql_query($sql,$connection) or die(mysql_error());
hearder(locaton: addsub.php);
} else {
     exit;
}
?>

ทำไมมันไม่ยอมไปหน้า addsub.php ครับ

ไม่รู้ว่าจะเขียนถูกหรือเปล่า

Administrator
Mon 4 Sep 2006 01:42:14
header("Location: addsub.php");
ฟังก์ชั่น header() ต้องส่ง parameter เป็น string ครับ โดยต้องส่งตามมาตรฐาน HTTP/1.0 ด้วยครับ

อีกอย่าง die() นั้นไม่จำเป็นก็เอาออกเถอะครับ เพราะถ้าวันใดเกิดเหตุการไม่สามารถใช้งานฐานข้อมูลได้ จะทำให้ header() ไม่สามารถทำงานได้ครับ
อีกอย่าง http://forum.modoeye.com/module26-371.html เมื่อ debug เสร็จแล้วควรนำพวก die() ออกครับเพื่อความปลอดภัยเมื่อ production ครับ
โอ
โอ
Mon 4 Sep 2006 23:40:30

Not Found

The requested URL /blank.htm was not found on this server.


Apache/2.0.47 (Fedora) Server at www.modoeye.com Port 80
apiwan
apiwan
Sun 20 Apr 2008 20:34:07

เขียน session บน php4 พอมาrunบน PhP ไม่ได้ ติตที่ session_start()

webmaster
webmaster
Mon 21 Apr 2008 00:38:05
แจ้ง error ว่าอะไรล่ะครับ
chachacha
chachacha
Tue 27 May 2008 16:11:23
: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\AppServ\www\school\Webbord\Webborad.php on line 50

มัน error  แบบนี้อ่ะค่ะ  แก้มา 3 วันแล้ว  ยังเหมือนเดิม

ตรงฐานข้มมูลก้อไม่น่าพลาดน่ะค่ะ  ทำไงดี

webmaster
webmaster
Tue 27 May 2008 16:31:26
query ก่อนหน้านี้ไม่มีค่า return มาครับ ให้ลอง echo คำสั่งนั้นออกมาตรวจสอบครับ หรือให้แน่นอนก็เอาไป run ใน phpMyAdmin ครับ
chachacha
chachacha
Tue 27 May 2008 17:02:15

ขอโทษน่ะค่ะ  คือ   เพิ่งเคยใช้เป็นครั้งแรก  ยังไม่เข้าใจ งงๆ ก่งก๊งอยู่เลย

echo ค่า session  ที่ใช้เช็คหรอค่ะ

นี่ก้อ รัน  ใน  phpMyAdmin  แล้วน่ะ

webmaster
webmaster
Tue 27 May 2008 19:39:35
ผมไม่ได้กล่าวถึง Session ใดๆเลยครับ

mysql_num_rows() จะต้องผ่านค่า mysql resource เป็น parameter ให้กับฟังก์ชั่น ที่ error ก็บอกว่า parameter ที่ส่งมาไม่ใช่ mysql resource ดังนั้นก็ต้องไปตรวจค่าที่ผ่านมานั้นก่อนหน้านั้นไปทำอะไรมา

query คือคำสั่งในภาษา SQL ที่คุณส่งไปยัง DBMS ครับ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login