Re: Проблемы с запуском PHPMyAdmin
Для PHP кода я правильно пишу?
$sum = ("SELECT SUM (vote) FROM rating, $db);
echo $sum;
Почему то не выводит ничего... (и второй вариант еще и для PHP кода если можно)
Спасибо
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум PHP-MyAdmin.RU → MySQL & phpMyAdmin → Проблемы с запуском PHPMyAdmin
Для PHP кода я правильно пишу?
$sum = ("SELECT SUM (vote) FROM rating, $db);
echo $sum;
Почему то не выводит ничего... (и второй вариант еще и для PHP кода если можно)
Спасибо
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'].
Получилось, спасибо!
Здравствуйте 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 не смог решить пока эту проблему
Как можно избежать от такой ситуации?? Допустим разрывать строку или какой-нибуд другой выход есть?
Спасибо
Koba
Ошибку можно подавить поставив перед функцией знак @ (at). Пример:
@mysql_query($sql);
Либо добавьте в код строку отключающую вывод ошибок:
error_reporting(0);
Доброе утро!
На сайте у меня есть голосование для вычисления рейтинга темы. Хочу чтоб человек, который уже голосовал, не смог больше голосовать.
Что является уникальным идентификатором посетителя, я подумал это $_SERVER['REMOTE_ADDR'] И если так, в корпорации, где множество компьютеров у них тоже разные будут этот параметр? (я планирую согранить в базу каждый посетитель и потом при обращении для голосовании пойскать в базе входящий посетитель и если есть то заблокировать...)
Что вы посоветуйте?
Спасибо
Koba
У посетителей из локальной сети будет один внешний IP адрес, поэтому лучше использовать сессии. Недостаток сессий в том, что они сбрасываются при закрытии браузера (если проголосовать, затем закрыть браузер и снова его открыть, то можно проголосовать еще раз). Без авторизации есть только эти два варианта (IP и сессия) и вам решать какой из них лучше подходит под конкретную ситуацию.
Здравствуйте Hanut!
В БД для авторизации создал таблицу, дге хранятся числовие значения INT, 1-3 значные числа
К примеру:
pub postid
7 22
14 9
15 15
Когда искомое значение не меньше 4 символов то пользуюсь тпким синтаксисом mysql - 'MATCH(some) AGAINST($some)'
Но как тут могу пойскать допустим в поле postid есть ли значение 9 или нет?
Спасибо
Koba
Не смог понять вопрос.
Добрый день!
Какой 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 символов такой запрос все равно не ищет...
Какой выход из данной ситуации?
$result = mysql_query ("SELECT * FROM `data` WHERE `pub` = $a AND `postid` = $b", $db);
Здравствуйте 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 входит в систему (давольно известный наверно вопрос...)
Пока не смог придумат механизм защиты от этого.
Что вы посоветуйте?
Спасибо заранее!
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 'Пользователь авторизован';
?>
Если вы не хотите каждый раз делать выборку данных пользователя из БД, то данные авторизации (хеш) можно хранить в сессии.
Спасибо большое за правильное направление ))
Для закончения авторизации хожу уничтожить
$_COOKIE['login_name'];
Пишу так
setcookie("login_name");
Прочитал еще, что уничтожать можно если утановить нулевое знаечение времени... но как это делается? Какой будет синтаксис в моем варианте? (для $_COOKIE['login_name'] )
Но после нажатии submit не уничтожается а повторном нажатии уничтожается... Что за явление это, и как можно мгновенно уничтожить cookie при нажатии submit?
Спасибо
Koba
Удаляются куки путем выставления времени их истечения в прошлое следующим образом.
setcookie ("login_name", "", time() - 3600);
Обратите внимание, что обнуление кукисов должно идти перед авторизацией, иначе сперва будет выполнена авторизация.
Добрый день!
Возникла такая проблема:
В 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 секунд)
Что делаю неправильно?
Спасибо
Koba
Надо смотреть журнал ошибок Apache, чтобы выделить проблемный участок.
Где этот журнал хранится на моем машине? (Mac OS Leopard)
Koba
error.log (название может быть другим) обычно находится ниже каталога www в котором расположены файлы виртуального хоста.
Есть такой файл 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!"
Могу как нибуд исправить эту ситуацию?
Спасибо
Koba
Вероятно на сервере и на клиентском компьютере различается системное время, поэтому браузер считает, что действие кукисов истекло и их удаляет.
Если при создании кукисов не писать время, то их действие будет длиться в течении сессии, то есть пока не будет закрыт браузер. При последующем открытии браузера сессия будет создана новая и кукисы будут недействительны.
Добрый день!
У меня три вапроса:
1) Хочу определить веб адресс текущей страницы, на которей нахожусь (типа $_SERVER['HTTP_REFERER'], но текущей страницы...), как это делается?
2) Какой код обеспечивает открытие нового окна браузера с заданными размерами? Допустим после нажатия на echo "<a href='test.php' target='_blanc'>test</a>"; хочу, чтоб открылось новое окно допустим 200px на 300px а не на вес монитор.
3) Допустим читаю статью и в конце добавляю коментарий... после submit пройсходит определенные действия и рефреш, и окно браузера переходит в начале статьи, потом после прокрутки вниз возвращаюсь на прежную позицию. Важможно чтоб после таких действии окно браузера атоматический вернулось в той же позиции, где читал до добавления коментарии (или другой операции)?
Спасибо
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
Доброй ночи!
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) Мой сайт предстовляет собой (пока только что начинаю... ) элекронную версию полиграфического журнала (у меня препресс студия и давно работаю в полиграфии). Статьи макетирую в Dreamweaver и потом копирую в БД, думаю что так не работают опитные веб програмисты
и через АДМИН редактирвать такой макет с тэгами трудно будет для редактора журнала. Мне нужен ваш совет - какую программу используют для макетирования, дизайна публикации для размещения в интернет?
Спасибо заранее!
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 страницу. Сложную разметку таким образом сделать не просто, но для Интернет ресурса это не всегда и надо.
Форум PHP-MyAdmin.RU → MySQL & phpMyAdmin → Проблемы с запуском PHPMyAdmin
Форум работает на PunBB, при поддержке Informer Technologies, Inc
Currently installed 7 official extensions. Copyright © 2003–2009 PunBB.