Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как запретить скачивание уже скаченых пользователем ссылок?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как запретить скачивание уже скаченых пользователем ссылок?
lutyi1984
Отправлено: 15 Августа, 2012 - 10:04:07
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Ребята, у меня возник такой вопрос...
Есть в базе две таблицы.
Первая отвечает, за вывод ссылок. которые добавил пользователь.
Вторая записывает id скаченой ссылки, пользователя и саму ссылку.

Нужно сделать так, чтоб после того, как во вторую базу записались данные с первой таблицы, этот пользователь или эта ссылка больше не была доступна эту человеку...

Я думал, делать сравнение примерно такого рода...
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. // тут запрос к одной таблицы
  4. // тут ко второй
  5. $user="тут первый запрос";
  6. $ssylka = "тут второй запрос";
  7.  
  8. if ($user != $ssylka)
  9. { echo "тут выводим все ссылки которые не равны между собой";}
  10. else {echo "тут не чего не делаем, а лучше вообще запрос не производим";}
  11. ?>
  12.  


Думаю, наглядно всё хорошо описал...
Но только оно зараза не работает. Что не так?

P.S. Нужно сделать так, чтоб после скачивания ссылки пользователь качавший её, её больше не видел, но другие участники могли её качать и после скачивания тоже у них она должна пропасть...
 
 Top
tuareg
Отправлено: 15 Августа, 2012 - 10:22:06
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Это решается одним запросом.
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT t1.* FROM tabl1 AS t1 LEFT JOIN tabl2 AS t2 ON t1.link!=t2.link
  3. WHERE t2.user='id_user'
  4.  

tabl1==> отвечает, за вывод ссылок. которые добавил пользователь.
tabl2==> записывает id скаченой ссылки, пользователя и саму ссылку
индекс на t1.link и индекс на (t2.link,t2.user)
 
 Top
lutyi1984
Отправлено: 15 Августа, 2012 - 10:36:18
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




tuareg пишет:
SELECT t1.* FROM tabl1 AS t1 LEFT JOIN tabl2 AS t2 ON t1.link!=t2.link
WHERE t2.user='id_user'


Не совсем понял запрос можно прокомментировать его.. Вытаскиваем строку из таблицы tabl1 ... дальше не понимаю..
 
 Top
Stierus Супермодератор
Отправлено: 15 Августа, 2012 - 10:42:39
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT table1.id
  2. FROM table1
  3. LEFT JOIN table2 ON table1.id = table2.link_id
  4. WHERE table2.link_id IS NULL

(Добавление)
Читаем построчно:

1: выбираем айдишники (у вас это могут быть не айдишники, а что угодно)
2: из таблицы ссылок пользователя
3: присоединяем к первой таблице информацию из второй таблицы так: если во второй таблице есть строка, у которой link_id равен id из первой таблицы - то получается общая строка с информацией из обеих таблиц, если во второй таблице такой строки нет - то всместо значений ячеек второй таблицы, они наполняются null
4: Из тех соединенных строк нам нужны только те, для которых link_id Null - то есть записи во второй таблицы нет
(Добавление)
tuareg, ваш запрос выведет не то, что вы ожидаете
 
My status
 Top
lutyi1984
Отправлено: 15 Августа, 2012 - 12:01:22
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Stierus пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT table1.id
  2. FROM table1
  3. LEFT JOIN table2 ON table1.id = table2.link_id
  4. WHERE table2.link_id IS NULL

(Добавление)
Читаем построчно:

1: выбираем айдишники (у вас это могут быть не айдишники, а что угодно)
2: из таблицы ссылок пользователя
3: присоединяем к первой таблице информацию из второй таблицы так: если во второй таблице есть строка, у которой link_id равен id из первой таблицы - то получается общая строка с информацией из обеих таблиц, если во второй таблице такой строки нет - то всместо значений ячеек второй таблицы, они наполняются null
4: Из тех соединенных строк нам нужны только те, для которых link_id Null - то есть записи во второй таблицы нет
(Добавление)
tuareg, ваш запрос выведет не то, что вы ожидаете


Что-то не получается... Вот мой код...
PHP:
скопировать код в буфер обмена
  1.   // сравниваем показатели
  2.                            $config_99 = mysql_query ("SELECT * FROM ssylka AS test_config LEFT JOIN ssylka AS test_config ON ssylka != ssylka_letitbit
  3. WHERE user !='$login' ",$lutov);
  4. $header_99 = mysql_fetch_array ($config_99);
  5.  
  6. if (!$header_99)
  7. {echo "<p style='color:red'>Ой, жалко, но у нас не предвиденная ошибка. Извините.</p>";
  8. }
  9.  
  10. $test = "$header_99 ['ssylka']";
  11.                          
  12.                           // конец сравнения



Таблица _ 1 = "ssylka"
строка сравнения = "ssylka"
Таблица _2 = "test_config"
строка сравнения = "ssylka_letitbit"

user = есть в обеих таблицах

Как я понимаю запрос...
Вытащить все строки из таблиц ssylka и test_config и приравнять таблицы ssylka и test_config у которых значения строк ssylka != ssylka_letitbit не равны между собой и у которых user !='$login' логин не равен с переменной логин.

Может я не правильно, что понимаю?


PHP:
скопировать код в буфер обмена
  1.  
  2. Вот ошибка:
  3. Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
  4.  
  5. пишет в этой строчке
  6. $header_99 = mysql_fetch_array ($config_99);
  7.  

(Отредактировано автором: 15 Августа, 2012 - 12:03:55)

 
 Top
Stierus Супермодератор
Отправлено: 15 Августа, 2012 - 12:03:39
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Вы написали запрос
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM ssylka AS test_config
  3. LEFT JOIN ssylka AS test_config ON ssylka != ssylka_letitbit
  4. WHERE user !='$login


Распишите построчно, как я, что должен делать этот запрос?
 
My status
 Top
lutyi1984
Отправлено: 15 Августа, 2012 - 12:06:56
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Stierus пишет:
Вы написали запрос
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM ssylka AS test_config
  3. LEFT JOIN ssylka AS test_config ON ssylka != ssylka_letitbit
  4. WHERE user !='$login


Распишите построчно, как я, что должен делать этот запрос?


Да он...

Я хочу, чтоб с одной таблицы вытаскивало. всё кроме того, что уже занесено в дугую таблицу... путём сравнения и выводила...
(Добавление)
lutyi1984 пишет:
SELECT *
FROM ssylka AS test_config
LEFT JOIN ssylka AS test_config ON ssylka != ssylka_letitbit
WHERE user !='$login



PHP:
скопировать код в буфер обмена
  1. SELECT * // вытащить все поля
  2. FROM ssylka AS test_config // из таблиц ssylka и test_config
  3. LEFT JOIN ssylka AS test_config ON ssylka != ssylka_letitbit // Как я понимаю тут сравнимваються две таблицы /* сравнить таблицу ssylka со строкой ssylka с таблицей  test_config со строкой ssylka_letitbit, где они не равны между собой */
  4. WHERE user !='$login // Где логин не равняеться переменной $login (тут я не понимаю к какой он обращаеться таблице, поясните)


Я его вот так понимаю, но он пока не работает...
(Добавление)
lutyi1984 пишет:
SELECT *
FROM ssylka AS test_config
LEFT JOIN ssylka AS test_config ON ssylka != ssylka_letitbit
WHERE user !='$login



PHP:
скопировать код в буфер обмена
  1. SELECT * // вытащить все поля
  2. FROM ssylka AS test_config // из таблиц ssylka и test_config
  3. LEFT JOIN ssylka AS test_config ON ssylka != ssylka_letitbit // Как я понимаю тут сравнимваються две таблицы /* сравнить таблицу ssylka со строкой ssylka с таблицей  test_config со строкой ssylka_letitbit, где они не равны между собой */
  4. WHERE user !='$login // Где логин не равняеться переменной $login (тут я не понимаю к какой он обращаеться таблице, поясните)


Я его вот так понимаю, но он пока не работает...
 
 Top
Viper
Отправлено: 15 Августа, 2012 - 13:25:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




lutyi1984 пишет:
ут я не понимаю к какой он обращаеться таблице, поясните
к той в которой есть сравниваемое поле. Если это поле присутствует в обоих таблицах одновременно, обращайтесь к нужному через алиас.

Да и ещё момент. Я так понимаю у вас часть данных продублированна в обоих таблицах? Если да, то может нужно как-то оптимизировать?

(Отредактировано автором: 15 Августа, 2012 - 13:26:36)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Stierus Супермодератор
Отправлено: 15 Августа, 2012 - 13:37:32
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Viper, его код - нерабочий бред, о какой оптимизации ты говоришь? Улыбка

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT ssylka.*
  2. FROM ssylka
  3. LEFT JOIN  test_config ON ssylka.ssylka = test_config.ssylka_letitbit
  4. WHERE  test_config.ssylka_letitbit IS NULL
  5. AND ssylka.user = '$login' //Где поле user из таблицы ssylka равняется переменной
 
My status
 Top
lutyi1984
Отправлено: 15 Августа, 2012 - 13:54:26
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Stierus пишет:
Viper, его код - нерабочий бред, о какой оптимизации ты говоришь? Улыбка

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT ssylka.*
  2. FROM ssylka
  3. LEFT JOIN  test_config ON ssylka.ssylka = test_config.ssylka_letitbit
  4. WHERE  test_config.ssylka_letitbit IS NULL
  5. AND ssylka.user = '$login' //Где поле user из таблицы ssylka равняется переменной


Подставляю ошибку писать перестало прежнюю, но теперь не могу вывести какое-то значение...

PHP:
скопировать код в буфер обмена
  1.                           // сравниваем показатели
  2.                          
  3.                          
  4.                          
  5.                          
  6.                          
  7. $config_99 = mysql_query ("SELECT ssylka.* FROM ssylka LEFT JOIN  test_config ON ssylka.ssylka = test_config.ssylka_letitbit
  8. WHERE  test_config.ssylka_letitbit IS NULL
  9. AND ssylka.user = '$login' ",$lutov);
  10. $header_99 = mysql_fetch_array ($config_99);
  11.  
  12. /*SELECT * // вытащить все поля
  13. FROM ssylka AS test_config // из таблиц ssylka и test_config
  14. LEFT JOIN ssylka AS test_config ON ssylka != ssylka_letitbit // Как я понимаю тут сравнимваються две таблицы /* сравнить таблицу ssylka со строкой ssylka с таблицей  test_config со строкой ssylka_letitbit, где они не равны между собой
  15. WHERE user !='$login // Где логин не равняеться переменной $login (тут я не понимаю к какой он обращаеться таблице, поясните)*/
  16.  
  17.  
  18. if (!$header_99)
  19. {echo "<p style='color:red'>Ой, жалко, но у нас не предвиденная ошибка. Извините.</p>";
  20. }
  21.  
  22. $test_15 = "$header_99 ['ssylka']";
  23.  
  24. echo $test_15;
  25.                          
  26.                           // конец сравнения
 
 Top
Stierus Супермодератор
Отправлено: 15 Августа, 2012 - 13:57:13
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Цитата:
но теперь не могу вывести какое-то значение...

познавательно Улыбка Вопросы есть или вы так, поделиться болью? если есть - опишите подробнее, что не выводится, что должно выводиться и почему вы считаете, что оно должно выводиться
 
My status
 Top
lutyi1984
Отправлено: 15 Августа, 2012 - 13:57:53
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




УРА ЗАРАБОТАЛО... ВСЕМ СПАСИБО..
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB