Показать полную графическую версию : Проблема с PHP(не передаются переменные из формы в PHP- скрипт)
Kirander
25-07-2009, 13:29
Подскажите пож-та в чем проблема:
Поставил себе Апач 2.2, PHP5, MySql итд и столкнулся с такой проблемой: форма, находящаяся в HTML- файле не передает значения переменных в пхп скрипт, находящийся в отдельном файле. Приведу пример на основе исходника калькулятора, выложенного в этой теме (http://forum.oszone.net/thread-144402.html) . Так вот результатом сего у меня выдает:
"Первое число = Второе число = Действие = Результат:"
То есть ни одна переменная не была проинициализированна. Пробовал создавать форму, в которой бы только создавалась и инициализировалась бы переменная и передавалась бы в пхп скрипт, который выводил ее на экран - как результат - чистый экран.. Сразу скажу что сменил несколько сборок и php и апача - результат один и тот же...
В той теме куча разных скриптов - неизвестно, что вы используете.
Попробуйте выполнить такой скрипт (неважно, как вы его назовёте):
<form action="?kyu=10" method="post">
<input type="text" name="nya" />
<input type="submit" value="Отправить" />
</form>
<?php
echo "Результат работы скрипта: <br />";
echo "Переменная <b>nya</b> = " . $_POST['nya'] . "<br />Переменная <b>kyu</b> = " . $_GET['kyu'] . "<br />";
?>
Kirander
25-07-2009, 21:04
Результат работы скрипта:
Переменная nya = 322
Переменная kyu =
EGORR_TOO
25-07-2009, 21:06
Лучше передавать не POST, а GET. Сразу видно что передается. Потом на POST снова поменяешь. Это кстати...
Если не предаются переменные - это в 95% случаев косяк с путями.
Смотри errorlog Апача.
Установи HttpFox.
Надеюсь в приведенной цитате все только для простоты: и кирилица и неверный формат строки...
Kirander
26-07-2009, 00:26
что то я не вьехал:) ну вот допустим скрипт проверки соединения с мускулем:
<?php
$link = mysql_connect("localhost", "root", "pass") or die("Не могу подключиться");
print ("Соединение выполнено");
mysql_close($link);
?>
результат - пустая страница, хотя по идее должен вывеси 1 из двух вариантов...
EGORR_TOO
26-07-2009, 00:44
А что ты здесь проверяешь?
Функция mysql_connect() возвращает указатель на соединение с скульским сервантом, если таковое удалось, либо false, если возникла ошибка.
Правильней писать
$link = mysql_connect("localhost", "root", "pass") or die("Не могу подключиться! И вот почему:".mysql_error());
if(!$link) echo "Какая-то фигня с соединением...";
echo "Всё молотит как надо!";
И не закрывай соединение прежде, чем ты обратишься к базе данных с запросом.
Kirander
26-07-2009, 01:01
все- проблему решил был небольшой конфликт прог, вот и выдавало сбой.. всем спасибо)
EGORR_TOO
26-07-2009, 18:47
EGORR_TOO, чушь написали »
Почему? Высказывайтесь яснее.
EGORR_TOO, если mysql_connect вернет false, то сработает die. Незачем потом проверять if(!$link)
EGORR_TOO
26-07-2009, 23:13
Согласен. Я хотел применение mysql_error() посоветовать...
Строка if(!$link) echo "Какая-то фигня с соединением...";
действительно лишняя потому как die завершит все это безобразие...
Всем привет. у меня возникла проблема с передачей данных из формы в переменные, а затем из переменных в базу данных. если форме указать метод get то видно что данные заносятся в переменные, но в базе ничего не происходит. Если ф переменную записать данные ручками (например: $N_POLL="какойнить бред") то запись запишется в базу как положено. В чем может быть дело???? код прилагаю.
<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("golosovalka",$db);
if ($submit) {
// Если такого нет то добавить если есть то редактировать
if ($K_POLL) {
$sql = "UPDATE b_poll SET N_POLL='$N_POLL',TM_BEGIN='$TM_BEGIN',F_LOGGING='$F_LOGGING',TM_END='$TM_END',F_ENG''$F_ENG',F_MULTI ''$F_MULTI') WHERE K_POLL=$K_POLL";
} else {
$sql = "INSERT INTO b_poll (N_POLL,TM_BEGIN,F_LOGGING,TM_END,F_ENG,F_MULTI) VALUES ('$N_POLL','$TM_BEGIN','$F_LOGGING','$TM_END','$F_ENG','$F_MULTI')";
}
// применить запрос к базе
$result = mysql_query($sql);
echo "Запись изменена";
} elseif ($delete) {
// Удаление записи
$sql = "DELETE FROM b_poll WHERE K_POLL=$K_POLL";
$result = mysql_query($sql);
echo "$sql Запись удалена";
} else {
// Если мы не нажимали кнопку
if (!$K_POLL) {
// Вывести список
$result = mysql_query("SELECT * FROM b_poll",$db);
?>
<div style="overflow:scroll; height: 200px; border: 1px solid #000000"><table><tr><td>
<?php
while ($myrow = mysql_fetch_array($result)) {
printf("<a href=\"%s?K_POLL=%s\">%s %s</a> \n", $PHP_SELF, $myrow["K_POLL"], $myrow["N_POLL"], $myrow["TM_BEGIN"]);
?>
</td><td>
<?php
printf("<a href=\"%s?K_POLL=%s&delete=yes\">(DELETE)</a><br>", $PHP_SELF, $myrow["K_POLL"]);
?>
</td></tr><tr><td>
<?php
}
?>
</td></tr></table></div>
<?php
}
?>
<P>
<INPUT TYPE="button" VALUE="Добавить запись" ONCLICK="<?php echo $PHP_SELF?>">
</P>
<form method="post" action="<?php echo $PHP_SELF?>">
<?php
if ($K_POLL)
{
// editing so select a record
$sql = "SELECT * FROM b_poll WHERE K_POLL=$K_POLL";
$result = mysql_query($sql);
$myrow = mysql_fetch_array($result);
$K_POLL = $myrow["K_POLL"];
$N_POLL = $myrow["N_POLL"];
$F_LOGGING = $myrow["F_LOGGING"];
$F_MULTI = $myrow["F_MULTI"];
$F_ENG = $myrow["F_ENG"];
$TM_BEGIN = $myrow["TM_BEGIN"];
$TM_END = $myrow["TM_END"];
// Записать данные записи для редактирования
?>
<input type=hidden name="K_POLL" value="<?php echo $K_POLL ?>">
<?php
}
?>
Введите название голосования: <input type="Text" name="N_POLL"><br/>
Логировать? <INPUT TYPE="checkbox" NAME="F_LOGGING"><br/>
Возможно несколько ответов? <INPUT TYPE="checkbox" NAME="F_MULTI"><br/>
Англоязычное голосование? <INPUT TYPE="checkbox" NAME="F_ENG"><br/>
Время начала: <INPUT TYPE="text" NAME="TM_BEGIN" value="" > Время окончания: <INPUT TYPE="text" NAME="TM_END"><br/>
<br/>
Варианты ответов: <br/>
<INPUT TYPE="text" NAME="ans_1"><br/><br/>
<INPUT TYPE="text" NAME="ans_2"><br/><br/>
<INPUT TYPE="text" NAME="ans_3"><br/><br/>
<INPUT TYPE="text" NAME="ans_4"><br/><br/>
<INPUT TYPE="text" NAME="ans_5"><br/><br/>
<INPUT TYPE="text" NAME="ans_6"><br/><br/>
<INPUT TYPE="text" NAME="ans_7"><br/><br/>
<INPUT TYPE="text" NAME="ans_8"><br/><br/>
<INPUT TYPE="text" NAME="ans_9"><br/><br/>
<INPUT TYPE="text" NAME="ans_10"><br/><br/>
<br/>
<input type="Submit" name="submit" value="Создать голосование"> <INPUT TYPE="reset" value="Сброс">
</form>
<?php
}
?>
</body>
</html>
EGORR_TOO
02-08-2009, 12:40
Используй $_POST
if(isset($_POST['submit']))
{
$N_POLL = $_POST['N_POLL'];
$F_LOGGING = $_POST['F_LOGGING'];
$F_MULTI = $_POST['F_MULTI'];
}
Используй $_POST »
уже пробовал, не помогает.
UPDATE b_poll SET N_POLL='$N_POLL',TM_BEGIN='$TM_BEGIN',F_LOGGING='$F_LOGGING',TM_END='$TM_END',F_ENG''$F_ENG',F_MULTI ''$F_MULTI') WHERE K_POLL=$K_POLL »
кое где пропущен знак "="
<INPUT*TYPE="button"*VALUE="Добавить*запись"*ONCLICK="<?php*echo*$PHP_SELF?>"> »
вот это непонятно что такоеif*($submit)*{//*Если*такого*нет*то*добавить*если*есть*то*редактироватьif*($K_POLL)*{ »
непонятно, откуда переменные берутся...
!все строковые переменные перед вставкой в запрос обязательно должны быть обработаны mysql_real_escape_string (кроме редких случаев, нпр полнотекстового поиска)...
Sham, можешь пояснить !все строковые переменные перед вставкой в запрос обязательно должны быть обработаны mysql_real_escape_string »
когда я пытался ее вставить получил вот что:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in Z:\home\localhost\www\index.php on line 6
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in Z:\home\localhost\www\index.php on line 6
а переменные берется из формы (например: name="N_POLL")
EGORR_TOO
02-08-2009, 21:02
Guffer, ты mysql_real_escape_string() не в MySql запрос ли поставил?
EGORR_TOO, нет конечно. в самом начале php кода.
нет конечно. в самом начале php кода. »
эта функция должна использоваться после коннекта с базой (тк юзает его в параметре)... rtm (http://ru.php.net/manual/en/function.mysql-real-escape-string.php)
Sham, поставил после коннекта, ошибок не выдает. но данные по прежнему не вносит. на сколько я понял переменную $submit оно тоже не понимает. т.е name="N_POLL" не соответствует $N_POLL. как это можно поправить???
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.