1 (изменено: Kingcss, 2010-07-25 20:57:50)

Тема: Null

Вооющем такая проблема. Сори если тема уже была. Нужно чтобы поле статус имело по умолчанию значение 0, чтобы потом можно было поменять на1 некоторым пользователям. В PHPMYADMIN  выставляю по умолчанию NULL пишет ошибку:#1067 - Invalid default value for 'status'. Выстанвляю значение НЕТ и внизу пишу 0, сохраняю, ничего не изменяется. Ставлю галку на NULL тоже ничего. Как сделать?




Да и еще вопрос:
Поле id стоит auto_increment и добавляется +1 к каждому и допустим я удаляю 3 первых,как сделать чтоб 4 стал первым  5-2 и так далее?

2

Re: Null

Kingcss
В строке "По умолчанию" выберите "Как определено:" и в поле ввода введите 0.

Kingcss сказал:

Поле id стоит auto_increment и добавляется +1 к каждому и допустим я удаляю 3 первых,как сделать чтоб 4 стал первым  5-2 и так далее?

Так сделать нельзя, теряется всякий смысл индекса с параметром автоувеличения (auto_increment).

3 (изменено: Kingcss, 2010-07-25 21:44:32)

Re: Null

Выполняю команду:
$r=@mysql_query("UPDATE users SET status=1 WHERE uniq_id='".$uniq_id."' AND status=0");
  //   if($r) {echo '<h2>Ваша учетная запись активирована.</h2><br/> Теперь вы можете <a href="index.php">войти на сайт</a> используя данные указанные при регистрации';}

//     else {echo 'Активация невозможна: профиль уже активирован';}
Но status неувиличивается? хотя пишет что учетная запись активирована

Да даже если тупо написать:
$r=@mysql_query("UPDATE users SET status=1 WHERE uniq_id='".ccd728055424a2894d6c906365fedaf0."' ");
if($r) {echo '<h2>Ваша учетная запись активирована.</h2><br/> Теперь вы можете <a href="index.php">войти на сайт</a> используя данные указанные при регистрации';}
Серавно не меняется, в чем проблема?

4

Re: Null

Если в phpMyAdmin попробовать выполнить запрос что получится?

UPDATE users SET status=1 WHERE uniq_id="ccd728055424a2894d6c906365fedaf0"

5

Re: Null

Пробывал, Выполнял, ничего не изменяется, хотя запрос правильный

6

Re: Null

Kingcss сказал:

Пробывал, Выполнял, ничего не изменяется, хотя запрос правильный

Покажите структуру таблицы users.

Попробуйте проверить таким запросом, должно вывести найденную строку:

SELECT * FROM `users` WHERE `uniq_id` = "ccd728055424a2894d6c906365fedaf0"

7 (изменено: Kingcss, 2010-07-26 16:02:49)

Re: Null

http://saveimg.ru/show-image.php?id=85b … 89ccfc4d77                                   вот таблица
http://saveimg.ru/show-image.php?id=2f1 … c9435f9ab0                                      вот структура

8

Re: Null

Kingcss
Не вижу ошибки, должно работать.

SELECT работает, как я выше указал?

9

Re: Null

Добавил запрос вывода в конец страницы регистрации(чтоб отдельную не создавать): $pn = mysql_query("SELECT * FROM `users` WHERE `uniq_id` = 'ccd728055424a2894d6c906365fedaf0' ");
echo " $pn ";
ВЫВЕЛ: Resource id #5

10 (изменено: Kingcss, 2010-07-27 09:10:42)

Re: Null

Все этот вопрос снят, щас выполнил команду: UPDATE users SET status=1 WHERE uniq_id='97dc014887970db9290caae45a416c0e' AND status=0 и норма все.
Теперь другая проблема, уже чисто php.
Вот кусок файла register.php:

if($_POST['password'] !='' AND $_POST['spassword'] !='' AND $_POST['password'] == $_POST['spassword']){
$_POST['password']=$password;
$uniq_id = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime());
$r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($login)."','".md5($password)."','".$email."','".$uniq_id."',0)");
if($r) {
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";
$headers .= 'From:Сайт %sitename%' . "\r\n";
$subject = "Подтверждение регистрации на сайте";
$message = 'Для активации аккаунта пройдите по следующей ссылке <a href="http://test1.ru/activation.php?id='.$uniq_id.' target="_blank">http://test1.ru/registration.php?activation='.$uniq_id.'</a>';
$message .= 'или скопируйте ссылку в окно ввода адреса браузера и нажмите enter.';
if(mail($email,$subject,$message,$headers) != FALSE) {
echo 'Регистрация завершена, на введеный Вами e-mail было отправлено сообщение для активации аккаунта';
}
else {echo 'Регистрация невозможна: Повторите запрос позднее';}

ВОТ ФАЙЛ activation.php:


<?php
session_start();
@include("config.php");
//Необходимо подключиться к БД
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ('Не могу выбрать БД');
echo "<h2>Страница активации</h2>";
if($_GET['id']!='') {
$_GET['id']=$uniq;
$r=@mysql_query("UPDATE users SET status=1 WHERE status=0 AND uniq_id='$uniq' ");
if($r) {echo '<h2>Ваша учетная запись активирована.</h2><br/> Теперь вы можете <a href="index.php">войти на сайт</a> используя данныеуказанные при регистрации';}
else {echo 'Активация невозможна: профиль уже активирован';}
}
?>
Если убрать из запроса uniq_id и подставить допустим логин, то все работает. Так что ИМХО проблема в подстановке uniq_id .
И еще одна проблемма:

$r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($login)."','".md5($password)."','".$email."','".$uniq_id."',0)");
а именно md5($password) каждый раз  кеш получается один и тот же, регестрировал 3 аканта под разными паролями, а хем  одинаковый записывается.
Помогите решить проблемы

11

Re: Null

Эта строка является ошибкой, нельзя передать в глобальную переменную $_POST['password'] то что находится в $password, так как выше по тексту $password вообще не наблюдается.
[mono]$_POST['password']=$password;[/mono]

Возможно здесь имелось в виду обратное, что было бы логично.
[mono]$password = $_POST['password'];[/mono]

Во втором скрипте тоже есть нелогичная строка.
[mono]$_GET['id']=$uniq;[/mono]

Если вы не уверены в содержимом какой-то переменной, просто добавьте временно в скрипт в том месте, где переменная появляется, строку:
[mono]exit(имя переменной);[/mono]
И всегда сможете отладить, если возникнут ошибки.

12 (изменено: Kingcss, 2010-07-27 11:42:21)

Re: Null

Спасибо за совет, сейчас попробую, но мне казалось что от перемены мест,результат не меняется
А вот наверно это и были мои ошибки, т.к. не передавался именно id и пароль

13

Re: Null

Все работает, Hanut респект тебе, спасибо за помощь