Войти

Показать полную графическую версию : Вопросы по сайту


Страниц : [1] 2 3

pasha4ur
06-06-2007, 17:38
Всем привет. ;)
Первый раз увидел этот раздел и был приятно удивлен (даже очень), потому что последние месяца 4 я этим стал заниматься/учить.
Я делаю сайт на диплом в техникуме (почти сделал) и есть пару вопросов:
вот они (http://forum.mail.zp.ua/index.php?showtopic=6669&st=100&gopid=61581&#entry61581)

Vlad Drakula
06-06-2007, 17:44
pasha4ur
давать ссылки с вопросам на другой форум вроде запрещено!

pasha4ur
06-06-2007, 18:19
Ок. Перепечатаем:( пару постов.
<?php
$mes="$mestext";
if($mes=="")
{
echo("<div align=center><p class=стиль5><font color=ff0000>Ваше сообщение не отправлено!</font></p><p class=стиль5>Введите текст сообщения.</p></div>");
}
else
{
echo ("<div align='center'><p class='стиль5'>Спасибо!<br>Ваше сообщение отправлено.</p></div>");
mail("…..mail.ru", "OnLine-Сообщение", $mes);
echo ("<table width=300 align=center border=0 cellpadding=5 cellspacing=4><tr><td align=center background=../assets/bg_1.gif><font face=Verdana color=#000000 size=2><b>Текст сообщения</b></font></td></tr>
<tr><td bgcolor=#CCFFFF><p class=стиль3 align=justify>"."$mes"."</p></td></tr></table>");
}
?>
Запускал все через Денвер, Интернет был включен. Почему письма не приходят?
P.S. Своё е-мейл скрыл, чтоб спамеры не заваляли письмами

Видел такую фишку, что при наведении на ячейку таблицы она меняет свой фон. Как это примерно сделать, наверное, на Джава (я её не знаю еще).

Coutty
06-06-2007, 18:38
Почему письма не приходят?
В составе Денвера есть sendmail? Без него не должны ходить письма. Посмотри в логах апача что пишут.

По таблице - можно пример посмотреть? Просто я мог бы предложить такой (http://young.h15.ru/) вариант, но вдруг не устроит. Там на CSS и без таблицы, хотя немного похоже ~
Vlad Drakula, не ругай мой поганенький сайтец лишний раз)))

pasha4ur
06-06-2007, 19:00
В составе Денвера есть sendmail? Без него не должны ходить письма. Посмотри в логах апача что пишут.
Знал бы я что да как смотреть. Я в дебри Апача и Денвера пока еще не лазил.
По таблице - можно пример посмотреть?
На счет смены цветов ячейки сделал так.
Стили:
#tab:hover { background:#FF6666}
#tab:link,a:visited {background:#C8E6F9}

Код:
<table align="center" width="350" cellpadding="4" border="0" cellspacing="2" bordercolor="#FFFFFF" >
<tr id="tab" bgcolor="#C8E6F9"><td width="190" class="стиль3" >Производитель процессора</td>
<td align="left"><select class="стиль3" name="CPU1"><option value="AMD" selected="selected">AMD</option>
<option value="Intel">Intel</option></select></td></tr>
<tr id="tab" bgcolor="#C8E6F9"><td class="стиль3">Производитель чипа видеокарты</td>
<td align="left"><select class="стиль3" name="GPU1"><option value="AMD-ATI Radeon" selected="selected">AMD-ATI Radeon</option>
<option value="nVidia GeForce">nVidia GeForce</option></select></td></tr><tr><td colspan="2" align="center"><input type="submit" value="Ok"></td></tr></table>

Работает в ФаерФоксе и Опере. Как сделать, чтоб в Интернет Эксплоуере работало. Диплом ведь на нем принимают

Coutty
06-06-2007, 19:06
Знал бы я что да как смотреть.
Файл конфигурации - httpd.conf. В нём есть строчка "Error Log имя_файла". Вот в этом файле, который указан и надо бы посмотреть.
А sendmail можно просто поиском по папке найти, если есть там он))

По таблице пока не даю комментариев. Некогда проверять (тем более в IE=( )
Сходу разве только: попробуй в стиле вместо background написать background-color. Вдруг заработает?))

pasha4ur
06-06-2007, 20:31
Сходу разве только: попробуй в стиле вместо background написать background-color. Вдруг заработает?))
Не помогло :(

mar
06-06-2007, 20:51
в состав деневра входит sendmail, сконфигурированный только для тестинга. (Письма не посылаются, а складируются в специальную папку)

pasha4ur
07-06-2007, 11:19
Да действительно есть такая папка :)
Там были письма
X-Sendmail-Cmdline: sendmail_stub.pl -t -i
To: pasha4ur@mail.ru
Subject: OnLine-заказ
AMD\ Сокет процессора-939\ Процессор-AMD Athlon 64 3200+ Tray\ Материнская плата-Biostar GeForce 6100 M9\ Объем памяти-128Mb\ Кол-во планок-1\ AMD-ATI Radeon\ Видеокарта-ASUS EAX1300PRO TD PCX Radeon 1300PRO 256MB\ Привод-CD-ROM Asus 52x Box\ Флоппик-Дисковод 3.5" NEC 1.44Mb\ Корпус-ASUS TА651 350W/S/PFC, WSW, BLACK-SILVER\ Дополнительные параметры-1\ Покупатель-1\ Телефон покупателя-1

А как на счет 2 вопроса?

mar
07-06-2007, 14:57
Пример со сменой фона ячейки таблицы на JavaScript
Пример очень старый, сейчас можно спокойно оставить только то, что внутри if, а еще лучше использовать полностью css

<html>
<head>
<title>TD BackGround color</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<META NAME="author" CONTENT="Maryanna Nesina Email: webmaster@mail.bio.pu.ru">

<script language="JavaScript">
<!--

// Maryanna Nesina

// http://www.webprogramming.boom.ru
// This script allows to change <td> BackColor while pointer moves over the table cell
// Скрипт меняет цвет ячейки при проведении над ней курсора мыши
// One function thar get cell id and color to use
// Usage onMouseOver="ChangeBgColor('your_cell_name','color_you_want')"
// onMouseOut="ChangeBgColor('your_cell_name','color_you_want')"
// Использование: onMouseOver="ChangeBgColor('имя_ячеки','нужный_цвет')"
// onMouseOut="ChangeBgColor('имя_ячеки','нужный_цвет')"
// As for NN4 it is better to use Layers (you can convert tables to Layers via shareware Dreamweaver)
// Что касается NN4 - используйте Layers (таблицу можно перевести в слои при помощи shareware Dreamweaver)
function ChangeBgColor(id,color){
//
if (document.getElementById) { //IE5,6 , NN6, Mozilla - DOM LAYER1
var td = document.getElementById(id);
td.style.backgroundColor=color;
}
if (document.all) document.all[id].style.background=color; //IE4, Opera5
}
// -->
</script>
</head>
<body>
<table border="3">
<tr>
<td id="a" onMouseOver="ChangeBgColor('a','red')" onMouseOut="ChangeBgColor('a','blue')" bgcolor="blue">
Для броузеров, поддерживающих DOM Layer1 - IE5,6 , NN6, Mozilla
<br>и имеющих понятие о document.all IE4, Opera5

</td>
</tr>
<tr>
<td id="b" onMouseOver="ChangeBgColor('b','blue')" onMouseOut="ChangeBgColor('b','red')" bgcolor="red">
Проведите мышкой над ячеками таблицы
<br>
</td>
</tr>

</table>
</body>
</html>

pasha4ur
07-06-2007, 15:56
Спасибо попробую.
а еще лучше использовать полностью css
Я пробовал. Вверху код даже есть, но почему-то в Интернет Эксплоуере не пашет, а в Опере и ФФ пашет

pasha4ur
10-06-2007, 13:18
Хотел еще спросить.
Я сделал «типа» гостевую книгу. РНР просто выбирает в таблицу записи из БД, но со временем эта таблица становиться до неприличия длинной.
Как можно сделать, чтоб все делилось на страницы 1, 2, 3…. Намекните, только очень сильно :)

Coutty
10-06-2007, 14:37
В запросе к базе данных добавляешь ограничение:
"SELECT * FROM `guestbook` ORDER BY `time` DESC LIMIT 0 , 20"
Начало расписывать не буду.
ORDER BY `time` - сортировка по колонке time
DESC - в обратном порядке
LIMIT 0, 20 - ограничить выдаваемый результат двадцатью строками, начиная с нулевой.
Если по страницам, то вместо 0 пишешь, например, $_GET['page']*20. Соответственно, строка, с которой надо начинать выборку будет определяться как "номер страницы * 20 (записей на страницу)". Второе число после LIMIT прямо так и пишется - 20.
Ну, а как генерировать ссылки на страницы, надеюсь, догадаешься. Если нет, то я помогу догадаться. Но лучше - подумай сам)))

pasha4ur
10-06-2007, 18:21
Да надо подумать, как для следующей страницы выборку делать :)
начинать выборку будет определяться как "номер страницы * 20 (записей на страницу)
Тогда для следующей начнется с 40.
Наверное, что-то такое
<a href="1.php?<?php $page?>">2</a>
$page_st=$page*2+1;
$page_en=$page*2+20;
"SELECT * FROM `guestbook` ORDER BY `time` DESC LIMIT '$page_st' , '$page_en'"

Что-то Limit не фурычит
Warning: odbc_exec(): SQL error: [Microsoft][Драйвер ODBC Microsoft Access] Ошибка синтаксиса в предложении ORDER BY., SQL state 37000 in SQLExecDirect in z:\home\proba.ru\www\html\q.php on line 153

$q=odbc_exec($connect_id, "Select * from book ORDER BY Dat DESC LIMIT 0, 20");

До добавления Лимит фурычило :(

Coutty
10-06-2007, 19:14
pasha4ur, что ж ты сразу не сказал, что у тебя какой-то там MS Access? Я-то для MySQL писал)) Странно, конечно, что Access не весь SQL держит.
Ошибка синтаксиса в предложении ORDER BY., SQL state 37000
А точка там откуда взялась?

Тогда для следующей начнется с 40.
Значит надо добавить "-1" в нужном месте.

"SELECT * FROM `guestbook` ORDER BY `time` DESC LIMIT '$page_st' , '$page_en'"
Нет, ну не $page_en, а 20. Это показывает не конечный номер строки, а количество строк от начала выборки.
И, пожалуй, даже и не DESC. А то самое старое сообщение наверху окажется...

<a href="1.php?<?php $page?>">2</a>
Ничего не понял... Что тут происходит?))

Ну, всё равно, раз не хочет работать с лимитом. Тогда попробуем сделать выборку на все строки и разобрать их скриптом.
Например так (предполагаю, что скрипт называется guestbook.php и передаются параметры вида guestbook.php?page=2):

$post_on_page=20; // определяем, сколько записей на страницу выводить
$q = odbc_exec($connect_id, "Select * from book ORDER BY Dat DESC"); // шлём запрос к БД на всю таблицу
$num_rows = считать_количество_строк($q); // в MySQL это было mysql_num_rows($q). В ахсексе не знаю.
$row_start = ($_GET['page']-1) * $post_on_page; // начальная строка будет определяться как номер страницы (начиная с нуля - поэтому ставим "-1") умножить на количество постов на страницу

for ($i = $row_start; $i < ($row_start + $post_on_page); $i++) // может неоптимально, но всё же. Циклом проходим по строкам, которые будут выводиться. В $i записывается номер текущей строки
{
$result=mysql_fetch_assoc($q); // опять же, как в ахсексе - не знаю. Разбиваем строку. Т.е. в $result будет содержаться массив.
echo "<p><b>".$result['autor']."</b><br />".$result['message']."</p><hr />"; // выводим сообщение в нужном нам виде. Предполагается, что autor и message - это столбцы из базы данных. Они были внесены в массив предыдущей командой. Тегами по вкусу можно разбавить.
}

// после цикла все сообщения со страницы выведены. Теперь список страниц внизу сделаем. Можно и перед сообщениями ещё. Если делаем и там, и там, то можно записать вывод в переменную, а потом два раза её использовать.

$num_pages = $num_rows / $post_on_page; // определяем, сколько страниц можно получить при таком количестве сообщений. Наверное, надо округлить вверх, но я не помню функцию.
for ($i = 1; $i <= $num_pages; $i++) // для каждой страницы своя ссылка будет. По поводу сравнения сомневаюсь - то ли строго меньше, то ли меньше-равно.
{
echo "$nbsp;<a href='guestbook.php?page=$i'>$i</a>"; // проще простого
}

Ну и всё, пожалуй. На работоспособность не проверял. Будут ошибки - сообщи, попробую поправить.

UPD: Ой, какая красивая разноцветная картинка получилась. Гламурненько =^_^=

pasha4ur
10-06-2007, 20:21
Попробую. Я тут еще и в нете интересную гостевую книгу нашел. Вот только форма для отправки сообщений сбоку и когда переносишь её вниз, она перестает работать. Как-нибудь потом и с ней разберусь :)

pasha4ur
11-06-2007, 09:41
<?php
define("CONNECTION_STRNG", "DBQ=C:\\WebServers\\home\\dip.ru\\www\\data\\Quest.mdb; DRIVER={Microsoft Access Driver (*.mdb)};");
// Підключення до бази даних
$connect_id = odbc_connect(CONNECTION_STRNG, "", "");
$page=settype($page, 'integer');
if(!$connect_id)
echo "Ошибка соединения с базой данных...";
$post_on_page=5;
$q=odbc_exec($connect_id, "Select * from book ORDER BY Dat DESC");
$num_rows = odbc_num_rows($q);
$row_start = ($_GET['page']-1) * $post_on_page;
for ($i = $row_start; $i < ($row_start + $post_on_page); $i++)
{
odbc_fetch_into($q, $result);
//do{
if (odbc_fetch_row($q)){
echo"<tr><td align=center><font face=verdana size=1>".$result['3']."</font></td>";
echo"<td align=center><font face=verdana size=2>".$result['1']."</font></td>";
echo"<td align=justify><font face=verdana size=2>".$result['2']."</font></td></tr>";
}
//}
//while (odbc_fetch_row($q) and $i < ($row_start + $post_on_page));
}

$num_pages = $num_rows / $post_on_page;
echo ("<tr><td colspan=2 align=center>");
for ($j = 1; $j <$num_pages; $j++)
{
echo "$nbsp;<a href='Q.php?page='$j''>'$j'</a>";
}
echo ("</td></tr></table>");
echo "<br>num_rows ".$num_rows."";
echo "<br>row_start ".$row_start."";
echo "<br>num_pages ".$num_pages."";
echo "<br>page ".$page."";
?>


Что получаем.
1 Постоянно выводятся одни и теже записи, независимо от № страницы (ну так по коду и получается)

2 Ссылки не создаются

3 В конце у меня выводятся переменные:
num_rows -1
row_start 0
num_pages -0.2
page 1
Пояснение к ошибке: odbc_num_rows() will return the number of rows in an ODBC result. This function will return -1 on error. For INSERT, UPDATE and DELETE statements odbc_num_rows() returns the number of rows affected. For a SELECT clause this can be the number of rows available.
Note: Using odbc_num_rows() to determine the number of rows available after a SELECT will return -1 with many drivers.
Как давно я английский переводил :). Ну типа эта ф-ция с СЕЛЕКТ со многими драйверами не фурычит :(

Coutty
11-06-2007, 12:14
pasha4ur, у тебя нет русской документации к PHP? В описании к функции написано:
"odbc_num_rows() возвращает количество столбцов в ODBC-результате. Эта функция возвращает -1 при ошибке. Для операторов INSERT, UPDATE и DELETE odbc_num_rows() возвращает количество задействованных рядов. Для оператора SELECT это может быть количество доступных рядов.
Примечание: использование odbc_num_rows() для определения количества доступных рядов после SELECT возвращает -1 со многими драйверами."
Я не понял - MS Аccess какой-то особенный? По сути, эта функция может вернуть всё, что угодно. Может, на MySQL можно?)) А то как-то слишком тяжело...

Что там ещё:
Описание
bool odbc_fetch_row (resource result_id [, int row_number])
Если odbc_fetch_row() прошла успешно (ряд был), возвращается TRUE. Если рядов больше нет, возвращается FALSE.
odbc_fetch_row() извлекает ряд данных, который был возвращён функцией odbc_do() / odbc_exec(). После вызова odbc_fetch_row() доступ к полям этого ряда осуществляется с помощью odbc_result().
Если row_number не специфицирован, odbc_fetch_row() попытается извлечь следующий ряд результирующего набора. Вызовы odbc_fetch_row() с и без row_number можно смешивать.
Для прохода по результату более одного раза можно вызывать odbc_fetch_row() с row_number 1, а затем продолжать выполнение odbc_fetch_row() без row_number для просмотра результата. Если драйвер не поддерживает извлечение рядов по номеру, параметр row_number игнорируется.
Т.е. odbc_fetch_row() просто переключает указатель на другую строку. Затем нужно использовать odbc_result()

Описание
string odbc_result (resource result_id, mixed field)
Возвращает содержимое поля.
field может быть целым числом, содержащим номер столбца нужного вам поля; либо строкой, содержащей имя поля. Например:
$item_3 = odbc_result ($Query_ID, 3);
$item_val = odbc_result ($Query_ID, "val");
Первый вызов odbc_result() возвращает значение третьего поля текущей записи результата запроса. Второй вызов функции odbc_result() возвращает значение поля, имя которого "val", текущей записи результата запроса. Возникает ошибка, если параметр номера столбца для этого поля меньше единицы или превосходит количество столбцов (или полей) в текущей записи. Аналогично ошибка возникает, если поле имеет имя, которое не является именем поля запрашиваемой таблицы.
Индексы полей начинаются с 1. В зависимости от того, данные каких столбцов возвращаются (binary или long), см. odbc_binmode() и odbc_longreadlen().
Бррр...


1 Постоянно выводятся одни и теже записи, независимо от № страницы (ну так по коду и получается)
Совсем я не понимаю odbc. Что-то далеко от меня. Придётся разгребать тебе самому=(
п.2 и 3 вытекают из п.1

Может быть на phpclub.ru что-нибудь есть.

pasha4ur
11-06-2007, 12:59
Да блин ОДБС. :swoon:
Ох бы я его разработчикам :butcher: ... :)
МуСкл просто в технаре не обясняли (нам там вообще ничего не объясняют), а я уже все по диплому сделал . Преподша сказала, что если разгребешь ОДБС, то МуСкл покажется тебе сказкой.
Ладно спрошу у еще одного знающего человека ;)

Coutty
11-06-2007, 14:23
Преподша сказала, что если разгребешь ОДБС, то МуСкл покажется тебе сказкой.
Ох, как она права...




© OSzone.net 2001-2012