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
Форумы портала PHP.SU :: Версия для печати :: Как запретить скачивание уже скаченых пользователем ссылок?
Форумы портала PHP.SU » » Вопросы новичков » Как запретить скачивание уже скаченых пользователем ссылок?

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

1. lutyi1984 - 15 Августа, 2012 - 10:04:07 - перейти к сообщению
Ребята, у меня возник такой вопрос...
Есть в базе две таблицы.
Первая отвечает, за вывод ссылок. которые добавил пользователь.
Вторая записывает 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. Нужно сделать так, чтоб после скачивания ссылки пользователь качавший её, её больше не видел, но другие участники могли её качать и после скачивания тоже у них она должна пропасть...
2. tuareg - 15 Августа, 2012 - 10:22:06 - перейти к сообщению
Это решается одним запросом.
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)
3. lutyi1984 - 15 Августа, 2012 - 10:36:18 - перейти к сообщению
tuareg пишет:
SELECT t1.* FROM tabl1 AS t1 LEFT JOIN tabl2 AS t2 ON t1.link!=t2.link
WHERE t2.user='id_user'


Не совсем понял запрос можно прокомментировать его.. Вытаскиваем строку из таблицы tabl1 ... дальше не понимаю..
4. Stierus - 15 Августа, 2012 - 10:42:39 - перейти к сообщению
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, ваш запрос выведет не то, что вы ожидаете
5. lutyi1984 - 15 Августа, 2012 - 12:01:22 - перейти к сообщению
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.  
6. Stierus - 15 Августа, 2012 - 12:03:39 - перейти к сообщению
Вы написали запрос
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


Распишите построчно, как я, что должен делать этот запрос?
7. lutyi1984 - 15 Августа, 2012 - 12:06:56 - перейти к сообщению
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 (тут я не понимаю к какой он обращаеться таблице, поясните)


Я его вот так понимаю, но он пока не работает...
8. Viper - 15 Августа, 2012 - 13:25:10 - перейти к сообщению
lutyi1984 пишет:
ут я не понимаю к какой он обращаеться таблице, поясните
к той в которой есть сравниваемое поле. Если это поле присутствует в обоих таблицах одновременно, обращайтесь к нужному через алиас.

Да и ещё момент. Я так понимаю у вас часть данных продублированна в обоих таблицах? Если да, то может нужно как-то оптимизировать?
9. Stierus - 15 Августа, 2012 - 13:37:32 - перейти к сообщению
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 равняется переменной
10. lutyi1984 - 15 Августа, 2012 - 13:54:26 - перейти к сообщению
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.                           // конец сравнения
11. Stierus - 15 Августа, 2012 - 13:57:13 - перейти к сообщению
Цитата:
но теперь не могу вывести какое-то значение...

познавательно Улыбка Вопросы есть или вы так, поделиться болью? если есть - опишите подробнее, что не выводится, что должно выводиться и почему вы считаете, что оно должно выводиться
12. lutyi1984 - 15 Августа, 2012 - 13:57:53 - перейти к сообщению
УРА ЗАРАБОТАЛО... ВСЕМ СПАСИБО..

 

Powered by ExBB FM 1.0 RC1