Различные вопросы по PHP и MySQL

242K
.
ДоХтор, Спасибо се час попробую
.
Udesign
ДоХтор, вот так сделаль не получилас

$post = '@udesign test';
preg_match('~\s@([\w]+)~iu', $post, $match);
$udes_name = print_r($match[1]);
$ud_st2 = mysql_query("SELECT * FROM `users` where `name` = '". $udes_name ."'");
$ud_st = mysql_fetch_assoc($ud_st2);
echo '<a href="http://' . $_SERVER['HTTP_HOST']. '/users/profile.php?user=' . $ud_st['id'] . '">'; print_r($match[0]); echo '</a>';
echo $post;
.
# Udesign (28.01.2017 / 22:24)
ДоХтор, вот так сделаль не получилас


$post = '@udesign test';
preg_match('~\s@([\w]+)~iu', $post, $match);
$udes_name = print_r($match[1]);
$ud_st2 = mysql_query("SELECT * FROM `users` where
$post = '@udesign test';

preg_match('~@([\w]+)~iu', $post, $match);

$udes_name = $match[1];

$query = mysql_query("
    SELECT * FROM `users` 
    WHERE `name` = '". $udes_name ."'
");

$ud_st = mysql_fetch_assoc($query);

echo '<a href="http://'. $_SERVER['HTTP_HOST'] .
    '/users/profile.php?user='. $ud_st['id'] .'">'. $match[0] .'</a>';
.
Udesign, только ещё в этот код надо добавить условие с проверкой, существует ли такой юзер в бд. Если существует, то формировать ссылку на его профиль - иначе ничего не делать (или же удалять символ @ перед написанным ником, если такого ника в базе нет)
.
ДоХтор, Тепер работает ну тепер выводит толка @Udesign a test не выводит допустим я напишу сообщения вот так Привет @Admin должно выводит Привет <a href="http://sayt.ru/users/profile.php?user=1">Admin</a>
.
Udesign
# ДоХтор (28.01.2017 / 22:31)
Udesign, только ещё в этот код надо добавить условие с проверкой, существует ли такой юзер в бд. Если существует, то формировать ссылку на его профиль - иначе ничего не делать (или же удалять символ
Если добавлю

$total_uds = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `name`='". $udes_name ."'"), 0);

if(!empty($total_uds)){
echo '<a href="http://'. $_SERVER['HTTP_HOST'] . '/users/profile.php?user='. $ud_st['id'] .'">'. $match[0] .'</a>';
}else{
echo $post;
}
.
# Udesign (28.01.2017 / 22:35)
ДоХтор, Тепер работает ну тепер выводит толка @Udesign a test не выводит допустим я напишу сообщения вот так Привет @Admin должно выводит Привет <a href="http://sayt.ru/users/profile.php?user=1">Admi
Вот
$url = 'Привет @Admin'; 
 
if (preg_match('~@([\w]+)~iu', $url, $match)) {
    
    $query = mysql_query("
        SELECT * FROM `users` 
        WHERE `name` = '". $match[1] ."'
    ");
    
    $ud_st = mysql_fetch_assoc($query);
    
    $repl = '<a href="http://'. $_SERVER['HTTP_HOST'] .
        '/users/profile.php?user='. $ud_st['id'] .'">'. 
        $match[0] .'</a>';
    
    echo str_replace($match[0], $repl, $url);
}
.
preg_replace_callback для индусов что ли создан?
.
# Udesign (28.01.2017 / 22:37)
Если добавлю

$total_uds = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `name`='". $udes_name ."'"), 0);

if(!empty($total_uds)){
echo '<a href="http://'. $_SERVER['HTTP_HOST'] .
Не обязательно ещё один запрос в базу писать. Можно же на основе тех данных, которые ты получил при первом запросе, выполнять проверку на существование юзера. Например
$url = 'Привет @Admin'; 
 
if (preg_match('~@([\w]+)~iu', $url, $match)) {
    $query = mysql_query("
        SELECT * FROM `users` 
        WHERE `name` = '". $match[1] ."'
    ");
    
    $ud_st = mysql_fetch_assoc($query);
    
    if (!empty($ud_st['id'])) {
        $repl = '<a href="http://'. $_SERVER['HTTP_HOST'] .
            '/users/profile.php?user='. $ud_st['id'] .'">'. 
            $match[0] .'</a>';
        
        echo str_replace($match[0], $repl, $url);
    } else {
        echo str_replace($match[0], $match[1], $url);
        // Если такого ID нет в базе, то в браузер выйдет
        // Привет Admin
    }
}
.
# ramzes (28.01.2017 / 22:54)
preg_replace_callback для индусов что ли создан?
Спасибо.
Всего: 7969