Нет записей в базу данных!
---------------------------
Есть скрипт конфигурации:
<?
/* Print "Ïîäêëþ÷àåìñÿ ê áàçå äàííûõ ñåðâåðà"; */
$db_host = "localhost";
$db_user = "root";
$db_pasw = "";
$db_name = "regbase";
$connect = mysql_connect($db_host, $db_user, $db_pasw);
mysql_select_db($db_name);
if(!$connect) {
echo("Ñåðâåð ÁÄ íå äîñòóïåí");
exit();
}
else {
if(!mysql_select_db($db_name, $connect)) {
echo("Âûáðàííàÿ áàçà äàííûõ íå äîñòóïíà");
exit();
}
}
?>
-------------------
Есть вввод записи:
<?
include("config.php");
if(mysql_query("insert into main values('$name','$pasw');")) {
echo("Çàïèñü äîáàâëåíà - ÎÊ");
}
else {
echo("Îøèáêà ïðè äîáàâëåíèè çàïèñè");
}
print "<br><a href='../create/'><br> Ðåãèñòðàöèÿ ïîëüçîâàòåëåé </a>";
print "<br><a href='list.php'> Çàðåãåñòðèðîâàííûå ïîëüçîâàòåëè </a>";
mysql_close($connect);
?>
-----------
Есть вывод:
<?
print "<br><a href='../create/'> Ðåãèñòðàöèÿ ïîëüçîâàòåëåé </a>";
print "<br><a href='list.php'> Ñïèñîê ïîëüçîâàòåëåé: </a><br><br>";
include("config.php");
if ($res_query = mysql_query("select * from main;")) {
while ($res_array = mysql_fetch_array($res_query)) {
echo("Èìÿ: ".$res_array["name"]."<br>");
echo("Ïàð: ".$res_array["pasw"]."<br><br>");
}
}
else {
echo("Îøèáêà ïðè âûáîðêå äàííûõ, óñëîâèå - Íåò");
}
?>
Внизу рисунки phpmyadmin:
Попробуй сначала mysql_error, после запросов.
if(mysql_query("insert into main values('$name','$pasw');")) {
echo("Çàïèñü äîáàâëåíà - ÎÊ");
}
[/QUOTE]
Поинтересуйся, на всякий случай, синтаксисом INSERT'а:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...
or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name
SET col_name=expression, col_name=expression, ...
2. Ты сам это читал? У меня способностей по автосмене кодировок нету...
3. При записи в БД указывай поля в которые ты заносишь.
<?
error_reporting(E_ALL);
include("config.php");
if(mysql_query("insert into main values('$name','$pasw');")) {
echo("Запись добавлена - ОК");
}
и попытаться определиться с $name и $pasw, т.к. из приведённого кода совсем не очевидно, что они есть...
Notice: Undefined variable: name in c:\home\web\create\add.php on line 7
Notice: Undefined variable: pasw in c:\home\web\create\add.php on line 7
точку-с-запятой убрал и как при записи указать поле в которое заносишь.
Странно, но ранее код в таком виде работал и свою миссию выполнял.
Notice: Undefined variable: name in c:\home\web\create\add.php on line 7
Notice: Undefined variable: pasw in c:\home\web\create\add.php on line 7
точку-с-запятой убрал и как при записи указать поле в которое заносишь.
Странно, но ранее код в таком виде работал и свою миссию выполнял.[/QUOTE]
Вот и я о том же: $name и $pasw вполне может и не быть. Откуда они вообще беруться? Судя по всему - это приходит из браузера. Т.е. - пресловутый register_globals: они называются $_GET['name'] и $_GET['pasw'], либо $POST['name'] и $_POST['pasw']. Отсюда и ошибка.
Но, имена полей в SQL-запросе, всё же, указывать надо...
Но, имена полей в SQL-запросе, всё же, указывать надо...[/QUOTE]
Как?
В актионе формы указан php файл, в который значения передаются из
name формы, что не так?
Например есть форма:
<FORM ACTION="email.php" METHOD="POST"><BR>
Ваше имя:
<INPUT TYPE="text" NAME="name" SIZE="20" MAXLENGTH="30"><BR>
Ваш емал:
<INPUT TYPE="text" NAME="email" SIZE="20" MAXLENGTH="30"><BR>
Ваш выбор:
<SELECT NAME="preference">
<OPTION value = "1 место">
<OPTION value = "2 место">
<OPTION value = "3 место">
</SELECT>
<P>
<INPUT TYPE="submit" VALUE="Отправить в статистику!">
</FORM>
и сам email.php:
<body>
<html>
<?
/* Вывод данных пользователя из формы index.html */
PRINT "<CENTER>";
PRINT "Привет <b> $name </b>";
PRINT "<BR><BR>";
PRINT "Ваш выбор принят, вы голосовали за <b>$preference</b>";
PRINT "<br>Статистика выслана Вам на E-Mail: <b>$email</b>.<br>";
PRINT "</CENTER>";
include('send_Mail.php');
?>
</body>
</html>
Разве это не будет работать, если сюда включить необходимые вызовы соединения и добавления данных в базу MYSQL указав значения полей, например, name и emal, как значения name=$name name=$email из формы
- этим любая статья знакомства с PHP и козерует, что напрямую можно передавать значения формы и обрабатывать в .php файле.
- этим любая статья знакомства с PHP и козерует, что напрямую можно передавать значения формы и обрабатывать в .php файле.
Вот ты внимательно читаешь ответы на свои вопросы? Я же написал про register_globals. Посмотри, в каком состоянии он у тебя написан в php.ini. Отсюда и пляши. Тут же телепатов нет, чтобы прямо-таки знать содержимое твоего php.ini....
name формы, что не так?" уже слишком явно видно, что про register_globals ты имеешь довольно смутное представление... И, видимо, он находится-таки в положении OFF. Потому и не работают твои $name и $pasw. Просто укажи вместо них конкретные переменные хэшей $_GET или $_POST (взависимости от того, что у тебя передаёт форма) - и счасть не замедлит прийти.
если надо щас выложу, делов-то, а про эти рег_глобалс читал, они по умолчанию отключены, дабы не могли хакеры воспользоваться у незнающих програмистов, поэтому после установки ничего из этого не менял, так и есть отключены:
; You should do your best to write your scripts so that they do not require
; register_globals to be on; Using form variables as globals can easily lead
; to possible security problems, if the code is not very well thought of.
register_globals = Off
; You should do your best to write your scripts so that they do not require
; register_globals to be on; Using form variables as globals can easily lead
; to possible security problems, if the code is not very well thought of.
register_globals = Off[/QUOTE]
Ну, насчёт хакеров - это ты погорячился. А вот то, что отключены - это причина того, что в БД ничего не попадает, т.к. переменных $name и $pasw действительно не существует.
покури их часика по 4 в день и все вопросы такого плана отваляться сами собой
name формы, что не так?" уже слишком явно видно, что про register_globals ты имеешь довольно смутное представление... И, видимо, он находится-таки в положении OFF. Потому и не работают твои $name и $pasw. Просто укажи вместо них конкретные переменные хэшей $_GET или $_POST (взависимости от того, что у тебя передаёт форма) - и счасть не замедлит прийти.[/QUOTE]
Ну ты кудесник, угадал, но как пишут нельзя это делать ибо этим могут воспользоваться мальчиши-плахиши и поэтому по умолчанию при установке они выключены, и ещё раз повторю у меня этот скрипт работает на локальной машине и здесь ранее работал.
А так как ты просишь уже делал, а именно $_POST[name] $_POST[pasw]
сейчас у меня код выглядит так:
<?
error_reporting(E_ALL);
include("config.php");
$name = $_POST['name'];
$pasw = $_POST['pasw'];
$query = "insert into main values('$name','$pasw')";
$result = mysql_query($query);
if($result) { echo("Запись добавлена") }
else { echo("Ошибка при добавлении записи") }
mysql_close($connect);
?>
Это не я этов книшках так пишут, объясняя почему они по умолчанию отключены. как их не существует если они передаются из формы. Совсем запутали....
покури их часика по 4 в день и все вопросы такого плана отваляться сами собой[/QUOTE]
Вот в этих книшках и вычитаны все эти примеры для ознакомления.
Я их только стараюсь применить к своеё задачи....
Опять ты не внимательно книжку прочитал: не рекомендуется, как раз, использовать глобальные переменные - $name и $pasw в твоём случае - но использовать переменные из глобальных массивов $_GET, $_POST, $_COOKIE, $_FILES etc.
Вот представь себе, что у тебя включен register_globals и из формы приходит методом POST значение поля $name, а в action формы написан адрес script.php?name=vasya. Да ещё и в куках тоже какой-нибудь $name обнаружиться. Как PHP должен угадать, кого из них использовать в SQL-запросе INSERT INTO table SET fldName='$name'? Догадываюсь, что "кто последний - того и тапки". Т.е. те данные, которые придут методом POST. А как же с остальными? А так вот - они все в своих массивах.
Вот представь себе, что у тебя включен register_globals и из формы приходит методом POST значение поля $name, а в action формы написан адрес script.php?name=vasya. Да ещё и в куках тоже какой-нибудь $name обнаружиться. Как PHP должен угадать, кого из них использовать в SQL-запросе INSERT INTO table SET fldName='$name'? Догадываюсь, что "кто последний - того и тапки". Т.е. те данные, которые придут методом POST. А как же с остальными? А так вот - они все в своих массивах.[/QUOTE]
Как правильно для моего примера будет,
сейчас у меня так и всё ранво не работает:
$name = $_POST['$name'];
$pasw = $_POST['$pasw'];
$query = "insert into main values('$name','$pasw')";
$result = mysql_query($query);
if($result) {
echo("Запись добавлена");
}
и выдаёт ошибки только уже на другие строки:
Notice: Undefined index: $name in c:\home\web\create\add.php on line 7
Notice: Undefined index: $pasw in c:\home\web\create\add.php on line 8
Notice: Undefined index: $pasw in c:\home\web\create\add.php on line 8[/QUOTE]
Я даже уже заинтересовался: ты сколько лет на Земле-Матушке живёшь?
Есть в PHP такая замечательная функция - print_r()
Специально для тебя, в прямом эфире, передаю душераздирающую функцию prer():
echo "<pre>";
print_r($arr);
echo "</pre>";
}
Чертовски полезная штука! По аналогии можешь сделать для var_dump().
Объясняю:
1. Сделай на входе просто echo "insert into main values('$name','$pasw')";
2. Посмотри внимательно в результат этого echo.
3. Не валяй дурака и пиши лаконично и читабельно:
if (mysql_query($query)) {echo("Запись добавлена")};
4. Задумайся в пятнадцатый раз, отчего ты не можешь получить получить значения из браузера. Удостоверься, что ты их действительно не получаешь с помощью вышеуказанной prer($_REQUEST).
ЗЫ. Если мне что-то не изменяет, name - зарезервированное слово MySQL.
примеры из книг к своим проектам ...
может всё таки попробовать разобраться как они работают
потом нормально настроить сервер
и уже тогда перейти к созданию своих программ ???
Можете быть спокойны - глобальные в пиэйчпи.ини включил (On),
а о том, что пеперменные которые задаёт пользователь php считает глобальными в голову не прийдёт....
протестируй его, а уже потом задавай вопросы
echo "Работает";
mysql_connect(host,user,password) or die ("Cant connect".mysql_error());
?>
проверь таким образом