Помогите разобраться с программой!!!

Finch

Guest
Помогите разобраться с программой!!!

Добрый день,
пришлось тут по долгу службы писать программу на php, сам в нём полный профан.
Написал вроде всё так, только вот не работает.
Программа является веб мордой к базе данных MySQL, где храняться почтовые пользователи. Программа нужна для завода новых пользователей.

Вот структура базы:
Код:
mysql> select * from aliases;
+------+------+--------------------------+--------------------------------------------+----------+----------+
| id   | gid  | alias                    | maildir                                    | password | info     |
+------+------+--------------------------+--------------------------------------------+----------+----------+
| 1600 |    6 | [email][email protected][/email]    | /var/spool/vmail/postfix.domain.ru_finch/    | 123      | finch    |
| 1601 |    6 | [email][email protected][/email] | /var/spool/vmail/postfix.domain.ru_user/ | 12345    | user |
+------+------+--------------------------+--------------------------------------------+----------+----------+
2 rows in set (0.01 sec)
А это сама программа написанная мной :) на php:

Код:
<html>
<body>
<h1>Результаты заведения нового пользователя</h1>

<?php
include("global.php");

//проверка на пустые, не заполненнные поля веб формы
// почему то всё время говорит, что не заполнено?

if (!$alias || !$password)
{	
	echo "Вы не ввели все данные в поля.<br> Введите пожалуйста все данные!<br>";
exit;
}
$alias = addslashes($alias);
$password = addslashes($password);

@ $db = mysql_pconnect($db_host,$db_user, $db_pass);
if (!$db)
{
	echo "Не могу подключиться к базе. <br>Проверьте правильность логина, пароля и хоста!"; 
exit;
}
mysql_select_db("mail");

//выбираем последний пользовательский id и увеличиваем его на еденицу

$lastid = "select max(id) from aliases";
$id = mysql_query($lastid);
if (!$id)
{
	echo "Не могу сделать выборку. Ошибка №ID";
exit;
}
$newid = $id + 1

//заведение нового пользователя в базе с id больше последнего в базе на 1

$newuser = "insert into aliases values('"$newid"','6','"$alias"@postfix.domain.ru','/var/spool/vmail/postfix.domain.ru_"$alias"','"$password"','"$alias"')";
$result = mysql_query($newuser);
if ($result)
{
		echo "новый пользователь с именем $alias успешно заведён";
}
{
	else	
		echo "Не могу создать нового пользователя. Ошибка №newuser.";
exit;
}
mysql_free_result($result);
mysql_close($db);
?>
</body>
</html>
"Parse error: parse error, unexpected T_VARIABLE in /usr/home/www/htdocs/admin/postfix.php on line 40"

Что я делаю не правильно?
Если можете, подскажите!
Зарание спасибо!
 

Nirva

Dmitry Polyakov
тебе же ангельским по белому сказали, что ты не так делаешь.
строка 36 "$newid = $id + 1" ты забыл точку с запятой в конце
 

Finch

Guest
Ага... фиг... поставил я её... всё равно говорит:
Код:
Parse error: parse error, unexpected T_VAR in /usr/home/www/htdocs/admin/postfix.php on line 40
А сороковая строка это
Код:
$newuser = "insert into aliases values('"$newid"','6','"$alias"@postfix.domain.ru','/var/spool/vmail/postfix.domain.ru_"$alias"','"$password"','"$alias"')";
Т.е. она должна выглядить так:
Код:
insert into aliases values(1602,6,'[email protected]','/var/spool/vmail/postfix.mgus.ru_newusername/','password','newusername');
а что тут не так?
Чую тут ошибки ещё есть...
 

Фанат

oncle terrible
Команда форума
если чуешь - надо все ошибки вывести на экран и посмотреть.
как это сделать - написано тут: PHP FAQ: Ничего не работает! Что делать???

-~{}~ 23.06.05 11:06:

PHP:
<html>
<body>
<h1>Результаты заведения нового пользователя</h1>
<?php
include("global.php");
if (!$alias || !$password) {	
  die("Вы не ввели все данные в поля.<br> Введите пожалуйста все данные!<br>");
}
$alias = addslashes($alias);
$password = addslashes($password);

@ $db = mysql_pconnect($db_host,$db_user, $db_pass);
if (!$db) {
  die("Не могу подключиться к базе. <br>Проверьте правильность логина, пароля и хоста!"); 
}
mysql_select_db("mail");
$lastid = "select max(id) from aliases";
$id = mysql_query($lastid);
if (!$id) {
  die("Не могу сделать выборку. Ошибка №ID");
}
$newid = $id + 1
$newuser = "insert into aliases values('"$newid"','6','"$alias"@postfix.domain.ru','/var/spool/vmail/postfix.domain.ru_"$alias"','"$password"','"$alias"')";
$result = mysql_query($newuser);
if ($result)  {
  echo "новый пользователь с именем $alias успешно заведён";
} else {
  die("Не могу создать нового пользователя. Ошибка №newuser.");
}
mysql_free_result($result);
mysql_close($db);
?>
</body>
</html>
-~{}~ 23.06.05 11:08:

подредактировал, чтобы читать было легче.
исправил путаницу сфигурной скобкой перед echo "Не могу создать нового пользователя. Ошибка №newuser.";

-~{}~ 23.06.05 11:10:

вот, теперь сразу видны косяки.
три вопроса:
1. известно ли тебе о специальном модификаторе auto_increment, который заставляет поле id автоматически увеличиваться на единицу?
2. Вопрос. ЧТО возвращает функция mysql_query?
3. Зачем ты в запросе рисуешь двойные кавычки вокруг имени переменной?
 

Finch

Guest
В php.ini стоит
display_errors = On
error_reporting = E_ALL & ~E_NOTICE
log_errors = On

А в начало программы добавил:
ini_set('dispaly_errors','On');
error_reporting(E_ALL & ~E_NOTICE);

Всё равно пишет тоже самое, только номер строки изменился:
Parse error: parse error, unexpected T_VAR in /usr/home/www/htdocs/admin/postfix.php on line 42

И в логах тоже самое.
 

Фанат

oncle terrible
Команда форума
ну так исправляй свою парсе еррор.
наверяка у тебя их море. одну я нашёл - ищи остальные.
 

Finch

Guest
вот, теперь сразу видны косяки.
три вопроса:
1. известно ли тебе о специальном модификаторе auto_increment, который заставляет поле id автоматически увеличиваться на единицу?
2. Вопрос. ЧТО возвращает функция mysql_query?
3. Зачем ты в запросе рисуешь двойные кавычки вокруг имени переменной?
1. Нет про auto_increment ничего к сожалению не знаю, т.к. полный профан :( в php.

2. Не знаю, т.к. не могу проверить, потому что код с sql'ем не правильный.

3. Просто нашёл какой то скрипт, работающий с базой данных, вот и делаю так же. Я не знаю как правильно....


Исправил как ты написал, всё равно ругаеться на строку с insert'ом.

Мужики, спасайте! Я полный ноль в php. Помогите пожалуйста!

Зарание спасибо!!!
 

Фанат

oncle terrible
Команда форума
auto_increment - это не пхп. это mysql
что возвращает mysql_query, можно посмотреть в документации к этой функции.
правильный скрипт для работы с базой данных есть здесь: http://detail.phpclub.net/article/phpintro
делай с него.
 
Сверху