X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> Не могу понять происхождение ошибок, Помогите разобраться
tro9an
tro9an
Topic Starter сообщение 22.9.2010, 19:35; Ответить: tro9an
Сообщение #1


есть код:
[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>Главная страница</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="800" align="center" class="b_t">
<tr>
<td>
<?php
$result=mysql_query("SELECT id,title FROM for");
$myrow=mysql_fetch_array($result);
do {
printf ("
<table width='70%' align='left' class='b_t'>
<tr>
<td><p><a href='cat.php?id=%s'>%s</a></p></td>
</tr>
</table>",$myrow['id'],$myrow['title']);
}
while ($myrow=mysql_fetch_array($result));
?>

<table width="25%" align="left" class="b_t">
<tr>
<td height="20"> </td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>[/php]
выдаёт ошибку
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in V:\home\localhost\www\forum\index.php on line 16

Warning: printf() [function.printf]: Too few arguments in V:\home\localhost\www\forum\index.php on line 23

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in V:\home\localhost\www\forum\index.php on line 25


почему?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
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`


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
tro9an
tro9an
Topic Starter сообщение 23.9.2010, 23:06; Ответить: tro9an
Сообщение #3


Тему попрошу не закрывать т.к могуть возникнуть ещё проблемы,да и не только у меня одного
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
tro9an
tro9an
Topic Starter сообщение 26.9.2010, 15:35; Ответить: tro9an
Сообщение #4


Имеется дата в формате дд.мм.гггг (например 31.12.2009). Надо написать скрипт который будет вычислять сколько осталось дней, месяцев, лет до этой даты. И вывести в формате "До события остался 1 год 5 месяцев и 25 дней". (при желании можно вывести часы и минуты).


Дайте подсказку как написать, а то них*ра не получается!!!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
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
yury_mw
сообщение 26.9.2010, 23:18; Ответить: yury_mw
Сообщение #6


(tro9an @ 26.9.2010, 15:35) *
Дайте подсказку как написать, а то них*ра не получается!!!

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]


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
tro9an
tro9an
Topic Starter сообщение 27.9.2010, 17:29; Ответить: 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
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("Такой пользователь зарегестрирован! Выберите другой логин!");}

Конечно же пользователь с таким логином будет найден - ведь строкой ранее его данные записали в базу ;)
Т.е., логично, что надо сделать наоборот - сначала проверить свободен ли такой логин, если не свободен, то выдать соответствующее сообщение, а если свободен, то только тогда занести в базу.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
tro9an
tro9an
Topic Starter сообщение 27.9.2010, 18:08; Ответить: tro9an
Сообщение #9


matroskin8, спс , тупанул я чёта ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 27.9.2010, 18:32; Ответить: matroskin8
Сообщение #10


Пожалуйста ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Сделаю аудит сайта на максималках. Разбор ошибок и конкурентов. Запишу видео.
Ручной анализ, нахожу ошибки, которые многие не видят
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


 



RSS Текстовая версия Сейчас: 29.3.2024, 16:38
Дизайн