Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавить записи в таблицу, передаём значение переменной $action 
:(
    Опции темы
Enya
  Дата 28.1.2006, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



И так есть БД authors.
Этот фаил делаеь вывод списка авторов из таблицы (authorslist.php):
Код

<?php
    include "config.php";
    
    $ath = mysql_query("SELECT * FROM authors");
    
    if(!$ath) //echo mysql_result($ath,0,'name');
     exit(mysql_error());
    echo "<table border=1>";
        while(list($id_author, $name, $password) = mysql_fetch_row($ath))
        {
            echo "<tr>
                    <td>$id_author</td>
                    <td>$name</td>
                    <td>$password</td>
                </tr>";
        }
        echo "</table>";
?>
Он работает.
Вот с помощью этого файла хочу добавить записи в таблицу authors.
Просто 2 поля для ввода имени и пароля + кнопочка (add) (addauthors.php):
Код

<?php
    include "config.php";
    $action = $HTTP_POST_VARS["action"];
    if($action!=""){
    $query = "INSERT INTO authors VALUES
                (0, '$name', '$pass');";
    if(mysql_query($query)){
        print "<html><head>\n";
        print "<meta http-equiv='Refresh' content='0; url=authorslist.php'>\n";
        print "</head></html>\n";
        exit();
    }else{
        echo("<p><h3>Ошибка при добавлении</h3></p>");
        echo("<p>$query</p>");
        exit();
    }
    }
    //********* FORM *****************//    
?>
<HTML>
<HEAD>
    <TITLE>AddNewMember</TITLE>
<BODY>
    <form action=addauthors.php method=post>
        <input type=text name=name size=25 value='<? echo $name; ?>'><br>
        <input type=password name=pass size=25 value='<? echo $pass; ?>'><br>
        <input type=submit value=ADD>
    </form>
</BODY>
</HEAD>
</HTML>

Мне не понятно как работать с переменной $action = $HTTP_POST_VARS["action"]; ???
Потомучто без неё, просто выполняеться запрос добавления пустых записей и вывод списка получаеться вот такой:
Цитата

1  author01  testpass
2  author02  testpass02
3 
4 



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
dipsy
Дата 28.1.2006, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 13.1.2005
Где: Нижний Новгород

Репутация: нет
Всего: нет



Код

  $action = $HTTP_POST_VARS["action"];
    if($action!=""){
    $query = "INSERT INTO authors VALUES
                (0, '$name', '$pass');";


У тебя переменные $name и $pass как определяются?
PM MAIL WWW   Вверх
Enya
Дата 28.1.2006, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



dipsy, наверное никак smile
А как их определить?


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
sugee
Дата 28.1.2006, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: 1
Всего: 4



А откуда у тебя взялась переменная $HTTP_POST_VARS['action']?
В твоей форме нет поля с таким именем.
Чтобы оно было надо написать так
Код

<input type=submit name=action value=ADD>

А когда форма приходит ты проверяешь что она действительно была отправлена
Код

if (isset($HTTP_POST_VARS['action'])&&$HTTP_POST_VARS['action'] == 'ADD')

Но если ты хочешь избежать добавления пустых записей то проверять нужно пришли ли данные из полей name и pass
Код

if (isset($_POST['name'])&&$_POST['name'] !== '')
// и также проверяешь pass

Добавлено @ 23:01
И еще поставь в php.ini register_globals=Off и юзай массив $_POST вместо $HTTP_POST_VARS.
PM MAIL   Вверх
sugee
Дата 28.1.2006, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: 1
Всего: 4



Цитата(Enya @ 28.1.2006, 22:35 Найти цитируемый пост)

<input type=text name=name size=25 value='<? echo $name; ?>'><br>
<input type=password name=pass size=25 value='<? echo $pass; ?>'>
<br>


Если у тебя имя и пароль вводятся в поля автоматически, значит я так понимаю у тебя в форме есть галочка типа "запомнить меня" . В этом случае значения $name и $pass берутся из кук.
Но поскольку у тебя такой галочки нет то вот это
Код

value='<? echo $name; ?>'
value='<? echo $pass; ?>'
нужно убрать.
PM MAIL   Вверх
Enya
Дата 29.1.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



sugee
Код

value='<? echo $name; ?>'
value='<? echo $pass; ?>'
Убрала.
Переделала фаил добавления авторов вот так:
Код

<?php
    include "config.php";
    $action = $HTTP_POST_VARS["action"];
//вот здесь если $action пуста, то выводим форму
    if(!isset($action))
    {
    ?>
<HTML>
<HEAD>
    <TITLE>AddNewMember</TITLE>
<BODY>
    <form action=addauthors.php method=post>
        <input type=text name=name size=25><br>
        <input type=password name=pass size=25><br>
        <input type=submit name=action value=ADD>
    </form>
</BODY>
</HEAD>
</HTML>
<?php
    }else
    {
    $query = "INSERT INTO authors VALUES
                (0, '$name', '$pass');";
    if(mysql_query($query)){
        print "<html><head>\n";
        print "<meta http-equiv='Refresh' content='0; url=authorslist.php'>\n";
        print "</head></html>\n";
        exit();
    }else{
        echo("<p><h3>Îøèáêà ïðè äîáàâëåíèè!</h3></p>");
        echo("<p>$query</p>");
        exit();
    }
    }    
?>
И всё равно не работает. smile
Цитата("Выдаёт вот такую ошибку")
Notice: Undefined index: action in r:\home\ldo.com\www\addauthors.php on line 3




--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Enya
Дата 29.1.2006, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Нет ну я его уломаю. Вот не много перекроила скрипт. Но всё равно не работает. Чувствую что близка к решению вопроса.
Код

<?php
    include "config.php";
    
    $name = $HTTP_POST_VARS['name'];
    $pass = $HTTP_POST_VARS['pass'];
    
    if ($name!="" && $pass!=""){
    $query = "INSERT INTO authors VALUES(0, '$name', '$pass');";
    if(!mysql_query($query)){
        echo("<p><h3>Îøèáêà ïðè äîáàâëåíèè!</h3></p>");
        echo("<p>$query</p>");
        exit();
        }
    }
    else
    {
print("<HTML>\n");
print("<HEAD>\n");
print("<TITLE>AddNewMember</TITLE>\n");
print("<BODY>\n");
    print("<form " .
        "action=\"{$_SERVER['PHP_SELF']}\" " .
        "method=\"post\">\n");
    print("<input type=\"text\" name=\"name\" value=\"{$HTTP_POST_VARS['name']}\" size=\"25\">\n");
    print("<input type=\"password\" name=\"pass\" value=\"{$HTTP_POST_VARS['pass']}\" size=\"25>\" \n");
    print("<input type=\"submit\" value=\"ADD\">\n");
    print("</form>\n");
print("</BODY>\n");
print("</HEAD>\n");
print("</HTML>\n");
}    
?>
Цитата("А вот что видим в результате")


Notice: Undefined index: name in r:\home\ldo.com\www\addauthors.php on line 4

Notice: Undefined index: pass in r:\home\ldo.com\www\addauthors.php on line 5

Notice: Undefined index: name in r:\home\ldo.com\www\addauthors.php on line 29

Notice: Undefined index: pass in r:\home\ldo.com\www\addauthors.php on line 30




--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
o.s.a.
Дата 29.1.2006, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 2
Всего: 15



Код

<?php
    include "config.php";

    $name = (isset($_POST['name']))?$_POST['name']:"";
    $pass = (isset($_POST['pass']))?$_POST['pass']:"";

    if ($name!="" && $pass!=""){
    echo "added";
    /*
    $query = "INSERT INTO authors VALUES(0, '$name', '$pass');";
    if(!mysql_query($query)){
        echo("<p><h3>I^?e`a'e^a` i"?e` a"i^a'a`a^e"a*i'e`e`!</h3></p>");
        echo("<p>$query</p>");
        exit();
        }
    */
    }
    else
    {
print("<HTML>\n");
print("<HEAD>\n");
print("<TITLE>AddNewMember</TITLE>\n");
print("<BODY>\n");
    print("<form " .
        "action=\"{$_SERVER['PHP_SELF']}\" " .
        "method=\"post\">\n");
    print("<input type=\"text\" name=\"name\" value=\"{$name}\" size=\"25\">\n");
    print("<input type=\"password\" name=\"pass\" value=\"{$pass}\" size=\"25>\" \n");
    print("<input type=\"submit\" value=\"ADD\">\n");
    print("</form>\n");
print("</BODY>\n");
print("</HEAD>\n");
print("</HTML>\n");
}
?>



--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
Enya
Дата 29.1.2006, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



o.s.a. а зачем коментить вот это?
Код

/*
    $query = "INSERT INTO authors VALUES(0, '$name', '$pass');";
    if(!mysql_query($query)){
        echo("<p><h3>I^?e`a'e^a` i"?e` a"i^a'a`a^e"a*i'e`e`!</h3></p>");
        echo("<p>$query</p>");
        exit();
        }
    */
Мне нужно добавть записи из формы в БД.


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
o.s.a.
Дата 29.1.2006, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 2
Всего: 15



Enya, просто у меня же нету твоей таблицы,
а чтобы проверить работу скрипта, я этот кусок закомментил smile


--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
Enya
Дата 29.1.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



o.s.a. можно вот этот кусок не много объяснить?
Код

$name = (isset($_POST['name']))?$_POST['name']:"";
    $pass = (isset($_POST['pass']))?$_POST['pass']:"";
    if ($name!="" && $pass!=""){

Конструкцию () ? () : () я понимаю.

И в чём отличие от моего кода?
Код

$name = $HTTP_POST_VARS['name'];
    $pass = $HTTP_POST_VARS['pass'];
    
    if ($name!="" && $pass!=""){


Если не сложно не много фраз. Всё таки начинающаяя програмисточка.


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
o.s.a.
Дата 29.1.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 2
Всего: 15



Код

$name = $HTTP_POST_VARS['name'];

Здесь ПХП ругается потому, что при первой загрузке не определен елемент массива $HTTP_POST_VARS с индексом name.
З.Ы. Вообще лучше использовать $_POST и $_GET вместо $HTTP_POST_VARS и $HTTP_GET_VARS.

Код

$name = (isset($_POST['name']))?$_POST['name']:"";

Здесь я проверяю существует ли переменная name, переданная постом,
если да, то $name = $_POST['name'];
иначе $name = "";


--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
Enya
Дата 30.1.2006, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



o.s.a., спасибо. Всё окей.


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0745 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.