Неустранимая ошибка алгоритма Пола Батлера и результаты не отображаются - PullRequest
0 голосов
/ 08 февраля 2012

Ух, у меня сегодня много вопросов ... Поэтому мне удалось немного исправить код, который я использовал для алгоритма сравнения Пола Батлера. Однако, хотя, похоже, нет проблемы с самим кодом, он не сравнивает два текстовых значения, которые я хочу сравнить с базой данных. Мне было интересно, была ли конкретная причина для этого? Или, может быть, это связано с тем, что все это в таблице? Не уверен, но в любом случае, там просто пустое место ... Кроме того, при размещении кода с различными значениями для $ old и $ new теперь он говорит:

Неустранимая ошибка: невозможно переопределить diff () (ранее объявлено в /home/equinox/public_html/admins/profile-tool_elizabeth.php:125) в /home/equinox/public_html/admins/profile-tool_elizabeth9ph.pl

Я не знаю, почему это так ... строка 125 - это первая "функция diff", а 169 - это "функция diff" для следующих двух значений, которые я хочу сравнить. Не уверен, что там происходит ...

вот в основном весь код:

<?php

  session_start();

   while ($nSELECT = mysql_fetch_object($SELECT)) {

        echo "

          <tr bgcolor=\"#000000\">

           <td><a href=\"$PHP_SELF?id=" . $nSELECT->userid . "\">" . getName($nSELECT->userid) . "</a></td>


          </tr>

        ";

      }

    }

    echo "</table><p>";

  } elseif (empty($_GET['s']) && !empty($_GET['id'])) {

    $SELECT = mysql_query("SELECT * FROM profile_edit WHERE userid = '$id'") or die(mysql_error()); 
    $SELECT = mysql_fetch_object($SELECT);

    $USERINFO = mysql_query("SELECT * FROM members WHERE id = '$id'") or die(mysql_error());
    $USERINFO = mysql_fetch_object($USERINFO);

    $oldhistory = mysql_query("SELECT history FROM members WHERE id = '$id'") or die(mysql_error());
    $oldhistory = mysql_fetch_object($oldhistory);

    $newhistory = mysql_query("SELECT history FROM profile_edit WHERE userid = '$id'") or die(mysql_error());   
    $newhistory = mysql_fetch_object($newhistory);

    $OLDPERSONALITY = mysql_query("SELECT personality FROM members WHERE id = '$id'") or die(mysql_error());
    $OLDPERSONALITY = mysql_fetch_object($OLDPERSONALITY);

    $NEWPERSONALITY = mysql_query("SELECT personality FROM profile_edit WHERE userid = '$id'") or die(mysql_error());   
    $NEWPERSONALITY = mysql_fetch_object($NEWPERSONALITY);

    $OLDAPPEARANCE = mysql_query("SELECT description FROM members WHERE id = '$id'") or die(mysql_error());
    $OLDAPPEARANCE = mysql_fetch_object($OLDAPPEARANCE);

    $NEWAPPEARANCE = mysql_query("SELECT personality FROM profile_edit WHERE userid = '$id'") or die(mysql_error());    
    $NEWAPPEARANCE = mysql_fetch_object($NEWAPPEARANCE);




    echo "

      <form action=\"$PHP_SELF?id=$id&s=a\" method=\"post\">

      <table cellpadding=\"5\" cellspacing=\"1\" border=\"0\" align=\"center\" bgcolor=\"#234904\">

        <tr bgcolor=\"#000000\">

         <td>Username :: </td>

         <td><a href=\"/profile.php?id=".$SELECT->userid."\" target=\"_blank\">" . getName($SELECT->userid) ."</a> (Click to see current profile in new window)</td>

        <tr bgcolor=\"#000000\">

         <td>Species :: </td>

         <td>" . $USERINFO->species2 ." -> ". $USERINFO->subspecies ." (". $USERINFO->clan .")</td>

        <tr bgcolor=\"#000000\">

         <td>History :: </td>
         <td> 
";

function diff($oldhistory, $newhistory){
    foreach($oldhistory as $oindex => $ovalue){
        $nkeys = array_keys($newhistory, $ovalue);
        foreach($nkeys as $nindex){
            $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
                $matrix[$oindex - 1][$nindex - 1] + 1 : 1;
            if($matrix[$oindex][$nindex] > $maxlen){
                $maxlen = $matrix[$oindex][$nindex];
                $omax = $oindex + 1 - $maxlen;
                $nmax = $nindex + 1 - $maxlen;
            }
        }   
    }
    if($maxlen == 0) return array(array('d'=>$oldhistory, 'i'=>$newhistory));
    return array_merge(
        diff(array_slice($oldhistory, 0, $omax), array_slice($newhistory, 0, $nmax)),
        array_slice($newhistory, $nmax, $maxlen),
        diff(array_slice($oldhistory, $omax + $maxlen), array_slice($newhistory, $nmax + $maxlen)));
}

function htmlDiff($oldhistory, $newhistory){
    $diff = diff(explode(' ', $oldhistory), explode(' ', $newhistory));
    foreach($diff as $k){
        if(is_array($k))
            $ret .= (!empty($k['d'])?"<del>".implode(' ',$k['d'])."</del> ":'').
                (!empty($k['i'])?"<ins>".implode(' ',$k['i'])."</ins> ":'');
        else $ret .= $k . ' ';
    }
    return $ret;
}



echo "</td>

        </tr>


        <tr bgcolor=\"#000000\">

         <td>Description :: </td>

         <td>";

function diff($oldappearance, $newappearance){
    foreach($oldappearance as $oindex => $ovalue){
        $nkeys = array_keys($newappearance, $ovalue);
        foreach($nkeys as $nindex){
            $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
                $matrix[$oindex - 1][$nindex - 1] + 1 : 1;
            if($matrix[$oindex][$nindex] > $maxlen){
                $maxlen = $matrix[$oindex][$nindex];
                $omax = $oindex + 1 - $maxlen;
                $nmax = $nindex + 1 - $maxlen;
            }
        }   
    }
    if($maxlen == 0) return array(array('d'=>$oldappearance, 'i'=>$newappearance));
    return array_merge(
        diff(array_slice($oldappearance, 0, $omax), array_slice($newappearance, 0, $nmax)),
        array_slice($newappearance, $nmax, $maxlen),
        diff(array_slice($oldappearance, $omax + $maxlen), array_slice($newappearance, $nmax + $maxlen)));
}

function htmlDiff($oldappearance, $newappearance){
    $diff = diff(explode(' ', $oldappearance), explode(' ', $newappearance));
    foreach($diff as $k){
        if(is_array($k))
            $ret .= (!empty($k['d'])?"<del>".implode(' ',$k['d'])."</del> ":'').
                (!empty($k['i'])?"<ins>".implode(' ',$k['i'])."</ins> ":'');
        else $ret .= $k . ' ';
    }
    return $ret;
}


echo "</td>


        </tr>


        <tr bgcolor=\"#000000\">

         <td>Description :: </td>

         <td>";

function diff($oldappearance, $newappearance){
    foreach($oldappearance as $oindex => $ovalue){
        $nkeys = array_keys($newappearance, $ovalue);
        foreach($nkeys as $nindex){
            $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
                $matrix[$oindex - 1][$nindex - 1] + 1 : 1;
            if($matrix[$oindex][$nindex] > $maxlen){
                $maxlen = $matrix[$oindex][$nindex];
                $omax = $oindex + 1 - $maxlen;
                $nmax = $nindex + 1 - $maxlen;
            }
        }   
    }
    if($maxlen == 0) return array(array('d'=>$oldappearance, 'i'=>$newappearance));
    return array_merge(
        diff(array_slice($oldappearance, 0, $omax), array_slice($newappearance, 0, $nmax)),
        array_slice($newappearance, $nmax, $maxlen),
        diff(array_slice($oldappearance, $omax + $maxlen), array_slice($newappearance, $nmax + $maxlen)));
}

function htmlDiff($oldappearance, $newappearance){
    $diff = diff(explode(' ', $oldappearance), explode(' ', $newappearance));
    foreach($diff as $k){
        if(is_array($k))
            $ret .= (!empty($k['d'])?"<del>".implode(' ',$k['d'])."</del> ":'').
                (!empty($k['i'])?"<ins>".implode(' ',$k['i'])."</ins> ":'');
        else $ret .= $k . ' ';
    }
    return $ret;
}


echo "</td>

        </tr>

        <tr bgcolor=\"#000000\">

         <td colspan=\"2\" style=\"text-align: center\"><input type=\"submit\" value=\"Accept\"></td>

        </tr>

      </table>

      </form>

      <p><br>

      <form action=\"$PHP_SELF?id=$id&s=d\" method=\"post\">

    <table cellpadding=\"5\" cellspacing=\"1\" border=\"0\" align=\"center\" bgcolor=\"#234904\">

      <tr bgcolor=\"#000000\">

         <td>Reason :: </td>

         <td><textarea name=\"reason\" rows=\"6\" cols=\"30\"></textarea></td>

        </tr>

        <tr bgcolor=\"#000000\">

         <td colspan=\"2\" style=\"text-align: center\"><input type=\"submit\" value=\"Deny\"></td>

        </tr>

      </table>

      </form>

    ";

  } 


  incFooter();

?>

1 Ответ

1 голос
/ 08 февраля 2012

Переименуйте вашу функцию с diff на что-то другое.Это сообщение об ошибке появляется, если вы пытаетесь объявить две функции с одинаковым именем в одной и той же области видимости.

...