-1

こんにちは現在、私はこのコード行で作業しています:

    if( $get_display->level== "Nursery"){
        $lbl="Kinder";
        }
    else if( $get_display->level== "Kinder"){
        $lbl="Preparatory";
        }
    else if( $get_display->level== "Preparatory"){
        $lbl="Grade 1";
        }
    else if( $get_display->level== "Grade 1"){
        $lbl="Grade 2";
        }
     ******THE else if goes on but still the same*****

そのため、生徒の成績に応じてセクションを自動的に選択することを計画しています。このコードを上記の各ifステートメントに配置することを計画しています。このような:

    else if( $get_display->level== "Grade 1"){
        $lbl="Grade 2";
                 if($get_display->gpa => "88"){ 
       $result = mysql_query("SELECT * FROM tbl_section where level='$lbl' 
       and section_name="A"");
       $row = mysql_fetch_array($result);
               $sname = $row['section_name'];
               }else if($get_display->gpa => "80"){ 
       $result = mysql_query("SELECT * FROM tbl_section where level='$lbl' 
       and section_name="B"");
       $row = mysql_fetch_array($result);
               $sname = $row['section_name'];
       }else if($get_display->gpa => "75"){ 
       $result = mysql_query("SELECT * FROM tbl_section where level='$lbl' 
       and section_name="C"");
       $row = mysql_fetch_array($result);
               $sname = $row['section_name'];                        
                    }
        }

そして、$ snameはここで使用されます:

    <input type="text"  name="levele" value="<?php echo $sname;?>">

私の主な問題は、セクションaがいっぱいの場合、セクションbに自動的に挿入されるはずです。どうすればそれができますか?にいる学生を数えるために、 tbl_sectionにフィールドを追加する必要がありますか?また、DBを改ざんした場合、どのように表示されますか?(plsは、私のDBが非常に危険にさらされていることについては言及していません。単純なプロジェクトであることはすでに知っていますが、後でmysql_real_escape_string()を実装します。まだ、mysqliに関する知識はありません。)

編集:セクションaとbは、私のデータベースの単なるフィールド名です。ここでは、tbl_sectionがどのように見えるかを示します。

     section_id (int)
     section_name(vchar)(default names are A,B,C and cannot be changed)
     sy (school year) 
     adviser_id
     level

ここに私のデータベースを表示するのは初めて申し訳ありませんが、これが正しいことを願っています。

4

1 に答える 1

1

私はSELECTそれsection_nameがいっぱいではないでしょう:

SELECT section_name, COUNT(*) 
FROM tbl_section 
WHERE level='$lbl' 
GROUP BY section_name
HAVING COUNT(*) < 80 
LIMIT 1

また、関数は非推奨になり、SQLインジェクションに対して脆弱であるため、mysql_関数の使用を停止する必要があります。

また、上記のスニペットを次のように凝縮するように書き直します。

elseif( $get_display->level== "Grade 1" ) {
    $lbl="Grade 2";

    if( $get_display->gpa => "88" ) {
        $section_name = 'A';
    }
    elseif( $get_display->gpa => "80" ) {
        $section_name = 'B';
    }
    elseif( $get_display->gpa => "75" ) {
        $section_name = 'C';                      
    }

    $result = mysql_query("SELECT * FROM tbl_section where level='$lbl' and section_name='$section_name' LIMIT 1");
    $row = mysql_fetch_array($result);
    $sname = $row['section_name'];  
}
于 2012-09-06T14:06:42.543 に答える