PJ wrote:
Could somebody please explain this?
When the line - sort($category) is commented out, the output returns
Notice: Undefined offset: in the line "36" for all the repeats (29 in
this case)
The code below:
<?
$SQL = "SELECT name
FROM categories ORDER BY category_id
";
$category = array();
if ( ( $results = mysql_query($SQL, $db) ) !== false ) {
while ( $row = mysql_fetch_assoc($results) ) {
$category[$row['name']] = $row;
}
//sort($category);
$count = mysql_num_rows($results);
$lastIndex = ceil($count/2 -1); //echo $lastIndex;
$ii = 0;
while ($ii <= $lastIndex) {
$cat = $category[$ii]['name']; //=======this is line 36==========
$catn = preg_replace("/[^a-zA-Z0-9]/", "", $cat);
echo "<a href='../categories/", $catn, ".php'>", $cat, "</a><br />";
$ii++;
}
$ii = $lastIndex;
//echo $category[$ii]['category'];
while ($ii <= $count -1) {
$cat = $category[$ii]['name'];
$catn = preg_replace("/[^a-zA-Z0-9]/", "", $cat);
echo "<a href='../categories/", $catn, ".php'>", $cat, "</a><br>" ;
$ii++;
}
echo "</td></tr></table>" ;
}
?>
The same phenomenon happens in another application using the identical code.
I don't want to sort the category; that has been taken care of in the query.
It just doesn't make sense that sorting would affect the count. :-(
what your doing is:
$category[$row['name']]
which sets
$category['some name']
an associative array.
now when you do
sort($category);
you're sorting all results and assigning them to numerical indexes..
so now $category contains:
$category[0]
$category[1]
$category[2]
...
which is what you need seeing as you are cycling them as a numerical
array. so sort is turning your associative array in to the needed
indexed array.
if you remove sort($category) and then change this line:
$category[$row['name']] = $row;
to
$category[] = $row;
you'll find it works without error.
regards,
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php