51

Re: Проблемы с запуском PHPMyAdmin

Для PHP кода я правильно пишу?

$sum = ("SELECT SUM (vote) FROM rating, $db);
echo $sum;

Почему то не выводит ничего... (и второй вариант еще и для PHP кода если можно)

Спасибо

52

Re: Проблемы с запуском PHPMyAdmin

Koba
Сперва надо соединиться с MySQL.
mysql_connect - http://lv.php.net/manual/en/function.mysql-connect.php
Затем выбрать текущую базу данных.
mysql_select_db - http://lv.php.net/manual/en/function.my … ect-db.php
Затем выполнить запрос.
mysql_query - http://lv.php.net/manual/en/function.mysql-query.php
Затем разобрать полученные данные.
mysql_fetch_assoc - http://lv.php.net/manual/en/function.my … -assoc.php

В последней функции будет полный пример кода, начиная с подключения к MySQL.

Строки запросов будут выглядеть так:

$sql = 'SELECT SUM(`vote`) AS `sum` FROM `rating`'; // В ассоциативном массиве получим переменную $row['sum'].

$sql = 'SELECT `vote`, `points`, ROUND(`points` / `vote`, 2) AS `star` FROM `rating`'; // В ассоциативном массиве будут переменные $row['vote'], $rwo['points'] и $row['star'].

53

Re: Проблемы с запуском PHPMyAdmin

Получилось, спасибо!

54

Re: Проблемы с запуском PHPMyAdmin

Здравствуйте Hanut!

Запустил свой сайт на хостинге. На определенную операцию в броузере выводится ошибка (сообщение) что один из таблиц не существует (попольняю постепенно) или нету в ней данних, эта ошибка (скорее предупреждение) никак не влияет на работоспособность сайта но есть такое неудобство - растягивает по горизонтали дизайн (в узкой колонке выводится)...
Примерно такое сообщение: ошибка допустим в этом файле /usr/home/modernpu/public_html/blocks/lefttd.php на строке допустим 151. Но дело в том, что строка /usr/home/modernpu/public_html/blocks/lefttd.php не переносится и растягивает дизайн пропорционально... В самом файле у меня нету команды echo mysql_error(); или подобное а сообщение выводится независимо от меня из хостинга.
Колонке, где сообщение выводится задана ширина <td width='205px'> но все таки не помогает
Протестировал и в других броузерах: FireFox разрывает такую строку, Opera тоже (IE не пробовал), а вот в Safari не смог решить пока эту проблему
Как можно избежать от такой ситуации?? Допустим разрывать строку или какой-нибуд другой выход есть?

Спасибо

55

Re: Проблемы с запуском PHPMyAdmin

Koba
Ошибку можно подавить поставив перед функцией знак @ (at). Пример:
@mysql_query($sql);

Либо добавьте в код строку отключающую вывод ошибок:
error_reporting(0);

56

Re: Проблемы с запуском PHPMyAdmin

Доброе утро!

На сайте у меня есть голосование для вычисления рейтинга темы. Хочу чтоб человек, который уже голосовал, не смог больше голосовать.
Что является уникальным идентификатором посетителя, я подумал это  $_SERVER['REMOTE_ADDR']  И если так, в корпорации, где множество компьютеров у них тоже разные будут этот параметр? (я планирую согранить в базу каждый посетитель и потом при обращении для голосовании пойскать в базе входящий посетитель и если есть то заблокировать...)
Что вы посоветуйте?

Спасибо

57

Re: Проблемы с запуском PHPMyAdmin

Koba
У посетителей из локальной сети будет один внешний IP адрес, поэтому лучше использовать сессии. Недостаток сессий в том, что они сбрасываются при закрытии браузера (если проголосовать, затем закрыть браузер и снова его открыть, то можно проголосовать еще раз). Без авторизации есть только эти два варианта (IP и сессия) и вам решать какой из них лучше подходит под конкретную ситуацию.

58

Re: Проблемы с запуском PHPMyAdmin

Здравствуйте Hanut!

В БД для авторизации создал таблицу, дге хранятся числовие значения INT, 1-3 значные числа
К примеру:

pub     postid
7           22
14          9
15         15

Когда искомое значение не меньше 4 символов то пользуюсь тпким синтаксисом mysql - 'MATCH(some) AGAINST($some)'
Но как тут могу пойскать допустим в поле postid есть ли значение 9 или нет?

Спасибо

59

Re: Проблемы с запуском PHPMyAdmin

Koba
Не смог понять вопрос.

60

Re: Проблемы с запуском PHPMyAdmin

Добрый день!

Какой SQL запрос ищет в полях числовое значение?
___________________________________________________
Пример:

Есть таблица data, где меня интересует два поля для пойска

pub     postid
7           22
14          9
15         15




$a = 14;
$b = 9;


$result = mysql_query ("SELECT * FROM data WHERE MATCH(pub) AGAINST($a) AND MATCH(postid) AGAINST($b)", $db);


__________________________________________________

такой запрос не работает - потому, что во первых на числовые поля не задается FULLTEXT и во вторых если они были бы текстовые поля с индексом FULLTEXT, то меньше 4 символов такой запрос все равно не ищет...


Какой выход из данной ситуации?

61

Re: Проблемы с запуском PHPMyAdmin

$result = mysql_query ("SELECT * FROM `data` WHERE `pub` = $a AND `postid` = $b", $db);

62

Re: Проблемы с запуском PHPMyAdmin

Здравствуйте Hanut!

Если можно, мне надо ваша рекомендация...

На моем сайте написал код авторизации. Зарегистрированный пользователь вводит name, password и подтверждает кнопкой submit.
Введенные данные передаются файлу login.php методом post и после проверки в БД возвращаются обратно в index.php кодом

echo "<html><head>
<meta http-equiv='Refresh' content='0; URL=index.php?name=$name'>
</head></html>";
exit ();

Таким образом получил переменную $name и во всех файлах сайта передаю этот параметр для сохранения статуса авторизации. В основном получается GET методом. Потом в разных файлах сайта в началах пишу:

if (isset($_GET['name'])) ... или
if (isset($_POST['name'])) .... тогда есть авторизация и т.п.

Но, проблема в том, что если в строке адреса броузера человек введет имя то меняется имя пользователя, или если нету авторизации и в адресе броузера нипишет допустим ?name=koba входит в систему (давольно известный наверно вопрос...)
Пока не смог придумат механизм защиты от этого.
Что вы посоветуйте?

Спасибо заранее!

63

Re: Проблемы с запуском PHPMyAdmin

Koba
Обычно авторизация делается так: все закрытые авторизацией файлы имеют включение include(login.php), в котором происходит выборка пары логин/пароль и сверка с данными переданными пользователем.

При первой авторизации происходит выборка пары логин/пароль, произведение из них хеша и сохранении у пользователя в кукисах. Пример:

<?php
// $login и $password выбираются из БД если пользователь ввел их верно.
setcookie("login_hash", md5($login . $password)); // запись хеш значения в кукисы.
setcookie("login_name", $login); // запись имени пользователя.
?>

Пример проверки:

<?php
// $login и $password выбираются из БД по $_COOKIE["login_name"] и из них вычисляется хеш.
$hash = md5($login . $password);
if (isset($_COOKIE["login_hash"]) && $_COOKIE["login_hash"] == $hash) echo 'Пользователь авторизован';
?>

Если вы не хотите каждый раз делать выборку данных пользователя из БД, то данные авторизации (хеш) можно хранить в сессии.

64

Re: Проблемы с запуском PHPMyAdmin

Спасибо большое за правильное направление ))

Для закончения авторизации хожу уничтожить
$_COOKIE['login_name'];

Пишу так
setcookie("login_name");

Прочитал еще, что уничтожать можно если утановить нулевое знаечение времени... но как это делается? Какой будет синтаксис в моем варианте? (для $_COOKIE['login_name'] )

Но после нажатии submit не уничтожается а повторном нажатии уничтожается... Что за явление это, и как можно мгновенно уничтожить cookie при нажатии submit?

Спасибо

65

Re: Проблемы с запуском PHPMyAdmin

Koba
Удаляются куки путем выставления времени их истечения в прошлое следующим образом.

setcookie ("login_name", "", time() - 3600);

Обратите внимание, что обнуление кукисов должно идти перед авторизацией, иначе сперва будет выполнена авторизация.

66

Re: Проблемы с запуском PHPMyAdmin

Добрый день!

Возникла такая проблема:
В index.php пройсходит попольнение формы регистрации и данные передаются к файлу add_reg.php, где пройсходит проверка и запис в БД.
В случии удачного процесса пишу такой код:

setcookie("registered", "Вы успешно прошли регистрацию, введите имя и пароль", time() + 3);

echo "<html><head>
<meta http-equiv='Refresh' content='0; URL=index.php'>
</head></html>";
exit ();

А в index.php перед формой авторизации пишу:

echo $_COOKIE['registered'];

Проблема в том, что на моем машине (localhost) все отлично работает и в течении 3 секунд держится сообщение об успешной авторизации, но а вот на проваидерском сервере не выдает никакое сообщение... (даже пробовал увеличить время до 30 и до 100 секунд)

Что делаю неправильно?

Спасибо

67

Re: Проблемы с запуском PHPMyAdmin

Koba
Надо смотреть журнал ошибок Apache, чтобы выделить проблемный участок.

68

Re: Проблемы с запуском PHPMyAdmin

Где этот журнал хранится на моем машине? (Mac OS Leopard)

69

Re: Проблемы с запуском PHPMyAdmin

Koba
error.log (название может быть другим) обычно находится ниже каталога www в котором расположены файлы виртуального хоста.

70

Re: Проблемы с запуском PHPMyAdmin

Есть такой файл Apache_error_log. На сегодняшную дату только вот эти записи:

[Sat Jan 23 16:34:15 2010] [notice] caught SIGTERM, shutting down
[Sat Jan 23 17:22:07 2010] [notice] Digest: generating secret for digest authentication ...
[Sat Jan 23 17:22:07 2010] [notice] Digest: done
[Sat Jan 23 17:22:07 2010] [notice] Apache/2.0.63 (Unix) PHP/5.2.11 DAV/2 configured -- resuming normal operations
[Sat Jan 23 17:22:11 2010] [notice] caught SIGTERM, shutting down
[Sat Jan 23 17:22:13 2010] [notice] Digest: generating secret for digest authentication ...
[Sat Jan 23 17:22:13 2010] [notice] Digest: done
[Sat Jan 23 17:22:13 2010] [notice] Apache/2.0.63 (Unix) PHP/5.2.11 DAV/2 configured -- resuming normal operations

Эти записи в чем то связаны с  Cookie?


Протестировал такое (замечу что проблема не на моей машине, а на хостинге):

setcookie("registered", "Вы успешно прошли регистрацию, введите имя и пароль", time() + 3); // не работает

echo $_COOKIE['registered']; // не работает
if (isset($_COOKIE['registered'])) {echo "OK!";} // не работает

Но, если не буду указать время:

setcookie("registered", "Вы успешно прошли регистрацию, введите имя и пароль"); // работает

echo $_COOKIE['registered']; // выводит "Вы успешно прошли регистрацию, введите имя и пароль"
if (isset($_COOKIE['registered'])) {echo "OK!";} // выводит "OK!"


Могу как нибуд исправить эту ситуацию?

Спасибо

71

Re: Проблемы с запуском PHPMyAdmin

Koba
Вероятно на сервере и на клиентском компьютере различается системное время, поэтому браузер считает, что действие кукисов истекло и их удаляет.

Если при создании кукисов не писать время, то их действие будет длиться в течении сессии, то есть пока не будет закрыт браузер. При последующем открытии браузера сессия будет создана новая и кукисы будут недействительны.

72

Re: Проблемы с запуском PHPMyAdmin

Добрый день!

У меня три вапроса:
1) Хочу определить веб адресс текущей страницы, на которей нахожусь (типа $_SERVER['HTTP_REFERER'], но текущей страницы...), как это делается?
2) Какой код обеспечивает открытие нового окна браузера с заданными размерами? Допустим после нажатия на echo "<a href='test.php' target='_blanc'>test</a>"; хочу, чтоб открылось новое окно допустим 200px на 300px а не на вес монитор.
3) Допустим читаю статью и в конце добавляю коментарий... после submit пройсходит определенные действия и рефреш, и окно браузера переходит в начале статьи, потом после прокрутки вниз возвращаюсь на прежную позицию. Важможно чтоб после таких действии окно браузера атоматический вернулось в той же позиции, где читал до добавления коментарии (или другой операции)?

Спасибо

73

Re: Проблемы с запуском PHPMyAdmin

1) $_SERVER['REQUEST_URI']

2) Только с помощью JavaScript.

<script type="text/javascript">
function WindowOpen() {
    window.open('test.php', null, 'width=200, height=300, status=no');
}
</script>
<a href="javascript:WindowOpen();">test</a>

3) Попробуйте использовать якорь.
У каждого сообщения сделать слой с параметром id имеющим уникальное значение сообщения. В ссылке добавлять якорь сообщения: test.php#123

74 (изменено: Koba, 2010-01-26 23:47:15)

Re: Проблемы с запуском PHPMyAdmin

Доброй ночи!

1) В БД у меня есть несколько таблиц абсолютного одинаковой структуры: data1, data2, data3 и т. д. до data14. Хочу вывести названия всех статьи из всех таблиц...
Для отделной таблицы пишу такой код:

mysql_query ("SELECT title FROM data14 WHERE categories=$cat", $db);

Вазможно ли в одном запросе sql указать все таблицы от 1-го до 14?
Гипотетический я так предстовляю:
mysql_query ("SELECT title FROM data14 AND data13 AND data12 WHERE categories=$cat", $db); Сущесвует ли такого рода запрос? (протестировал и знаю что так неправильно), или решение какое из данной ситуации? Может лучше создать цикл с таким алгоритмом прмерно: "пока встретишь таблицу dataN, выводи то или иное поле..."
Что вы посоветуйте???

2) Мой сайт предстовляет собой (пока только что начинаю... smile ) элекронную версию полиграфического журнала (у меня препресс студия и давно работаю в полиграфии). Статьи макетирую в Dreamweaver и потом копирую в БД, думаю что так не работают опитные веб програмисты smile и через АДМИН редактирвать такой макет с тэгами трудно будет для редактора журнала. Мне нужен ваш совет - какую программу используют для макетирования, дизайна публикации для размещения в интернет?

Спасибо заранее!

75

Re: Проблемы с запуском PHPMyAdmin

Koba
1) Для данной задачи существует метод объединения запросов (UNION). Обязательным условием является абсолютная идентичность типов полей в таблицах. Надо иметь в виду, что дубли отсекаются. Если необходимо выводить дубли, то следует использовать UNION ALL.

(SELECT `title` FROM `data14` WHERE `categories` = 1) UNION
(SELECT `title` FROM `data13` WHERE `categories` = 1) UNOIN ... и т. д.
(SELECT `title` FROM `data1` WHERE `categories` = 1);

2) С программами помочь не могу, не имею понятия.

Обычно статьи хранятся в виде заголовка, текста и картинок (плюс любые дополнительные поля). Все это закладывается в БД уже на этапе создания статьи. Вывод осуществляется скриптом, который выбирает из БД и собирает заголовок, текст статьи и картинки в единую HTML страницу. Сложную разметку таким образом сделать не просто, но для Интернет ресурса это не всегда и надо.