1

ログインの詳細に基づいてテーブルからユーザーデータを取得する次のコードがあります

//==========================================
//  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ループに追加することだけですが、その後、ユーザーがレコードを持っている回数だけ出力します。

手伝ってくれますか?

4

2 に答える 2

1

ユーザー情報にアクセスするには、最初の行をフェッチする必要があります。つまりmysql_fetch_array、ループの前に一度呼び出す必要があります。

ループ内でも呼び出す必要があるため、これは問題になります。あらゆる種類のブール フラグまたは行のコピーを使用してハッキングできますが、最善の方法は、コードの構造を少し変更することです。

do-while loopをと組み合わせて使用​​しif statementます。これにより、最初に単一の行をフェッチし、何も見つからない場合に特別なアクションを実行できます。その後、現在の処理を実行するループを取得しました。反復の前ではなく後に次の行があるかどうかのみを確認します。そうでない場合、最初の行はテーブル出力でスキップされます。

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.
}
于 2012-10-23T14:04:20.533 に答える
0

ロジックに誤りがあります...学生のテーブルを作成していて、ログインしている学生へようこそをエコーし​​たい

しかし、あなたは使用しますecho "<p>Welcome "; echo $row[studentName];

$row が設定されていない場所...この名前は、以前の選択から取得する必要があります..

于 2012-10-23T14:04:34.090 に答える