2015-12-20 115 views
-1

我正在嘗試做一個dico檢查。因此,當用戶寫一個字時,代碼將找到第一個字母並從對應表中檢查。我把字典分成26個表格。 代碼正在運行,但代碼太糟糕了,太多的重複。 我知道有一些方法可以減少所有的代碼。 那麼...有什麼建議嗎?使用php避免重複行

<?php 
$lng=strlen($word);$cr=0; 
$f1='<div class="fOne">Votre mot : '.$word.' (<b>'.$lng.'</b> Lettres)'; 
$f2='<div class="fTwo">Votre mot : '.$word.' (<b>'.$lng.'</b> Lettres)'; 
$f3='<div class="fThree">********** ('.$lng.' Lettres)'; 
    if ($lng>0) 
     { 
     include "../config.php"; 
if($lng==10) { 
if (mysql_num_rows(mysql_query("SELECT mot FROM dix WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; 
else {echo $f2.' est incorrect !<br>';$cr=1;} 
} else { 
     switch ($word[0]) 
      { 
      case 'A':if (mysql_num_rows(mysql_query("SELECT mot FROM adiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'B':if (mysql_num_rows(mysql_query("SELECT mot FROM bdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'C':if (mysql_num_rows(mysql_query("SELECT mot FROM cdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'D':if (mysql_num_rows(mysql_query("SELECT mot FROM ddiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'E':if (mysql_num_rows(mysql_query("SELECT mot FROM ediki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'F':if (mysql_num_rows(mysql_query("SELECT mot FROM fdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'G':if (mysql_num_rows(mysql_query("SELECT mot FROM gdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'H':if (mysql_num_rows(mysql_query("SELECT mot FROM hdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'I':if (mysql_num_rows(mysql_query("SELECT mot FROM idiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'J':if (mysql_num_rows(mysql_query("SELECT mot FROM jdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'K':if (mysql_num_rows(mysql_query("SELECT mot FROM kdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'L':if (mysql_num_rows(mysql_query("SELECT mot FROM ldiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'M':if (mysql_num_rows(mysql_query("SELECT mot FROM mdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'N':if (mysql_num_rows(mysql_query("SELECT mot FROM ndiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'O':if (mysql_num_rows(mysql_query("SELECT mot FROM odiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'P':if (mysql_num_rows(mysql_query("SELECT mot FROM pdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'Q':if (mysql_num_rows(mysql_query("SELECT mot FROM qdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'R':if (mysql_num_rows(mysql_query("SELECT mot FROM rdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'S':if (mysql_num_rows(mysql_query("SELECT mot FROM sdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'T':if (mysql_num_rows(mysql_query("SELECT mot FROM tdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'U':if (mysql_num_rows(mysql_query("SELECT mot FROM udiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'V':if (mysql_num_rows(mysql_query("SELECT mot FROM vdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'W':if (mysql_num_rows(mysql_query("SELECT mot FROM wdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'X':if (mysql_num_rows(mysql_query("SELECT mot FROM xdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'Y':if (mysql_num_rows(mysql_query("SELECT mot FROM ydiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      case 'Z':if (mysql_num_rows(mysql_query("SELECT mot FROM zdiki WHERE mot='$word'",$conn))>0) echo $f1.' est correct ! <br>'; else {echo $f2.' est incorrect !<br>';$cr=1;} break; 
      } 
         } 
     } 
    else {$cr=1;echo $f3.' - Pas de mot !';} 
?> 

+3

此代碼是不可讀。如果條件相差一個字母,則所有條件均爲 – Aerendir

+0

。你爲什麼要複製一個字母的整個字符串? –

+0

開關'用戶輸入的單詞的第一個字母',如果它是'A',那麼cpu將會前往Adiki表,所有以'A'開始的單詞都被存儲。 –

回答

0
<?php 
    $firstletter = strtolower($word[0]); //making it lowercase 
    if(ctype_alnum($firstletter)) { //checking if it's a letter and nothing else 
     $sql = "SELECT mot FROM {$firstletter}diki WHERE mot='$word'"; 
     if (mysql_num_rows(mysql_query($sql,$conn))>0) { 
      echo $f1.' est correct ! <br>'; 
     } 
     else { 
      echo $f2.' est incorrect !<br>'; 
      //what ever else you need here 
     } 
    } else { 
     echo('First character is not a letter.'); 
    } 
?>