Use of undefined constant, MYSQL+sort
Bonjour,
J'ai un problème que je n'arrive pas à règler. Je sais que la notice ne change rien au code, mais j'aimerais modifier le code pour qu'il soit propre et sans notice. Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
| function GetFileList($languages_id = 4)
{
$newfiles = array();
SetBaseFilesToDefaultLanguage($languages_id); //make sure the default language matches the default files
if ($handle = @opendir(DIR_FS_CATALOG))
{
$found = false;
$newfiles = array();
$newfilesHdr = array();
$newfilesHdr[] = array('id' => SELECT_A_FILE, 'text' => SELECT_A_FILE);
$newfilesHdr[] = array('id' => SHOW_ALL_FILES, 'text' => SHOW_ALL_FILES);
$newfilesHdr[] = array('id' => ADD_MISSING_PAGES, 'text' => ADD_MISSING_PAGES);
$isTemplate = IsTemplate();
while (false !== ($file = readdir($handle)))
{
if (strpos($file, '.php') === FALSE)
continue;
if (($result = FileNotUsingHeaderTags($file)) === 'FALSE' || $isTemplate == 'true')
{
$pageTags_query = tep_db_query("select * from " . TABLE_HEADERTAGS . " where page_name like '" . $file . "' and language_id = '" . (int)$languages_id . "'");
$pageTags = tep_db_fetch_array($pageTags_query);
if (tep_db_num_rows($pageTags_query))
{
$newfiles[] = array('id' => $file, 'text' => $file);
}
}
else if ($result !== 'TRUE')
echo $result;
}
closedir($handle);
/************** Add the pseudo pages ***************/
$pageTags_query = tep_db_query("select * from " . TABLE_HEADERTAGS . " where page_name like '%?%' and language_id = '" . (int)$languages_id . "'");
while ($pageTags = tep_db_fetch_array($pageTags_query))
$newfiles[] = array('id' => $pageTags['page_name'], 'text' => $pageTags['page_name']);
}
else
echo sprintf(ERROR_FAILED_DIR_OPEN, DIR_FS_CATALOG);
$newfiles = SortFileList($newfiles, array(array('key'=>'text')));
return array_merge($newfilesHdr, (array)$newfiles);
}
function SortFileList($data, $keys)
{
// List As Columns
foreach ($data as $key => $row)
{
foreach ($keys as $k)
{
$cols[$k['key']][$key] = $row[$k['key']];
}
}
// List original keys
$idkeys=array_keys($data);
// Sort Expression
$i=0;
$sort = '(array)';
foreach ($keys as $k){
if($i>0){$sort.=',';}
$sort.='$cols['.$k['key'].']';
if (isset($k['sort'])){
if($k['sort']){$sort.=',SORT_'.strtoupper($k['sort']);}
}
if (isset($k['type'])){
if($k['type']){$sort.=',SORT_'.strtoupper($k['type']);}
}
$i++;
}
$sort.=',$idkeys';
$sort='array_multisort('.$sort.');'; // Sort Funct
eval($sort);
foreach($idkeys as $idkey){ // Rebuild Full Array
$result[$idkey]=$data[$idkey];
}
return $result;
} |
La notice que j'obtiens est
Citation:
Notice: Use of undefined constant text - assumed 'text' in /var/www/html/bijoux/admin/includes/functions/header_tags.php(842) : eval()'d code on line 1
Ce qui correspond à
eval($sort);
Je n'ai aucune idée comment passer de text à 'text'
Merci beaucoup!
Steve