Помощник
|
Не могу понять происхождение ошибок, Помогите разобраться |
tro9an
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
23.9.2010, 22:59;
Ответить: ZiTosS
Сообщение
#2
|
|
tro9an, ваша одна и единственная ошибка в запросе к БД.
Вообщем ошибка: supplied argument is not a valid MySQL result resource Появляется тогда, когда вы пытаетесь работать с невалидным ресурсом, который возникает при неверном запросе к базе данных. Ваш запрос ошибочен тем, что в качестве таблицы вы указали зарезервированное/ключевое слово for в терминологии mysql. Чтобы в запросах можно было использовать подобного рода слова, их нужно помещать в обратные ковычки `for` Ваш запрос должен иметь вид: SELECT id,title FROM `for`
|
|
|
tro9an
|
Сообщение
#3
|
|
Тему попрошу не закрывать т.к могуть возникнуть ещё проблемы,да и не только у меня одного
|
|
|
tro9an
|
Сообщение
#4
|
|
Имеется дата в формате дд.мм.гггг (например 31.12.2009). Надо написать скрипт который будет вычислять сколько осталось дней, месяцев, лет до этой даты. И вывести в формате "До события остался 1 год 5 месяцев и 25 дней". (при желании можно вывести часы и минуты). Дайте подсказку как написать, а то них*ра не получается!!! |
|
|
ZiTosS |
26.9.2010, 17:15;
Ответить: ZiTosS
Сообщение
#5
|
|
tro9an, и так, лучше реализовать в виде отдельной функции:
1) Входные данные: дата события в формате дд.мм.гггг 2) Выходные данные: массив (года, месяцы, дни) 3) Нам нужно получить текущую дату: функция date() 4) Теперь у нас есть текущая дата и дата события. Нам нужно вычислить между ними разницу: 4.1) Сначала нам нужно разбить даты и по дням, месяцам и годам: функция explode() 4.2) Теперь нужно сосчитать сколько разница в месяцах между датами (считаем полные месяцы) Полных месяцев = (Год события - Год текущий) * 12 + Месяцы события - (месяцы текущего + 1) Единица на конце для того чтобы сосчитать количество именно полных месяцев, потому что текущая дата так и так будет с неполным месяцем. 4.3) Это мы сосчитаем сколько полных месяцев между датами - теперь нам надо получить сколько лет и месяцев между датами отдельно. Для этого нам нужно Полные месяцы разделить на 12 и получим сколько лет между датами, а остаток от деления - сколько месяцев. 4.4) Теперь нам нужно определиться с числами, сколько же дней в остатке. Для этого подойдет формула Остаток дней = Остаток дней события (от начала месяца) + Остаток дней текущей даты (до конца месяца) Для остатка дней события ничего учитывать не нужно, то есть тупо ставить дни. А вот для остатка дней текущей даты нам придётся учитывать: сколько дней в том или ином месяце, а для февраля месяца так же будет важно - високосный или нет текущий год. 5) Получили 3 отдельных переменных: разница лет, разница месяцев, разница дней. Учитываем что разница дней может и превышать 31 день. 6) Далее эти три переменные кладём в массив и возвращаем из функции. Вот и весь алгоритм функции Для вывода нам понадобится такой код: [php]<?php // массив, возвращаемый из функции // $difference_dates = array('years' => [годов], 'months' => [месяцев], 'days' => [дней]); echo "До даты осталось: " echo $difference_dates['years'] > 0 ? "годов - $difference_dates['years'] " : "" echo $difference_dates['months'] > 0 ? "месяцев - $difference_dates['months'] " : "" echo $difference_dates['days'] > 0 ? "дней - $difference_dates['days']" : "" ?>[/php] |
|
|
yury_mw |
26.9.2010, 23:18;
Ответить: yury_mw
Сообщение
#6
|
|
Дайте подсказку как написать, а то них*ра не получается!!! tro9an, ниже спойлер. Если нужна именно "подсказка, как написать" читаем пост ZiTosS-а, а в мой пост не подсматриваем ;) [php]<html> <body> <?php //задача: вывести информацию сколько лет/месяцев/дней/часов/минут/секунд осталось до наступления заданной даты function plural_type($n) { $t1 = $n % 10; $t2 = $n % 100; return ($t1 == 1 && $t2 != 11 ? 0 : ($t1 >= 2 && $t1 <= 4 && ($t2 < 10 || $t2 >= 20) ? 1 : 2)); } function s_type($n, $_type) { $type = array ( 'years' => array('год', 'года', 'лет'), 'months' => array('месяц', 'месяца', 'месяцев'), 'days' => array('день', 'дня', 'дней'), 'hours' => array('час', 'часа', 'часов'), 'minutes' => array('минута', 'минуты', 'минут'), 'seconds' => array('секунда', 'секунды', 'секунд') ); return " " . $n . " " . $type[$_type][plural_type($n)]; } function delta($key_date) { $now = getdate(); $keyd = split ('[: /.-]', $key_date); $y = $keyd[2] - $now['year']; $mo = $keyd[1] - $now['mon']; $d = $keyd[0] - $now['mday']; $h = $keyd[3] - $now['hours']; $mi = $keyd[4] - $now['minutes']; $s = $keyd[5] - $now['seconds']; if($s < 0) { $s+=60; $mi--; } if($mi < 0) { $mi+=60; $h--; } if($h < 0) { $h+=24; $d--; } if($d < 0) { $d+= cal_days_in_month(CAL_GREGORIAN, ($keyd[1] == 1 ? 12 : $keyd[1]-1), $keyd[2]); $mo--; } if($mo < 0) { $mo+=12; $y--; } if ($y != 0) $str .= s_type($y,"years"); if ($mo != 0) $str .= s_type($mo,"months"); if ($d != 0) $str .= s_type($d,"days"); if ($h != 0) $str .= s_type($h,"hours"); if ($mi != 0) $str .= s_type($mi,"minutes"); $str .= s_type($s,"seconds"); return $str; } $tst_date = "1-10-2010 12:00:00"; echo "До полудня 1 октября 2010 осталось" . delta($tst_date); ?> </body> </html>[/php] |
|
|
tro9an
|
Сообщение
#7
|
|
В чём трабла? при любом нажатии на кнопку пишет "Такой пользователь зарегестрирован! Выберите другой логин!", даже в том случае если такой логин в БД свободен, и главное всёравно регит!!!
[php]<?php include("db.php");?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Untitled Document</title> </head> <body> <?php if (isset($_POST['submit'])){ if (!empty($_POST['login']) && !empty($_POST['email']) && !empty($_POST['sum'])){ $login=trim($_POST['login']); $login=mysql_real_escape_string($login); $email=trim($_POST['email']); $email=mysql_real_escape_string($email); $pass_t=trim($_POST['pass_t']); $pass_t=mysql_real_escape_string($pass_t); if ((!empty($_POST['pass']) && !empty($pass_t))and($pass_t==($_POST['pass']))) { $pass_t=md5($pass_t); $result=mysql_query("INSERT INTO user (login,email,pass) VALUES ('$login','$email','$pass_t')"); $res=mysql_query("SELECT login FROM user WHERE login='$login'"); if ((mysql_num_rows($res))>0) {exit("Такой пользователь зарегестрирован! Выберите другой логин!");} else{ if ($result=='true'){echo "Регестрания прошла успешно!";} else { exit("Регестрация не удалась попробуйте снова!"); } } } else { echo "Поле с потверждением пароля заполнено не верно!"; } } else { exit("Вы заполнили не все поля!"); header("Location: reg.php"); } } ?> </body> </html>[/php] З.Ы норм регестрация? |
|
|
matroskin8 |
27.9.2010, 17:52;
Ответить: matroskin8
Сообщение
#8
|
|
Сильно не вникал, но так, с ходу, проблема в том, что сначала в базу записываются данные нового пользователя:
$result=mysql_query("INSERT INTO user (login,email,pass) VALUES ('$login','$email','$pass_t')"); а затем только идет запрос на выборку данных и проверку существования логина: $res=mysql_query("SELECT login FROM user WHERE login='$login'"); if ((mysql_num_rows($res))>0) {exit("Такой пользователь зарегестрирован! Выберите другой логин!");} Конечно же пользователь с таким логином будет найден - ведь строкой ранее его данные записали в базу Т.е., логично, что надо сделать наоборот - сначала проверить свободен ли такой логин, если не свободен, то выдать соответствующее сообщение, а если свободен, то только тогда занести в базу. |
|
|
tro9an
|
Сообщение
#9
|
|
matroskin8, спс , тупанул я чёта
|
|
|
matroskin8 |
27.9.2010, 18:32;
Ответить: matroskin8
Сообщение
#10
|
|
Пожалуйста
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Сделаю аудит сайта на максималках. Разбор ошибок и конкурентов. Запишу видео. Ручной анализ, нахожу ошибки, которые многие не видят |
4 | bigboy | 2188 | 28.11.2022, 12:10 автор: bigboy |
|
Adobe muse: Не могу разместить нужный мне код сразу после Body | 0 | Evg82 | 3829 | 20.6.2020, 10:24 автор: Evg82 |
|
Могу сделать регистрации в букмекерских конторах | 4 | extremalspeed | 2613 | 22.1.2019, 23:08 автор: hiberok |
|
Комплексный (SEO) аудит сайтов, нахождение и устранение всех ошибок сайта. Вывод в ТОП | 29 | Taylor | 18927 | 8.12.2017, 13:40 автор: kukla |
|
Правка ошибок сайта (css, html, др. работы). Комплекс мелких работ по допиливанию визитки. |
2 | nb001 | 1824 | 5.6.2017, 16:51 автор: nb001 |
Текстовая версия | Сейчас: 29.3.2024, 16:38 |