Возможно, вам просто нужно использовать mysql_fetch_assoc()
(или, возможно, mysql_fetch_row()
), чтобы считать данные из базы данных как ассоциативно ИЛИ проиндексированные, а не как оба, но я подозреваю, что ваш подход довольно некорректен - с одной стороны Вы делаете 6 запросов, где один будет делать. Вы также передаете массив с одним значением функции, которая, как я подозреваю, ожидает сравнения двух массивов с несколькими значениями.
Попробуйте вместо этого ( EDITED на основе комментариев ниже):
<?php
function diff($old, $new){
$maxlen = 0;
foreach ($old as $oindex => $ovalue) {
$nkeys = array_keys($new, $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;
}
}
}
return ($maxlen == 0)
? array(array('d'=>$old, 'i'=>$new))
: array_merge(
diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)),
array_slice($new, $nmax, $maxlen),
diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen)));
}
function htmlDiff($old, $new){
$ret = '';
$diff = diff(preg_split('/\s+/', $old), preg_split('/\s+/', $new));
foreach ($diff as $k) {
if (is_array($k)) {
$ret .= (!empty($k['d']) ? "<del style='color:red'>".implode(' ',$k['d'])."</del> " : '')
. (!empty($k['i']) ? "<ins style='color:green'>".implode(' ',$k['i'])."</ins> " : '');
} else {
$ret .= $k . ' ';
}
}
return $ret;
}
$query = "
SELECT
`m`.`history`, `p`.`history` AS 'p_history',
`m`.`personality`, `p`.`personality` AS 'p_personality',
`m`.`description`, `p`.`description` AS 'p_description'
FROM `members` `m`
JOIN `profile_edit` `p` ON `p`.`userid` = `m`.`id`
WHERE `m`.`id` = '".mysql_real_escape_string($id)."'
LIMIT 1
";
$result = mysql_query($query) or die(mysql_error());
$data = mysql_fetch_assoc($result);
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>History :: </td>
<td>".htmlDiff(htmlspecialchars($data['history']), htmlspecialchars($data['p_history']))."</td>
</tr>
<tr bgcolor=\"#000000\">
<td>Personality :: </td>
<td>".htmlDiff(htmlspecialchars($data['personality']), htmlspecialchars($data['p_personality']))."</td>
</tr>
<tr bgcolor=\"#000000\">
<td>Description :: </td>
<td>".htmlDiff(htmlspecialchars($data['description']), htmlspecialchars($data['p_description']))."</td>
</tr>
</table>
</form>";