Pardon me for the strtolower line, i've just forgot there... it's 4:30AM here in Slovakia... :/

correct listing follows...

<?php
$authors = array('élen', 'Élen', 'Elison', 'ámadeus', 'albert', 'alfred', 'amadeus', 'elen');


function usort_callback($a, $b) {
    $a = str_replace(array('á', 'é'), array('a', 'e'), strtolower($a));
    $b = str_replace(array('á', 'é'), array('a', 'e'), strtolower($b));
    return (strcmp($a, $b));
}

usort($authors, 'usort_callback');

var_dump($authors);
?>

regards,
m.

John Taylor-Johnston wrote:

http://compcanlit.usherbrooke.ca/new1/db/index.php?ausenquiry=e
http://compcanlit.usherbrooke.ca/new1/db/index.php?ausenquiry=é

It still sorts "é" and "e" separately, but without a parse error:

$first = array('à', 'é');
$second  = array('a', 'e');

usort($authors, create_function('$a,$b','
        $a = str_replace($first, $second, $a);
        $b = str_replace($first, $second, $b);
        return strcasecmp($a,$b);'));

Back to the drawing board? I tried this too:

$first = array('à', 'é', 'À', 'É');
$second  = array('a', 'e', 'A', 'É');

Ideas? Thanks,
John



Parse error on line 40:

39> usort($authors, create_function('$a,$b','
40>          $a = str_replace(array('é', 'à'), array('e', 'a'), $a);
41>          $b = str_replace(array('é', 'à'), array('e', 'a'), $b);
42>          return strcasecmp($a,$b);'));


<?php

if(!$ausenquiry) $ausenquiry ="a";

echo "<tr><td>
Note: A star, \"*\", indicates that the author uses a pseudonym.<br>Noter : Une étoile, 
\"*\", indique que cet auteur est connu par un nom de plume.

<table border=\"0\" cellspacing=\"0\" cellpadding=\"5\">\n";


###################################################### $myconnection = mysql_connect($server,$user,$pass); mysql_select_db($db,$myconnection);

$news = mysql_query("select id,AUS from $table");

######################################################
$authors = array();
$author_list = array();

while ($mydata = mysql_fetch_object($news))
{
  $mydata->AUS = str_replace(" ;", ";", $mydata->AUS);
  $mydata->AUS = str_replace("; ", ";", $mydata->AUS);
  $tempauthors = explode(";", $mydata->AUS);
  foreach ($tempauthors as $singleauthor)
  {
    if ($singleauthor <> "")
    {
      array_push($authors, $singleauthor);
      $author_list[$singleauthor][] = $mydata->id; // use an associative array...
   }
  }
}

#sort($authors);
#usort($authors, create_function('$a,$b','return strcasecmp($a,$b);'));

#usort($authors, create_function('$a,$b','
#         $a = str_replace(array('é', 'à'), array('e', 'a'), $a);
#         $b = str_replace(array('é', 'à'), array('e', 'a'), $b);
#         return strcasecmp($a,$b);'));

$first = array('à', 'é', 'À', 'É');
$second  = array('a', 'e', 'A', 'É');

usort($authors, create_function('$a,$b','
        $a = str_replace($first, $second, $a);
        $b = str_replace($first, $second, $b);
        return strcasecmp($a,$b);'));


foreach (array_count_values ($authors) as $author=>$count) {

 if((strtolower(substr($author, 0, 1)) == $ausenquiry))
 {

  echo "<tr bgcolor=\"#D3DCE3\">";
   echo "<th align=\"left\" colspan=\"2\"><a 
href=\"".$SCRIPT_NAME."?searchenquiry=".urlencode($author)."\">".$author."</a> <small>[&lt;--Search Entire 
Database]</small></th>";
   echo "<th align=\"right\" width=\"5%\" nowrap>(".$count." ";
    if($count > 1)
    {echo "records found/trouvés)";}
    else{echo "record found/trouvé)";}
   echo"</th></tr>\n";

   echo "<tr bgcolor=\"#F5F5F5\"><td>&nbsp;</td>";
   echo "<td align=\"left\">";
   $temp = "";
   foreach ($author_list[$author] as $ausid)
   {
   $temp .= "<a target=\"printwindow\" 
href=\"print.php?id=".urlencode($ausid)."\">".$ausid."</a>, ";
   }
   $temp = substr("$temp", 0, -2);
   echo "$temp</td>";
   echo "<td>&nbsp;</td>";
  echo "</tr>\n";
 }
}

mysql_close($myconnection);
######################################################
echo "</table>
</td>
</tr>\n";

?>


-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to