Страница 1 из 2
Новичок по мускулу
Добавлено: 2008-08-07 19:09:10
southtel
Код: Выделить всё
<form metod="post" action="<?php echo $PHP_SELF?>">
Имя: <input type="Text" name="name"><br>
Фамилия: <input type="Text" name="familia"><br>
<input type="Submit" name ="submit" value="Ввод информации">
</form>
<?php
if (submit) {
$date=mysql_connect("localhost", "root");
mysql_select_db("tablica1",$date);
$zapis = "INSERT INTO test1(id, name, familia) VALUES (10, 'name','familia')";
$result=mysql_query($zapis);
}
mysql_close($date);?>
Я только начал изучать, можно сказать моя первая прога. Мне требуется в базу tablica1 c таблицей test1 записать вводимое имя и фамилию в форме. Итог этой проги в том, что она пишет слова name и family вместо содержимого переменных. И приходится вручную дописывать ID. Как это решить? Помогите.
Re: Новичок по мускулу
Добавлено: 2008-08-07 20:09:28
opt1k
вот мой пример:
Код: Выделить всё
<?php
if ($_POST['name']=='')
{
?>
<form action="testmysql.php" method="POST">
Your name: <input type="text" name="name" />
Your age: <input type="text" name="age" />
<input type="submit">
</form>
<?php
STATIC $cnt = 1;
}
else
{
/* ???????????, ???????? ???? ?????? */
$link = mysql_connect("localhost", "root", "")
or die("Could not connect : " . mysql_error());
print "Connected successfully";
mysql_select_db("mysql") or die("Could not select database");
$dbnas="db";
/* ????????? SQL-?????? */
$query = "SELECT {$_POST['age']} FROM {$_POST['name']}" ;
$result = mysql_query($query) or die("Query failed : " . mysql_error());
/* ??????? ?????????? ? html */
print "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n";
}
print "\t</tr>\n";
}
print "</table>\n";
/* ??????????? ?????? ?? ?????????? */
mysql_free_result($result);
/* ????????? ?????????? */
mysql_close($link);
echo " {$cnt} ";
}
?>
Re: Новичок по мускулу
Добавлено: 2008-08-08 9:03:42
dikens3
Учиться нужно с простых вещей, например:
echo "Привет, Мир";
или
echo "МОЯ ПЕРЕМЕННАЯ??? Что же в ней после нажатия SUBMIT?";
..
т.д.
Как вариант поищи значение name тут (скопировал из верхнего поста): $_POST['name']
P.S. Если ты не знаешь что должно быть в той или иной переменной, и вообще, что называется переменной, то ЧТО ты пытаешься запихнуть в базу данных?
Re: Новичок по мускулу
Добавлено: 2008-08-08 12:25:43
zg
opt1k писал(а):<?php
STATIC $cnt = 1;
}
ээээ фигасе

что ты этим хотел сказать?
Re: Новичок по мускулу
Добавлено: 2008-08-08 12:53:49
dikens3
Выше смотри, там блок html. (ХЗ, наверное работает так.)
Re: Новичок по мускулу
Добавлено: 2008-08-08 13:18:54
XliN
Учиться нужно с простых вещей, например:
echo "Привет, Мир";
или
echo "МОЯ ПЕРЕМЕННАЯ??? Что же в ней после нажатия SUBMIT?";
..
т.д.
Это элементарно. Мне нужно с базой научиться работать.
Как вариант поищи значение name тут (скопировал из верхнего поста): $_POST['name']
Просто подскажите что я сделал не так. Далее сам разберусь. Где то что то не допонимаю.
P.S. Если ты не знаешь что должно быть в той или иной переменной, и вообще, что называется переменной, то ЧТО ты пытаешься запихнуть в базу данных?
К сожелению знаю что есть переменная. Просто програмив в Delphi там чуть по другому.
А в базу запихнуть надо имя и фамилию.
Re: Новичок по мускулу
Добавлено: 2008-08-08 13:51:54
hizel
правильные дядьки программисты давно используют парадигму MVC , в которой с базой данных работают не через SQL, а через ORM который предоставляет
красивый врапер между SQL и программистом, в результате во первых программисту не надо знать(хотя никто не запрещает) еще один язык и во вторых
достигается независимость собственно от конкретной СУБД, обычно ORM может работать сразу с PostgreSQL, Mysql, Oracle, sqlite
Re: Новичок по мускулу
Добавлено: 2008-08-08 17:29:19
opt1k
zg писал(а):opt1k писал(а):<?php
STATIC $cnt = 1;
}
ээээ фигасе

что ты этим хотел сказать?
это был пример на которм я когда разбирался с php и клиентом мускула. Я сейчас уже плохо помню для чего это надо было, но вобщем то походу для запоминания чего-то

Re: Новичок по мускулу
Добавлено: 2008-08-08 19:15:59
zg
opt1k писал(а):это был пример на которм я когда разбирался с php и клиентом мускула. Я сейчас уже плохо помню для чего это надо было, но вобщем то походу для запоминания чего-то

static используется только в классах или функциях для объявления статичных переменных или функций, то есть с постоянным адресом. Переменные и функции, которые объявлены вне классов и функций и так имеют постоянный адрес, поэтому смысла его использовать просто так нет.
Ну а по поводу MySQL, читай
http://ru.php.net/manual/ru/function.my ... ert-id.php и
http://ru.php.net/manual/ru/function.mysql-query.php
Re: Новичок по мускулу
Добавлено: 2008-08-09 19:31:28
a.barminov
southtel писал(а):Код: Выделить всё
<form metod="post" action="<?php echo $PHP_SELF?>">
Имя: <input type="Text" name="name"><br>
Фамилия: <input type="Text" name="familia"><br>
<input type="Submit" name ="submit" value="Ввод информации">
</form>
<?php
if (submit) {
$date=mysql_connect("localhost", "root");
mysql_select_db("tablica1",$date);
$zapis = "INSERT INTO test1(id, name, familia) VALUES (10, 'name','familia')";
$result=mysql_query($zapis);
}
mysql_close($date);?>
Я только начал изучать, можно сказать моя первая прога. Мне требуется в базу tablica1 c таблицей test1 записать вводимое имя и фамилию в форме. Итог этой проги в том, что она пишет слова name и family вместо содержимого переменных. И приходится вручную дописывать ID. Как это решить? Помогите.
Нужно вместо
Код: Выделить всё
$zapis = "INSERT INTO test1(id, name, familia) VALUES (10, 'name','familia')";
написать
Код: Выделить всё
$zapis = "INSERT INTO test1(`id`, `name`, `familia`) VALUES ('10', '$name','$familia')";
Но, перед этим, определить их, если register_globals = Off,
Код: Выделить всё
$name=$_POST['name'];
$familia=$_POST['familia'];
У тебя ещё ошибка тут:
<form metod="post" action="<?php echo $PHP_SELF?>">
metod нужно поменять на
method
Ещё, action="<?php echo $PHP_SELF?>" можно не писать, т.к. если его нет, он ему же и отправит.
Ещё,
заменить на
Код: Выделить всё
if (isset($_POST['submit'])&&!empty($_POST['submit'])) {
Ещё, вместо $result=mysql_query($zapis); можно писать просто mysql_query($zapis);
так как ты нигде $result потом не используешь.
На период обучения советую везде после mysql_coonect(), mysql_query(), добавлять or die(mysql_error())!
То есть, к примеру, твой запрос к БД из php будет выглядеть так: mysql_query($zapis) or die(mysql_error());
По поводу автоматической подстановки ID, в БД нужно полю id присвоить дополнительную опцию autoincrement, и в запросах ID не писать, то есть в твоём запросе будет не
Код: Выделить всё
$zapis = "INSERT INTO test1(`id`, `name`, `familia`) VALUES ('10', '$name','$familia')";
а
Код: Выделить всё
$zapis = "INSERT INTO test1 (`name`, `familia`) VALUES ('$name','$familia')";
или можно ещё так:
Код: Выделить всё
$zapis = "INSERT INTO test1 (`id`, `name`, `familia`) VALUES (NULL ,'$name','$familia')";
Ещё, желательно писать <?php ?> до вывода html.
В итоге твой код будет таким:
Код: Выделить всё
<?php
if (isset($_POST['submit'])&&!empty($_POST['submit'])) {
$name=$_POST['name']; //здесь так же обычно обрабатываются переменные.
$familia=$_POST['familia'];
$date=mysql_connect("localhost", "root") or die(mysql_error());
mysql_select_db("tablica1",$date) or die(mysql_error());
$zapis = "INSERT INTO test1 (`id`, `name`, `familia`) VALUES ('10', '$name','$familia')";
$result=mysql_query($zapis) or die(mysql_error());
mysql_close($date);
}
?>
<form method="POST">
Имя: <input type="text" name="name"><br>
Фамилия: <input type="text" name="familia"><br>
<input type="submit" name ="submit" value="Ввод информации">
</form>
Re: Новичок по мускулу
Добавлено: 2008-08-09 20:36:53
opt1k
)))
тот код который я привёл впсоледствии стал интерфейсом к БД. Это была моя первая попытка написать что то на пхп... Честно я даже не помню рабочий о или нет

но понять как передавать данные из форм в пхп на примере этого скрипта очень легко.
Re: Новичок по мускулу
Добавлено: 2008-08-09 21:06:42
zg
a.barminov писал(а):Но, перед этим, определить их, если magic_quotes_gpc = Off, Код:$name=$_POST['name'];$familia=$_POST['familia'];
эээ фигасе

никогда бы не подумал, что кавычки как-то влияют на установку глобальных переменных.. может register_globals?
a.barminov писал(а):На период обучения советую везде после mysql_coonect(), mysql_query(), добавлять or die(mysql_error())
лучше юзай функцию my_query()
Код: Выделить всё
<?
/**
* Функция выполняет MySQL-запрос, в случае неудачи выводит ошибку
*
* @param string $sql
* @return res
* @author zg
*/
function my_query ( $sql )
{
//++$GLOBALS['queries'];
if ( $res = mysql_query($sql) ) return $res;
while ( ob_get_level() ) ob_get_clean();
$debug_array = debug_backtrace();
if ( isset( $debug_array[ 0 ] ) )
{
$file = $debug_array[ 0 ][ 'file' ];
$line = $debug_array[ 0 ][ 'line' ];
}
else
{
$file = 'unknown';
$line = 'unknown';
}
?>
<H2>MySQL query error</H2>
<H4>Query</H4>
<CODE><PRE style="border: 1px #ddd solid; background-color: #eee; padding: 20px">
<?=$sql?>
</PRE>
File: <?=$file?><BR />
Line: <?=$line?>
</CODE>
</P>
<HR />
<H4>MySQL response</H4>
<P>#<?=mysql_errno()?>: <?= mysql_errno() == 1064 ? preg_replace('/\'(.*)\'/', '<CODE><PRE style="border: 1px #ddd solid; background-color: #eee; padding: 10px">\\1</PRE></CODE>', mysql_error()) : mysql_error()?></P>
<?
exit(2);
}
?>
Re: Новичок по мускулу
Добавлено: 2008-08-09 21:09:22
a.barminov
zg писал(а):a.barminov писал(а):Но, перед этим, определить их, если magic_quotes_gpc = Off, Код:$name=$_POST['name'];$familia=$_POST['familia'];
эээ фигасе

никогда бы не подумал, что кавычки как-то влияют на установку глобальных переменных.. может register_globals?
Да, вы правы, перепутал.
Re: Новичок по мускулу
Добавлено: 2008-08-09 21:15:08
zg
a.barminov писал(а):zg писал(а):a.barminov писал(а):Но, перед этим, определить их, если magic_quotes_gpc = Off, Код:$name=$_POST['name'];$familia=$_POST['familia'];
эээ фигасе

никогда бы не подумал, что кавычки как-то влияют на установку глобальных переменных.. может register_globals?
Да, вы правы, перепутал.
хочу напомнить, что с шестой версии пхп, этой директивы больше не будет, а с версии PHP 4.2.0, она по-умолчанию выключена, поэтому переменные нужно объявлять всегда, незавсимо от register_globals
Re: Новичок по мускулу
Добавлено: 2008-08-12 11:52:14
XliN
Все равно не работает (( Вроде все верно. А нет такой штуки как в Делфи, трассировки. Нажимаешь F7 и видно куда прога идет строчка за строчкой.
Вот код
Код: Выделить всё
<php
if (isset($_POST['submit'])&&!empty($_POST['submit'])) {
#if (submit) {
$name=$_post['name'];
$familia=$_post['familia'];
$date=mysql_connect("new","root") or die (mysql_error());
mysql_select_db("new",$date);
$zapros="INSERT INTO tablica1('name','familia') VALUES ('$name','$familia');
mysql_query($zapros) or die mysql_error();
mysql_close($date);
}
?>
#<form method="POST" action="<?php echo $PHP_SELF?>">
<form method="POST">
NAME: <input type="text" name="name"><br>
LAST NAME: <input type="text" name="familia"><br>
<input type="submit" name ="submit" value="Ввод информации">
</form>
Код: Выделить всё
[root@saikov html]# mysql -u root -p new
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1108
Server version: 5.0.45-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> select * from tablica1;
Empty set (0.00 sec)
mysql>
Re: Новичок по мускулу
Добавлено: 2008-08-12 12:05:52
a.barminov
XliN писал(а):Все равно не работает (( Вроде все верно. А нет такой штуки как в Делфи, трассировки. Нажимаешь F7 и видно куда прога идет строчка за строчкой.
Вот код
Код: Выделить всё
<php
if (isset($_POST['submit'])&&!empty($_POST['submit'])) {
#if (submit) {
$name=$_post['name'];
$familia=$_post['familia'];
$date=mysql_connect("new","root") or die (mysql_error());
mysql_select_db("new",$date);
$zapros="INSERT INTO tablica1('name','familia') VALUES ('$name','$familia');
mysql_query($zapros) or die mysql_error();
mysql_close($date);
}
?>
#<form method="POST" action="<?php echo $PHP_SELF?>">
<form method="POST">
NAME: <input type="text" name="name"><br>
LAST NAME: <input type="text" name="familia"><br>
<input type="submit" name ="submit" value="Ввод информации">
</form>
Код: Выделить всё
[root@saikov html]# mysql -u root -p new
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1108
Server version: 5.0.45-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> select * from tablica1;
Empty set (0.00 sec)
mysql>
В html комментарии ставятся <!-- и закрываются --> у тебя сейчас двойная форма. Исправь. Какие ошибки пишет?
Re: Новичок по мускулу
Добавлено: 2008-08-12 12:13:50
XliN
В html комментарии ставятся <!-- и закрываются --> у тебя сейчас двойная форма. Исправь. Какие ошибки пишет?
Я эту строчку удалил совсем. Теперь при нажатии на кномку ничего не происходит. Как будто там пусто. Ошибки не пишет. Я работаю через shell
Re: Новичок по мускулу
Добавлено: 2008-08-12 12:24:51
a.barminov
XliN писал(а):В html комментарии ставятся <!-- и закрываются --> у тебя сейчас двойная форма. Исправь. Какие ошибки пишет?
Я эту строчку удалил совсем. Теперь при нажатии на кномку ничего не происходит. Как будто там пусто. Ошибки не пишет. Я работаю через shell
А как ты через шелл запускаешь форму?
Re: Новичок по мускулу
Добавлено: 2008-08-12 12:32:11
XliN
a.barminov писал(а):XliN писал(а):В html комментарии ставятся <!-- и закрываются --> у тебя сейчас двойная форма. Исправь. Какие ошибки пишет?
Я эту строчку удалил совсем. Теперь при нажатии на кномку ничего не происходит. Как будто там пусто. Ошибки не пишет. Я работаю через shell
А как ты через шелл запускаешь форму?
да не через шелл ))) Форму я смотрю в браузере. А на БД и серваке (апаче) я сижу через шелл. Может из-за этого и не видно ошибок.
Re: Новичок по мускулу
Добавлено: 2008-08-12 12:39:32
a.barminov
XliN писал(а):a.barminov писал(а):XliN писал(а):В html комментарии ставятся <!-- и закрываются --> у тебя сейчас двойная форма. Исправь. Какие ошибки пишет?
Я эту строчку удалил совсем. Теперь при нажатии на кномку ничего не происходит. Как будто там пусто. Ошибки не пишет. Я работаю через shell
А как ты через шелл запускаешь форму?
да не через шелл ))) Форму я смотрю в браузере. А на БД и серваке (апаче) я сижу через шелл. Может из-за этого и не видно ошибок.
Нет, это ни при чем. Напиши в начале скрипта сразу после <?
Стоп.
Что это -- <php ? должно быть <?php !!!
Re: Новичок по мускулу
Добавлено: 2008-08-12 12:40:06
XliN
a.barminov писал(а):XliN писал(а):a.barminov писал(а):XliN писал(а):В html комментарии ставятся <!-- и закрываются --> у тебя сейчас двойная форма. Исправь. Какие ошибки пишет?
Я эту строчку удалил совсем. Теперь при нажатии на кномку ничего не происходит. Как будто там пусто. Ошибки не пишет. Я работаю через shell
А как ты через шелл запускаешь форму?
да не через шелл ))) Форму я смотрю в браузере. А на БД и серваке (апаче) я сижу через шелл. Может из-за этого и не видно ошибок.
Нет, это ни при чем. Напиши в начале скрипта сразу после <? error_reporting(E_ALL);
может в аську?
Re: Новичок по мускулу
Добавлено: 2008-08-12 12:41:54
XliN
вот код
Код: Выделить всё
<php
error_reporting(E_ALL);
if (isset($_POST['submit'])&&!empty($_POST['submit'])) {
$name=$_post['name'];
$familia=$_post['familia'];
$date=mysql_connect("new","root") or die (mysql_error());
mysql_select_db("new",$date);
$zapros="INSERT INTO tablica1('name','familia') VALUES ('$name','$familia');
mysql_query($zapros) or die mysql_error();
mysql_close($date);
}
?>
<form method="POST">
NAME: <input type="text" name="name"><br>
LAST NAME: <input type="text" name="familia"><br>
<input type="submit" name ="submit" value="Ввод информации">
</form>
кнопка как будто без события
Код: Выделить всё
mysql> select * from tablica1;
+------------------+--------------+
| name | familia |
+------------------+--------------+
| Валентин | Сайков |
+------------------+--------------+
1 row in set (0.00 sec)
Re: Новичок по мускулу
Добавлено: 2008-08-12 12:46:14
a.barminov
стучись. Исправь сначала <php на <?php !!!
Re: Новичок по мускулу
Добавлено: 2008-08-12 12:54:36
XliN
a.barminov писал(а):стучись. Исправь сначала <php на <?php !!!
аська выключина (((
Re: Новичок по мускулу
Добавлено: 2008-08-12 15:57:53
zg
XliN писал(а):Все равно не работает (( Вроде все верно. А нет такой штуки как в Делфи, трассировки. Нажимаешь F7 и видно куда прога идет строчка за строчкой.
есть и много чего ещё есть. Юзай зенд студию, она всё может (только пятую).