2009-09-07 5 views
0

Я по-прежнему новичок в некоторых функциях PHP. Есть ли способ очистить следующий код, потому что я знаю, что все это просто не нужно, и это дает мне головную боль. Все после утверждения if для каждого набора кода одинаково.Очистка PHP и очистка ненужного кода

if($class == "2"){if ($posts >= 1){ 
$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error()); 
if (!mysql_query($sql)) {die('Error: ' . mysql_error());} echo "";} 
else {$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
mysql_query($sql) or die(mysql_error()); 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error());}} 


if($class == "3"){if ($posts >= 2){ 
$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error()); 
if (!mysql_query($sql)) {die('Error: ' . mysql_error());} echo "";} 
else {$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
mysql_query($sql) or die(mysql_error()); 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error());} 


if($class == "4"){if ($posts >= 3){ 
$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error()); 
if (!mysql_query($sql)) {die('Error: ' . mysql_error());} echo "";} 
else {$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
mysql_query($sql) or die(mysql_error()); 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error());}} 


if($class == "5"){if ($posts >= 4){ 
$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error()); 
if (!mysql_query($sql)) {die('Error: ' . mysql_error());} echo "";} 
else {$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
mysql_query($sql) or die(mysql_error()); 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error());}} 


if($class == "6"){if ($posts >= 5){ 
$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error()); 
if (!mysql_query($sql)) {die('Error: ' . mysql_error());} echo "";} 
else {$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
mysql_query($sql) or die(mysql_error()); 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error());}} 


if($class == "7"){if ($posts >= 6){ 
$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error()); 
if (!mysql_query($sql)) {die('Error: ' . mysql_error());} echo "";} 
else { $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
mysql_query($sql) or die(mysql_error()); 
$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
mysql_query($insert) or die(mysql_error()); }}}}}} 

ответ

4

Разве вы не узнали что-то от your previous question?

if ($class >= 2 && $class <= 7) { 
    if ($posts >= ($class - 1)) { 
     $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
     $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
     mysql_query($insert) or die(mysql_error()); 
     if (!mysql_query($sql)) { 
      die('Error: ' . mysql_error()); 
     } 
    } else { 
     $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
     mysql_query($sql) or die(mysql_error()); 
     $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
     mysql_query($insert) or die(mysql_error()); 
    } 
} 
+3

@Joey: Но шаблон был почти таким же. Таким образом, вы сначала могли бы попробовать это самостоятельно. – Gumbo

-1

Это немного easiar на глазах и easiar работать, вы имели некоторые дополнительные } там, что я удалил.

Я бы сломать некоторые из повторяющегося кода вверх в пару функций по крайней мере

<?php 

if ($class == "2") { 
    if ($posts >= 1) { 
     $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
     $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
     mysql_query($insert) or die(mysql_error()); 
     if (!mysql_query($sql)) { 
      die('Error: ' . mysql_error()); 
     } 
     echo ""; 
    } else { 
     $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
     mysql_query($sql) or die(mysql_error()); 
     $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
     mysql_query($insert) or die(mysql_error()); 
    } 
} 

if ($class == "3") { 
    if ($posts >= 2) { 
     $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
     $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
     mysql_query($insert) or die(mysql_error()); 
     if (!mysql_query($sql)) { 
      die('Error: ' . mysql_error()); 
     } 
     echo ""; 
    } else { 
     $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
     mysql_query($sql) or die(mysql_error()); 
     $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
     mysql_query($insert) or die(mysql_error()); 
    } 
    if ($class == "4") { 
     if ($posts >= 3) { 
      $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
      $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
      mysql_query($insert) or die(mysql_error()); 
      if (!mysql_query($sql)) { 
       die('Error: ' . mysql_error()); 
      } 
      echo ""; 
     } else { 
      $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
      mysql_query($sql) or die(mysql_error()); 
      $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
      mysql_query($insert) or die(mysql_error()); 
     } 
    } 
    if ($class == "5") { 
     if ($posts >= 4) { 
      $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
      $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
      mysql_query($insert) or die(mysql_error()); 
      if (!mysql_query($sql)) { 
       die('Error: ' . mysql_error()); 
      } 
      echo ""; 
     } else { 
      $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
      mysql_query($sql) or die(mysql_error()); 
      $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
      mysql_query($insert) or die(mysql_error()); 
     } 
    } 
    if ($class == "6") { 
     if ($posts >= 5) { 
      $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
      $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
      mysql_query($insert) or die(mysql_error()); 
      if (!mysql_query($sql)) { 
       die('Error: ' . mysql_error()); 
      } 
      echo ""; 
     } else { 
      $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
      mysql_query($sql) or die(mysql_error()); 
      $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
      mysql_query($insert) or die(mysql_error()); 
     } 
    } 
    if ($class == "7") { 
     if ($posts >= 6) { 
      $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 
      $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
      mysql_query($insert) or die(mysql_error()); 
      if (!mysql_query($sql)) { 
       die('Error: ' . mysql_error()); 
      } 
      echo ""; 
     } else { 
      $sql = "UPDATE users SET posts=posts+1,tposts=tposts+1 WHERE `users`.`friendid` = '$friend'"; 
      mysql_query($sql) or die(mysql_error()); 
      $insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 
      mysql_query($insert) or die(mysql_error()); 
     } 
    } 
} 

?> 
1

Если просто - все после того, если утверждение является одинаковым для каждого набора кода - вы можете просто создайте функцию и вызовите ее для каждого класса.

Копающ этот код дает мне головную боль тоже, поэтому я не делал его повсюду, но похоже, что здесь может быть сделан основной рефакторинг.

То, что я был в состоянии сказать, на первый взгляд - вам не нужны все эти if заявления, потому что они всегда укладываются в схеме:

if ($posts >= ($class - 1)) { 
    ... 
} 
1

Я бы извлечь две функции из там, insert() и update() , Вот код для insert(), я оставляю другой для вас:

/** 
* @param string $table Table name to insert $values into 
* @param array $values Key is field name, value is field value to insert 
* @return null 
* @throws Exception if query fails 
*/ 
function insert($table, $values) { 
    $sql = array(); 

    foreach ($values as $field => $value) { 
     $sql[] = "`$field` = '" . mysql_real_escape_string($value) . "'"; 
    } 

    $sql = "INSERT INTO `$table` SET " . implode(', ', $sql); 

    if (! mysql_query($q)) { 
     throw new Exception(mysql_error()); 
    } 
} 

После этого шага, используйте его и посмотреть, что в дальнейшем дублирование кода там и извлечь его в некоторые другие функции.

В случае update() вам понадобится третий параметр для части WHERE.

3

Yikes, что болит глаза. Вот несколько советов.

0 - Напишите код для чтения людям. Важнейшим уроком для изучения является то, что код предназначен для людей читать не компьютеры.

1 - Стиль кода. Обратите внимание на фигурные скобки. Как правило, { должен вызывать весь код между { и сопровождающим } с отступом. 4 пробела - разумное количество отступов. Это упрощает определение вашего кода и, следовательно, легче выявлять ошибки.

2 - Подтвердить все входные данные. Никогда не доверяйте тому, что пользователь подает. В ваших операторов SQL у вас есть следующие:

$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'";` 

Проблема заключается в $friend переменной. Я предполагаю, что это основано на пользовательском вводе. Пользователь может ввести что-то неприятное, как 2; DELETE * FROM * (хорошо, что SQL может быть неправильным, но вы получаете идею). Подтвердите все входные данные и всегда используйте параметры SQL.

3 - Использовать функции. Функции должны использоваться для уменьшения дублирования кода.Уменьшение количества операторов в коде снижает вероятность ошибок. Функции должны использоваться для указания намерения кода. Например, если у вас есть сложное выражение для оператора if, вы можете переместить выражение в отдельную функцию. Например, if (isDateInRange($date, $range)) {}

И, наконец, потратьте время на ваш код. Спросите себя: «Является ли цель кода понятным?», «Есть ли лучший способ сделать это?». Убедитесь, что вы понимаете каждую строку своего кода. Искушение, когда вы начинаете, должно иметь отношение «ура, оно работает! Давайте двигаться дальше'. Сопротивляйтесь этому искушению, это не принесет вам пользы в долгосрочной перспективе.

+0

$ friend = $ _SESSION ['userid']; расположенный в моем файле конфигурации. – Homework

+0

@Joey. Я хотел сказать, что вы всегда должны проверять ввод. Всегда используйте параметры SQL, независимо от того, откуда поступают данные. –

0
<?php 

function update_users($friend){ 

$sql = "UPDATE users SET posts=posts+1,tposts=tposts+1,points=points+25,tpoints=tpoints+25 WHERE `users`.`friendid`='$friend'"; 

if (!mysql_query($sql)) { die('Error: ' . mysql_error()); } 

} 

function insertproof($friend,$binfo){ 

$insert = "INSERT INTO proofs (`ID` ,`friendid` ,`bulletinid`)VALUES('', '$friend' , '$binfo');"; 

mysql_query($insert) or die(mysql_error());  

echo ""; 

} 

?> 

подумал, что это может оказаться полезным для вас.

Смежные вопросы