2015-10-03 4 views
4

У меня есть обновленный код. В старом коде у меня было 2 функции: display_maker_success() и display_maker_fail(), но я понял, что могу объединить эти две функции в один display_maker_stat(), добавив больше аргументов в функцию. Мне это очень нравится!повторное использование кода PHP. Есть ли лучший способ сделать это?

Это лучший способ сделать это? Я хочу больше повторного использования кода.

function display_maker_success($link, $userid){ 
    $status="closed"; 
    $result="completed"; 

    $sql = "select start, name from wuuk where tasker_id ='$userid' and status ='$status' and result ='$result' order by id desc LIMIT 6;"; 

    $result = mysql_query($sql, $link); 
    $isempty=mysql_num_rows($result); 
    If ($isempty ==0) { 
     echo "No Record"; 
    } else { 
     echo "<table border=1>"; 
     echo "<tr><th>Date & Time</th><th>Name</th><th>Status</th></tr>"; 
     while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
      echo "<tr><td>$row[0]</td><td>$row[1]</td><td>Completed</td></tr>"; 
     }; 
     echo "</table>"; 
    }; 
}; 

function display_maker_fail ($link, $userid) { 
    $status="closed"; 
    $result="fail"; 

    $sql = "select start, name from wuuk where tasker_id ='$userid' and status ='$status' and result ='$result' order by id desc LIMIT 1;"; 
    $result = mysql_query($sql, $link); 
    $isempty=mysql_num_rows($result); 
    If($isempty ==0){ 
     echo "No Record"; 
    } else { 
     echo "<table border=1>"; 
     echo "<tr><th>Date & Time</th><th>Name</th><th>Status</th></tr>"; 
     while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
      echo "<tr><td>$row[0]</td><td>$row[1]</td><td>fail</td></tr>"; 
     }; 
     echo "</table>"; 
    }; 
}; 

function display_maker_stat ($link, $userid, $reuslt, $limit) { 
    $status="closed"; 
    $result="fail"; 

    $sql = "select start, name from wuuk where tasker_id ='$userid' and status ='$status' and result ='$result' order by id desc LIMIT 1;"; 
    $result = mysql_query($sql, $link); 
    $isempty=mysql_num_rows($result); 
    If($isempty ==0){ 
     echo "No Record"; 
    } else { 
     echo "<table border=1>"; 
     echo "<tr><th>Date & Time</th><th>Name</th><th>Status</th></tr>"; 
     while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
      echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$result</td></tr>"; 
     }; 
     echo "</table>"; 
    }; 
}; 
+0

Я не понимаю, почему нет ... Вы всегда можете улучшить код повторно практичности, будучи более объектно-ориентированный –

+2

Я думаю, что такой вопрос может быть лучше подходят для HTTP: //codereview.stackexchange.com. Хотя вам, вероятно, следует прекратить использование [устаревшей библиотеки mysql] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) и убедитесь, что ваш код не уязвим до [SQL injection] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) перед тем, как отправиться туда, иначе вы можете просто утонуть в предложениях об этом. .. (Не поймите меня неправильно, однако, я думаю, что это хороший вопрос, чтобы спросить, и это здорово, что вы хотите улучшить свой код, как это.) –

ответ

3

Попробуйте ниже,

Также были несколько ошибок в коде и я исправил их.

function display_maker_stat($link, $userid, $reuslt = 'fail', $limit) 
{ 
    $status = "closed"; 
    $html = ''; 
    $sql = "select start, name from wuuk where tasker_id ='$userid' and status ='$status' and result ='$result' order by id desc LIMIT 1;"; 
    $query = mysql_query($sql, $link); 
    if (mysql_num_rows($query) != 0) { 
     $html .= "<table border=1>"; 
     $html .= "<tr><th>Date & Time</th><th>Name</th><th>Status</th></tr>"; 
     while ($row = mysql_fetch_array($query, MYSQL_NUM)) { 
      $html.= "<tr><td>$row[0]</td><td>$row[1]</td><td>$result</td></tr>"; 
     } 
     $html.= "</table>"; 
     echo $html; 
    } 
    else { 
     echo "No Record"; 
    } 
} 

Читайте о OOP

+0

thx :), что $ html является grt! Так что теперь мне не нужно использовать «эхо» сто раз! Если я хочу написать это в ООП. Как мне это сделать? – n00dle

+0

@ n00dle ваш приветствуем..О ООП, Конкатенация будет такой же :) .. Но другие, такие как mysqli connect или любые будут изменения .. Также я хотел бы рекомендовать вам пойти с фреймворком вроде ** codeigniter ** ..Также вы можете прочитать больше информации о ООП, проверить мой ответ .. – jlocker

+0

thx jlocker;) u grt help! О codeigniter, я никогда не использую третью сторону раньше. Но я бы не прочь попробовать. Это на этой ссылке http://www.codeigniter.com. Просто скачайте его правильно? – n00dle