Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129

Функция не возвращает имя пользователя

25.07.2015, 19:28. Показов 1228. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток! Скажите пожалуйста, что не так? Не выводится имя пользователя когда пишу функцию, без созданния функции все ок, но когда использую созданну функцию не получается сделать этого.
PHP
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
if(!empty($_GET['to'])){
                        $to_user = $_GET['to'];
                        $query = mysql_query("SELECT * FROM users where user_id = $to_user") or die(mysql_error());
                        $row = mysql_fetch_assoc($query);
                        if(!empty($row['username'])){
                            $username = $row['username'];
                            echo "Dialog with <a href='user/$username'>$username</a>:";
                            $from = $user_data['user_id'];
                            $to = $_GET['to'];
                            $query = mysql_query("SELECT * FROM `messages` WHERE `from` = $from AND `to` = $to OR `from` = $to AND `to` = $from ORDER BY `id` DESC") or die(mysql_error());
                            $messages = mysql_fetch_array($query);?>
                            <div class="messages-box">
<?php
                                if(!empty($messages)) {
                                    do{
                                        $from_username_id = $messages['from'];//выборка имени 
                                        $query_get_name = mysql_query("SELECT * FROM `users` WHERE `user_id` = '$from_username_id'") or die(mysql_error());//выборка имени 
                                        $row = mysql_fetch_assoc($query_get_name);//выборка имени 
                                        $from_username = $row['username'];//выборка имени 
                                        echo "<div class='message'>";
                                        echo "<a href='user/$from_username'>";
                                        echo $from_username;
                                        echo '</a>:<br>';
                                        echo $messages['message'];
                                        echo "</div>";
                                    }while($messages = mysql_fetch_array($query));
                                }else{
                                        echo "Dialog is empty!";
                                    }?>
                            </div>
Когда создаю функцию, ничего не выводится
PHP
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
function username_from_id(){
    $from_username_id = $messages['from'];
    $query_get_name = mysql_query("SELECT * FROM `users` WHERE `user_id` = '$from_username_id'") or die(mysql_error());
    $row = mysql_fetch_assoc($query_get_name);
    $from_username = $row['username'];
    return $from_username;
}
if(!empty($_GET['to'])){
                        $to_user = $_GET['to'];
                        $query = mysql_query("SELECT * FROM users where user_id = $to_user") or die(mysql_error());
                        $row = mysql_fetch_assoc($query);
                        if(!empty($row['username'])){
                            $username = $row['username'];
                            echo "Dialog with <a href='user/$username'>$username</a>:";
                            $from = $user_data['user_id'];
                            $to = $_GET['to'];
                            $query = mysql_query("SELECT * FROM `messages` WHERE `from` = $from AND `to` = $to OR `from` = $to AND `to` = $from ORDER BY `id` DESC") or die(mysql_error());
                            $messages = mysql_fetch_array($query);?>
                            <div class="messages-box">
<?php
                                if(!empty($messages)) {
                                    do{
                                        $username_from_id();//ничего не выдает
                                        echo "<div class='message'>";
                                        echo "<a href='user/$from_username'>";
                                        echo $from_username;
                                        echo '</a>:<br>';
                                        echo $messages['message'];
                                        echo "</div>";
                                    }while($messages = mysql_fetch_array($query));
                                }else{
                                        echo "Dialog is empty!";
                                    }?>
                            </div>
Надеюсь, суть проблемы ясна, подскажите, что не так? Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.07.2015, 19:28
Ответы с готовыми решениями:

Функция, которая возвращает имя пользователя, который вызвал UPDATE/DELETE/INSERT
Не могу нагуглить. Нужна функция которая возвращает имя пользователя который вызвал удаление/обновление/вставку данных. Задача -...

getRemoteUser и getUserPrincipal возвращает имя роли вместо имени пользователя
Спасибо за консультацию по JAAS авторизации в JBOSS. Все вроде разрулил, но всплыла проблема - getRemoteUser и getUserPrincipal...

Функция, читающая имя пользователя
Напишите функцию whoAreYouAndHello(), которая читает имя пользователя из стандартного ввода, пока он не введет его в правильном формате, а...

16
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
25.07.2015, 19:55
Цитата Сообщение от paskalnikita Посмотреть сообщение
подскажите, что не так?
Подскажу. Отображение ошибок php включите и сразу все поймете...

Цитата Сообщение от paskalnikita Посмотреть сообщение
PHP
1
$username_from_id();//ничего не выдает
заменить на
PHP
1
echo username_from_id();
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
25.07.2015, 20:01  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
заменить на
Код PHP
Выделить код
1
echo username_from_id();
ничего не выводит, ни ошибок, ни имени пользователя как при эхо функции, так и при эхо переменной $from_username
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
25.07.2015, 20:16
Цитата Сообщение от paskalnikita Посмотреть сообщение
ничего не выводит, ни ошибок
Не может быть.
$username_from_id - это переменная
username_from_id() - это функция.
А у вас $username_from_id() и это ошибка в данном случае.
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
25.07.2015, 20:18  [ТС]
Это я понимаю, с переменной случайно получилось, но НИЧЕГО не выводится при создании функции
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
25.07.2015, 20:42
Цитата Сообщение от paskalnikita Посмотреть сообщение
Это я понимаю, с переменной случайно получилось, но НИЧЕГО не выводится при создании функции
Почитайте про область видимости переменных.
И подумайте - откуда внутри функции возьмется переменная $messages['from'].
Если все равно не понятно http://php.net/manual/ru/funct... efined.php

А отображение ВСЕХ ошибок все-таки советую включить. Если Вы говорите что на этот скрипт у Вас нет ошибок - они НЕ включены.
1
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
25.07.2015, 20:45  [ТС]
Ну типа как она появляется на этапе проверки если переменная GEТ пустая. Проблем с выводом собщения нет, проблема с тем, что не выводится имя пользователя при создании функциио
0
Заблокирован
25.07.2015, 21:40
Цитата Сообщение от pav1uxa Посмотреть сообщение
Почитайте про область видимости переменных.
И подумайте - откуда внутри функции возьмется переменная $messages['from'].
"Ну типа" функции все равно, что там где там появляется за ее пределами. Она может работать только с известными ей переменными.
1
 Аватар для p0wer
1 / 1 / 0
Регистрация: 21.07.2015
Сообщений: 20
25.07.2015, 21:48
Удалите первую строку функции и объявите ее так:
PHP
1
function ($from_username_id)
Когда вызываете функцию, передайте ей необходимое значение:
PHP
1
echo username_from_id($messages['from']);
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
25.07.2015, 22:57  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
Если Вы говорите что на этот скрипт у Вас нет ошибок - они НЕ включены.
окей, так стоит вывод ошибок:
PHP
1
2
3
4
error_reporting(1);
        ini_set("display_errors",1);
        error_reporting(E_ALL); 
        error_reporting(E_ALL & ~E_NOTICE);
p0wer, увы, но ничего не вышло,ошибку выдает, если помещю в цикл для do, а так ничего

Добавлено через 5 минут
сделал так:
PHP
1
2
3
4
5
6
7
8
9
10
function username_from_id(){
    $to = $_GET['to'];
    $query = mysql_query("SELECT * FROM `messages` WHERE `from` = '$from' AND `to` = '$to' OR `from` = '$to' AND `to` = '$from' ORDER BY `id` DESC") or die(mysql_error());
    $messages = mysql_fetch_array($query);
    $from_username_id = $messages['from'];
    $query_get_name = mysql_query("SELECT * FROM `users` WHERE `user_id` = '$from_username_id'") or die(mysql_error());
    $row = mysql_fetch_assoc($query_get_name);
    $from_username = $row['username'];
    return $from_username;
}
и все-равно ничего не возвращает
0
Заблокирован
25.07.2015, 23:18


Цитата Сообщение от paskalnikita Посмотреть сообщение
ошибку выдает, если помещю в цикл для do, а так ничего
Какую ошибку? Как так? Подозреваю, что вы даже не удосужились сделать вывод значения функции: echo username_from_id(...);

Цитата Сообщение от paskalnikita Посмотреть сообщение
сделал так
Вы хотите, чтобы мы еще и в "этом" разбирались?
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
25.07.2015, 23:31  [ТС]
echo username_from_id($messages['from']);
ничего не возвращает.
echo username_from_id(); аналогично , при это переменые типа $messages['from'] я подставляю.
когда подставляю функцию в цикл для do тогда такая ошибка:
Cannot redeclare username_from_id() (previously declared in Z:\home\page.com\www\message.php:48) in Z:\home\page.com\www\message.php on line 48. строка 48 - это строка с соданием функции.
Выглядит так, в таком случае нет ошибок, и нет вывода имени:
PHP
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
                    function username_from_id(){
    $from_username_id = $messages['from'];
    $query_get_name = mysql_query("SELECT * FROM `users` WHERE `user_id` = '$from_username_id'") or die(mysql_error());
    $row = mysql_fetch_assoc($query_get_name);
    $from_username = $row['username'];
    return $from_username;
}
if(!empty($_GET['to'])){
                        $to_user = $_GET['to'];
                        $query = mysql_query("SELECT * FROM users where user_id = $to_user") or die(mysql_error());
                        $row = mysql_fetch_assoc($query);
                        if(!empty($row['username'])){
                            $username = $row['username'];
                            echo "Dialog with <a href='user/$username'>$username</a>:";
                            $from = $user_data['user_id'];
                            $to = $_GET['to'];
                            $query = mysql_query("SELECT * FROM `messages` WHERE `from` = $from AND `to` = $to OR `from` = $to AND `to` = $from ORDER BY `id` DESC") or die(mysql_error());
                            $messages = mysql_fetch_array($query);?>
                            <div class="messages-box">
<?php
                                if(!empty($messages)) {
                                    do{
                                        echo username_from_id();//ничего не выдает
                                        echo "<div class='message'>";
                                        echo "<a href='user/$from_username'>";
                                        echo $from_username;
                                        echo '</a>:<br>';
                                        echo $messages['message'];
                                        echo "</div>";
                                    }while($messages = mysql_fetch_array($query));
                                }else{
                                        echo "Dialog is empty!";
                                    }?>
                            </div>
0
Заблокирован
25.07.2015, 23:44
Цитата Сообщение от paskalnikita Посмотреть сообщение
echo username_from_id($messages['from']);
Если передаете через параметр, уберите из функции первую команду.

Цитата Сообщение от paskalnikita Посмотреть сообщение
Cannot redeclare username_from_id() (previously declared in Z:\home\page.com\www\message.php:48) in Z:\home\page.com\www\message.php on line 48. строка 48 - это строка с соданием функции.
Где-то второй раз объявляете username_from_id

Цитата Сообщение от paskalnikita Посмотреть сообщение
Выглядит так
Так точно работать не будет (я про функцию)! Сколько вам раз уже написали про область видимости, а вы продолжаете гнуть свою линию

Цитата Сообщение от paskalnikita Посмотреть сообщение
echo $from_username;
Это вам теперь зачем?
1
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
25.07.2015, 23:46  [ТС]
$from_username мне нужно вывести после создания функции, так как под конец функции у меня же идет return этой переменной
0
Заблокирован
26.07.2015, 00:05
У вас $from_username теперь локальная переменная, поэтому нужно делать так:
PHP
1
2
3
4
$from_username=username_from_id($messages['from']);
echo "<div class='message'>";
echo "<a href='user/$from_username'>";
echo $from_username;
Добавлено через 4 минуты

Не по теме:

Я пошла спать. Надеюсь, суть вы поняли.

1
 Аватар для Seovin
79 / 79 / 36
Регистрация: 28.02.2014
Сообщений: 400
26.07.2015, 08:19
Цитата Сообщение от paskalnikita Посмотреть сообщение
и все-равно ничего не возвращает
может просто она пустая!
1
 Аватар для p0wer
1 / 1 / 0
Регистрация: 21.07.2015
Сообщений: 20
26.07.2015, 15:53
Попробуйте поэкспериментировать внутри функции:
PHP
1
var_dump($_GET);
Cannot redeclare означает, что вы второй раз объявляете функцию.
Чтобы все заработало вам надо передать ID пользователя в функцию. Попробуйте так:
PHP
1
2
3
4
5
6
7
function getNameById($id) {
  $query = mysql_query("SELECT * FROM `users` WHERE `user_id` = '". (int) $id ."'") or die(mysql_error());
  if(mysql_num_rows($query) > 0)
    return mysql_fetch_assoc($query)['username'];
  else
    return null;
}
Ну и вызов функции в коде:
PHP
1
echo getNameById($messages['from']);
Конструкция выше выведет имя пользователя, а не объявит переменную $from_username.
Чтобы объявить переменную:
PHP
1
$from_username = getNameById($messages['from']);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.07.2015, 15:53
Помогаю со студенческими работами здесь

Есть ли функция которая возвращает значение, тоесть имя файла текущей программы?
Есть ли функция которая возвращает значение, тоесть имя файла текущей программы.

Запросить имя пользователя и напечатать "Привет, Вася!" 10 раз, если Вася – имя пользователя.
Ребят,подскажите,как делать)хотя бы идею) 1. Запросить имя пользователя и напечатать &quot;Привет, Вася!&quot; 10 раз, если Вася –...

Зная ip адрес компьютера и его имя вывести имя пользователя
Зная ip адрес компьютера и его имя вывести имя пользователя в текстовое поле. я смог осилить только вывод имя компьютера: ...

Определить, является ли строка электронным адресом в формате: <имя пользователя>@<доменное имя>
Пользователем вводится строка. Определить, является ли она электронным адресом в формате: &lt;имя пользователя&gt;@&lt;доменное имя&gt;. ...

Запросить у пользователя имя, фамилию и возраст. После чего вывести: “Здравствуйте [Имя] [Фамилия]”.
Здравствуйте и снова я обращаюсь за помощью задали задание: Написать код на JavaScript который будет: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru