我有以下代码,它根据登录详细信息从表中获取用户数据
//==========================================
// CONNECT TO THE LOCAL DATABASE
//==========================================
$user_name = "xxxx";
$pass_word = "xxxxx";
$database = "xxxx";
$server = "xxxxxx";
$db_handle = mysql_connect($server, $user_name, $pass_word);
$db_found = mysql_select_db($database, $db_handle);
if ($db_found) {
$SQL = "SELECT * FROM students WHERE L1 = '$uname' AND L2 = '" .md5 ($_POST['password'])."'";
$result = mysql_query($SQL);
$num_rows = mysql_num_rows($result);
//====================================================
// CHECK TO SEE IF THE $result VARIABLE IS TRUE
//====================================================
if ($result) {
if ($num_rows > 0) {
$color="1";
$result = mysql_query("SELECT * FROM entry, students WHERE entry.studentName = students.studentName AND students.L1='$uname' ") or die(mysql_error());
echo "<p>Welcome "; echo $row[studentName];
echo "<p>You records as of ";
echo date('l jS \of F Y h:i:s A');
echo "<table border='1' cellpadding='2' cellspacing='0'>";
echo "<tr> <th>Date</th><th>Student Name</th> <th>Tutor name</th> <th>Procedure name</th> <th>Grade</th><th>Student Reflection</th><th>Tutor Comments</th><th>Professionalism</th> <th>Communication</th> <th>Alert</th> <th>Dispute</th> </tr>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
if($color==1){
echo "<tr bgcolor=#DDD ><td>".$row['date']."</td><td>".$row['studentName']."</td><td>".$row['tutorName']."</td><td>".$row['procedureName']."</td><td>".$row['grade']."</td><td>".$row['studentReflection']."</td><td>".$row['tutorComments']."</td><td>".$row['professionalism']."</td><td>".$row['communication']."</td><td>".$row['alert']."</td><td>".$row['dispute']."</td></tr>";
// Set $color==2, for switching to other color
$color="2";
}
// When $color not equal 1, use this table row color
else {
echo "<tr bgcolor='#CCC'><td>".$row['date']."</td><td>".$row['studentName']."</td><td>".$row['tutorName']."</td><td>".$row['procedureName']."</td><td>".$row['grade']."</td><td>".$row['studentReflection']."</td><td>".$row['tutorComments']."</td><td>".$row['professionalism']."</td><td>".$row['communication']."</td><td>".$row['alert']."</td><td>".$row['dispute']."</td></tr>";
// Set $color back to 1
$color="1";
}
}
echo '</table>';
}
我想要做的是回显或打印出桌面上方的用户名,但我很难这样做。唯一希望我可以让它工作的是将它添加到while循环中,然后将它打印出来的次数与用户记录的次数相同。
你能帮忙吗?
答案 0 :(得分:1)
您需要获取第一行才能访问用户信息。这意味着您必须在循环之前调用mysql_fetch_array
一次。
这会让你遇到麻烦,因为你还需要在循环中调用它。您可以通过使用各种布尔标志或行的副本来解决这个问题,但最好的方法是稍微更改代码的结构。
使用do-while loop
,并结合if statement
。这允许您首先获取单行,如果没有找到则执行特殊操作。之后,你得到了一个循环来完成它现在所做的事情,只有它检查在迭代之后是否有下一行而不是之前,否则第一行将在表输出中被跳过。 / p>
if ($row = mysql_fetch_array( $result )) {
// Print user info
// Print table header
do {
// Print table row
} while ($row = mysql_fetch_array( $result ));
// Print table footer
}
else
{
// User not found. Print error or whatever.
}
答案 1 :(得分:0)
你的逻辑错了...... 你正在制作学生表,你想回应欢迎来到已登录的学生
但您使用echo "<p>Welcome "; echo $row[studentName];
其中$ row未设置...此名称应来自之前的选择..