Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

blueish2222

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
$pattern = "images/".$row->title.' - '.$row->imdbid .'/'.$row->imdbid.'*.jpg';
// $pattern = "images/".$row->title.' - '.$row->imdbid .'/tt*.jpg';
foreach (glob($pattern) as $file) {
    echo $file;
}
 

 
Более эффективным.
 
Почему не загружается? Проверьте консоль браузера на наличие подсказок. Может быть, «images/..» недоступны из браузера? Или проблемы со смешными/специальными персонажами? Я могу только догадываться. Попробуйте src="'.htmlspecialchars(rawurlencode($file)).'".

Всего записей: 4 | Зарегистр. 02-12-2018 | Отправлено: 17:22 12-11-2022 | Исправлено: blueish2222, 17:25 12-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
blueish2222
 
 
Спасибо за вашу помощь
Я нашел этот PHP -код, который лучше,
 
https://stackoverflow.com/questions/19719494/how-to-pull-only-1-image-from-folder-in-php
 
Прочитайте случайные изображения из папки
Проблема в том, что у большинства файлов есть этот символ в имени, #
 
tt0051756#[63].jpg
 
Я попробовал эту функцию, которую вы мне написали
 

Код:
$img2 = htmlspecialchars(rawurlencode($img));

 
Но файл не читает его
Остальные без символа также не читают их,  
устранен
 
 
tt0051756#[63].jpg
 
   
 
 
без символа #
 
   
 
 
 

Код:
 
<?php
$search_dir = "images/" .$row->title.' - '.$row->imdbid .'/';
    $images = glob("$search_dir/*.jpg");
    sort($images);
 
    // Image selection and display:
 
    //display random image
    if (count($images) > 0) { // make sure at least one image exists
 
        // Get a random index in the array with rand(min, max) which is inclusive
        $randomImageIndex = rand(0, count($images)-1);
        $img = $images[$randomImageIndex]; // random image
        
        echo "<img src='$img' height='150' width='150' class='zoom' /> ";
 
    } else {
        // possibly display a placeholder image
        
        echo "<img src='images/noimage.jpg' height='150' width='150' class='zoom' /> ";
    }
    
    
?>
 

 
 
 
Добавлено:
проблема
 
В моей базе данных этот фильм и хранится с этим названием
 
The Frog Prince (1988)
 
на IMDB и запланировано на это имя
 
The Frog Prince (1986)
 
Имдбид и равен, tt0095182
 
Таким образом, приведенный выше код должен найти папку с этим идентификатором (так что вы избегаете проблем), а затем просмотреть изображения
 
чаевые?
 
Папки с изображениями имеют это имя (заголовок и imdbid)
 
The Frog Prince (1986) - tt0095182

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 18:06 12-11-2022 | Исправлено: zagorisback, 18:41 12-11-2022
blueish2222

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, # запрещен в URL, так как он используется в качестве идентификатора. Но это должно работать даже с #:

Код:
 
<?php
function escape_url($url, $prefix = '') {
    if (preg_match('~^(https?://)(.+)$~', $url, $matches)) {
        return escape_url($matches[2], $matches[1]);
    }
    $parts = explode('/', $url);
    $parts = array_map('rawurlencode', $parts);
    return $prefix . implode('/', $parts);
}
 
echo escape_url('images/The Frog Prince (1986) - tt0095182/tt0051756#[63].jpg') . "\n";
// images/The%20Frog%20Prince%20%281986%29%20-%20tt0095182/tt0051756%23%5B63%5D.jpg
 
echo escape_url('http://localhost/images/The Frog Prince (1986) - tt0095182/tt0051756#[63].jpg') . "\n";
// http://localhost/images/The%20Frog%20Prince%20%281986%29%20-%20tt0095182/tt0051756%23%5B63%5D.jpg
 
echo escape_url('https://localhost/images/The Frog Prince (1986) - tt0095182/tt0051756#[63].jpg') . "\n";
// https://localhost/images/The%20Frog%20Prince%20%281986%29%20-%20tt0095182/tt0051756%23%5B63%5D.jpg
 

Вам нужно использовать rawurlencode() для специальных символов, но вам нужно исключить /, а также http://.
 
Если имя не найдено, используйте tt0095182 в качестве единственного идентификатора.

Код:
 
foreach (glob('images/*' . $row->imdbid . '/*.jpg') as $file) {
   echo $file;
   break;
}
 

 
В этом сила glob().
 
Мне не нравится иметь случайное изображение, я бы взял первое, чтобы оно не менялось. Это упрощает навигацию для пользователей.

Всего записей: 4 | Зарегистр. 02-12-2018 | Отправлено: 19:57 12-11-2022 | Исправлено: blueish2222, 21:11 12-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
blueish2222
 

Цитата:
Да, # запрещен в URL, так как он используется в качестве идентификатора. Но это должно работать даже с #:  

 
Я на самом деле решил проблему более простым способом
 

Код:
$imgreplace = preg_replace('/[\#]/', '%23', $img);

 
 

Цитата:
foreach (glob('images/*' . $row->imdbid . '/*.jpg') as $file) {

 
Отлично, я решил эту проблему с вашей помощью
 
Я адаптировал код к моему
 

Цитата:
Мне не нравится иметь случайное изображение, я бы взял первое, чтобы оно не менялось. Это упрощает навигацию для пользователей.

 
нет пользователя и присутствия, Кроме меня
 
Личное использование, работа в местном хосте
Так что это никогда не будет опубликовано в Интернете, кроме кодов здесь
 
портирование базы данных, хранящейся в PostgreSQL,
Это работает в Java, официальные данные, полученные IMDB,
Но Java потребляет память и работает медленно
Итак, я конвертирую его в PHP
 
http://www.jmdb.de/
 
blueish2222
 
Спасибо за вашу драгоценную помощь,
Если мне нужно, я напишу здесь
PS: я не программист
 
Полный код исправлено
 

Код:
 
<?php
// replace : with white space in title
 
 $titlereplace = preg_replace('/: /', ' ', $row->title);
 
$search_dir = 'images/*' . $row->imdbid . '/';
 
 
 
    $images = glob("$search_dir/*.jpg");
    sort($images);
 
    // Image selection and display:
 
    //display random image
    if (count($images) > 0) { // make sure at least one image exists
 
        // Get a random index in the array with rand(min, max) which is inclusive
        $randomImageIndex = rand(0, count($images)-1);
        $img = $images[$randomImageIndex]; // random image
        $imgreplace = preg_replace('/[\#]/', '%23', $img);
        echo "<img src='$imgreplace' height='150' width='150' class='zoom' /> ";
        
        
 
    } else {
        // possibly display a placeholder image
        
        echo "<img src='images/noimage.jpg' target='_blank' height='100' width='100' /> ";
    }
    
    
?>
 

 
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 22:12 12-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вау, все еще проблемы
Я обнаружил, что если imdbid пуст, вся папка images сканируется, а случайное изображение отображается
Это не должно произойти  
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 00:16 13-11-2022 | Исправлено: zagorisback, 00:17 13-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Это не должно произойти

ну так добавьте проверку, что не пустое.  
зачем об этом вообще писать?

Всего записей: 15114 | Зарегистр. 20-09-2014 | Отправлено: 00:18 13-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Да, я думал, как решить
Тогда я решил таким образом
 

Код:
if (empty($row->imdbid)) {

 

Код:
elseif($row->imdbid) {

 
глупый вопрос
Как запустить этот файл из браузера?
 
это не работает
 
 

Код:
<a href="file:///E:\__PHP__\OpenServer\domains\localhost\postgressql\Photoloader.php%20by%20Darby_Crash\photoloader.bat" target="_blank"><input type="button" value="Open File" /></a>

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 09:11 13-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
if (empty($row->imdbid))  

empty среагирует и на 0, лучше trim($var) == ''
 

Цитата:
Как запустить этот файл из браузера?

никак, это не безопасно.
так расположен там же, где и php - им и запускать.
через обращение к локальному серверу. и либо его настроить на работу с .bat, либо в php использовать system или exec

Всего записей: 15114 | Зарегистр. 20-09-2014 | Отправлено: 09:19 13-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
empty среагирует и на 0, лучше trim($var) == ''

 

 
 
Добавлено:

Цитата:
через обращение к локальному серверу. и либо его настроить на работу с .bat, либо в php использовать system или exec  

 
code???

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 10:47 13-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
empty среагирует и на 0

var_dump(empty("0"));
 
bool(true)
 

Цитата:
code???

а мануал почитать??
https://www.php.net/manual/en/function.exec.php
обращаемся к серверному скрипту через http/s, он запускает .bat файл у себя на сервере (если на Windows). запустить из браузера у клиента нельзя - для безопасности.

Всего записей: 15114 | Зарегистр. 20-09-2014 | Отправлено: 10:52 13-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
понял
 
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 13:11 13-11-2022 | Исправлено: zagorisback, 13:13 13-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
проблема
Как получить другие, ака (заголовок) из таблицы akatitles
 
Сделав поиск, я нахожу только те из поиска, но я также хочу просматривать другие, связанные с movieid
 
query
 
   
 

Код:
 
SELECT
    movies.*,
    directors."name" AS director,
    array_to_string( ARRAY_AGG ( DISTINCT akatitles.title ), ' ,<br> ' ) AS aka  
FROM
    movies
    INNER JOIN akatitles ON movies.movieid = akatitles.movieid
    INNER JOIN movies2directors ON movies.movieid = movies2directors.movieid
    INNER JOIN directors ON movies2directors.directorid = directors.directorid  
    WHERE-- posizionare movies.imdib all'inizio per non generare errore di integer
-- (movies.imdbid = ('$value'))
--    OR
--    ( movies.title @@plainto_tsquery( 'dark victory 1976%' ) ) --      OR
    ( akatitles.title @@plainto_tsquery( 'una violenta dolce estate' ) ) --     OR
-- ( directors.NAME @@plainto_tsquery( '%Barbara Loden%' ) )
    
GROUP BY
    movies.movieid,
    directors."name"
 
 

 
Таблица данных akatitles
 
   
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 20:30 15-11-2022 | Исправлено: zagorisback, 23:50 15-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Сделав поиск, я нахожу только те из поиска, но я также хочу просматривать другие, связанные с movieid

ничего не понятно.
 
просто все поля? ну так и выбирайте их все.

Цитата:
array_to_string( ARRAY_AGG ( DISTINCT akatitles.title ), ' ,<br> ' ) AS aka

проще не возиться с этим, а сделать либо один запрос (с повторящимися частями в некоторых столбцах), а потом обработать его с помощью php, либо отдельно 2 запроса, а потом все равно объединить ответ с помощью php в тот вид, который нужен.

Всего записей: 15114 | Зарегистр. 20-09-2014 | Отправлено: 01:44 16-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Даже с этим простым запросом я не могу просматривать значения акатитлса (заголовок) в запросе
 
Это потому, что запрос от akatitles
Но если я выполняю запрос из movies.title, я вижу полные результаты
Но я должен выполнить поиск и из akatitles
 
   

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 10:48 16-11-2022 | Исправлено: zagorisback, 10:52 16-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
1) postgres это не mysql - тема не та
2)
Цитата:
Но я должен выполнить поиск и из akatitles

да потому что вы задаете прямое условие на данные, что пытаетесь найти
раз у вас сказано, что akatitles.title должно содержать определенное, то именно эта запись и находится, а по ней уже берется из таблицы movies и связь работает в эту сторону.
 
если нужны все свойства для одного фильма, то нужно делать подзапрос subquery.
что то типа
SELECT m.*, a.* FROM movies m, akatitles a WHERE m.movieid IN (
   SELECT movieid FROM akatitles WHERE (title @plainto_tsquery('....'))
)

Всего записей: 15114 | Зарегистр. 20-09-2014 | Отправлено: 12:17 16-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
проблема
 
В моей базе данных «актеров» имя хранится таким образом
 
   
 
функция, которая трансформирует первые буквы капитальной фразы,
  и обратный массив, вставив запятую с пространством
 
Он используется для ускорения исследований, используя «LIKE» в запросе
 

Код:
actors.name LIKE '%$tag_string%'

 
от этого
 

Цитата:
linda blair

 
к этому
 

Цитата:
Blair, Linda

 
Исследования очень быстрые, пару секунд
 
Проблема и когда мне нужно искать это
 

Цитата:
Zombie, Sheri Moon

 
   
 
Если вы вводите предложение
 

Цитата:
sheri moon zombie

 
Поиск ничего не находит
 
Как решить? Иметь это?
 

Цитата:
Zombie, Sheri Moon

 

Код:
 
 
<?php
 
function ucfirst_sentence($str)
{
    return preg_replace('/\b(\w)/eu', 'strtoupper("$1")', $str);
}  
 
 
$dir =  ucfirst_sentence($value);
 
$first = explode(' ', $dir);
 
$revers_name = array_reverse($first, true);
 
$tag_string = implode(', ', $revers_name);
 
$tag_string;
 
?>
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 20:18 17-11-2022 | Исправлено: zagorisback, 21:22 17-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html
но, в принципе, это не задача MySQL, а, к примеру, любого поискового движка.
например - http://sphinxsearch.com/

Всего записей: 15114 | Зарегистр. 20-09-2014 | Отправлено: 01:21 18-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Я решил проблему с гениальным кодом
Результат, как на скриншотах
Теперь это работает, супер быстрый поиск (мгновенный)

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 08:55 18-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я не понимаю,
Функция natsort не отображает результаты в естественном, восходящем порядке
 

Цитата:
array(1) { [0]=> string(2) "21" }
 
array(1) { [0]=> string(2) "13" }
 
array(1) { [0]=> string(2) "27" }
 
array(1) { [0]=> string(1) "2" }
 
array(1) { [0]=> string(2) "20" }
 
array(1) { [0]=> string(2) "22" }
 
array(1) { [0]=> string(2) "32" }  

 
 
 

Код:
 
preg_match_all('/<?(\d+)>/s', $row->as_character, $result2);
$result2 = $result2[1];
 
echo '<br>';
 
natsort($result2);
 
var_dump($result2);
 

 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 10:57 22-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Функция natsort не отображает результаты в естественном, восходящем порядке

потому что это не 1 массив, а много массивов по 1 элементу.
каким образом будет тут работать сортировка?

Всего записей: 15114 | Зарегистр. 20-09-2014 | Отправлено: 11:12 22-11-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru