Есть короче функции PHP: function admincontent($myrow){printf(" <tr> <td><a href=page.php?id=%s>%s</a></td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> ",$myrow['id'],$myrow['login'],$myrow['phone_number'],$myrow['lastname'],$myrow['firstname'],$myrow['Email']);} и PHP: function managercontent($myrow){printf(" <tr> <td><a href=page.php?id=%s>%s</a></td> <td>%s</td> <td>%s</td> <td>%s</td> ",$myrow['id'],$myrow['Lastname'],$myrow['Firstname'],$myrow['phone_number'],$myrow['month_limit']);} я установил парочку переменных в условие ну там типа если зашёл юзер 1 то переменной присваивается admincontent, а если зашёл пользоатель 2 то переменная принимает значение managercontent В принципе эта схема по логике должна работать, но есть прикол. Сами эти функции должны вызываться в цикле do while. Именно это и не работает. У меня отображается только шапки таблиц, а содержимого нет, пустые таблицы. вот кстати как происходит вызов PHP: do {$tableconnect; }while($myrow = mysql_fetch_array($result)); echo "</tr> </table><br>";
при варианте $tableconnect($myrow); ругается Function name must be a string in S:\home\Panalpina\www\userlist.php on line 64 А просто загонять этот print в цикл я не хочу: 1. Так было первоначально, но при таком раскладе без разницы кто зашёл, таблица выводится одна для всех, и тогда к чертям летит половина структуры. 2. Вообще для чего введена была эта переменная, на неё вешаются две разные функции, в зависимости от того кто зашёл в систему. PHP: if (!empty($_SESSION['login']) and !empty($_SESSION['password']) and $_SESSION['dostup'] == '0') { $dostup ='0'; //зашёл админ $status = "Администратор"; //права доступа $table=$tadmin; //вывести шапку таблицы для админа $tableconnect=admincontent($myrow); } elseif ($dostup='1') //зашёл офис-менеджер { $dostup ='1'; //зашёл OfficeManager $status = "Офис-Менеджер"; //права доступа $table=$tmanager; //вывести шапку таблицы для менеджера $tableconnect=managercontent($myrow); } А сейчас у меня получается что выводятся разные шапки, а содержимого таблиц вообще нету, такое ощущение, какбудто цикл не видит значение переменной, хотя и сама переменная в порядке, и функции, которые к ней цепляются, тоже в норме.
PHP: if (!empty($_SESSION['login']) and !empty($_SESSION['password']) and $_SESSION['dostup'] == '0') { $dostup ='0'; //зашёл админ $status = "Администратор"; //права доступа $table=$tadmin; //вывести шапку таблицы для админа $tableconnect='admincontent'; // <<- CHANGED CHANGED CHANGED CHANGED CHANGED } elseif ($dostup='1') //зашёл офис-менеджер { $dostup ='1'; //зашёл OfficeManager $status = "Офис-Менеджер"; //права доступа $table=$tmanager; //вывести шапку таблицы для менеджера $tableconnect='managercontent'; // <<- CHANGED CHANGED CHANGED CHANGED CHANGED } PHP: while($myrow = mysql_fetch_array($result)) // <<- CHANGED CHANGED CHANGED CHANGED CHANGED call_user_func($tableconnect, $myrow); // <<- CHANGED CHANGED CHANGED CHANGED CHANGED echo "</tr> </table><br>";
Ничего, просто выводит соответствующую шапку таблицы, как и раньше, а содержимое таблицы не выводит А как ещё можно сделать подобную штуку? Ну к примеру если срабатывает условие 1 то выполнить 1 цикл, либо выполнить 2 цикл. Я пробовал реализовать эту идею без использования функций, просто тупо брал и запихивал do(printf("бла-бла-бла")) в сами условия, но тогда страница начинает материться на какие-то запятые, ковычки, точки с запятой и т.д. Есть ещё вот такой рабочий вариант PHP: if (!empty($_SESSION['login']) and !empty($_SESSION['password']) and $_SESSION['dostup'] == '0') { // это администратор $dostup ='1'; } else { // это офис-менеджер $dostup ='2'; } echo "<table cellspacing='10'> <tr> <th>Логин</th> <th>Номер телефона</th> <th>Фамилия</th> <th>Имя</th> <th>Зачислено на баланс:</th> </tr>"; $result = mysql_query("SELECT * FROM users WHERE dostup='$dostup' ORDER BY login"); //извлекаем логин и идентификатор пользователей $myrow = mysql_fetch_array($result); do { //выводим их в цикле printf(" <tr> <td><a href=page.php?id=%s>%s</a></td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> ",$myrow['id'],$myrow['login'],$myrow['phone_number'],$myrow['lastname'],$myrow['firstname'],$myrow['month_limit']); } while($myrow = mysql_fetch_array($result)); echo "</tr> </table><br>"; Он выводит разное содержимое таблиц. Допусти зашёл Админ, выводит свписок всех офис-менеджеров, зашёл офис-менеджер, выводит список всех пользователей. Но в одну и ту же таблицу. Хотя по идее таблицы должны быть разные. Т.е. информация, которую видит офис-менеджер нафиг не нужна админу, ему нужны совсем другие данные
Всё заработало, тему можно закрывать, пришёл вот к такому варианту действий PHP: do { switch($tableconnect) { case "managercontent": managercontent($myrow); break; case "admincontent": admincontent($myrow); break; }