Косяк в коде на пхп

Статус
В этой теме нельзя размещать новые ответы.

penguen

Постоялец
Регистрация
7 Янв 2007
Сообщения
842
Реакции
109
Дали задание сделать форму на нтмл+пхп принимающую заявки на поломку.
Скодил код, все ок, но в базу не пишится перемен. введенная в форму, но ид_индентифик. создается.
Т.е. в базу пишится пустая переменная

Вот сам код таблицы:
CREATE TABLE `add_zayavka` (
`id_cor` bigint(255) unsigned NOT NULL auto_increment,
`address` varchar(50) NOT NULL default '',
`telephone` varchar(10) NOT NULL default '',
`time` varchar(10) NOT NULL default '',
`date` varchar(10) NOT NULL default '',
`time2` varchar(10) NOT NULL default '',
`date2` varchar(10) NOT NULL default '',
`ip_add` varchar(20) NOT NULL default '',
`comments` varchar(255) NOT NULL default '',
PRIMARY KEY (`id_cor`)
) ENGINE=MyISAM;

И сам код:

<?php

define('DATE', 'Дата');
define('DATE2', 'Планируемая дата');
define('TIME', 'Время');
define('TIME2', 'Время исполнения');
define('NAST2', 'Исполнитель заявки');
#include ('connect.php');

$dbhost="localhost";
$dbname="noc";
$dbuser="root";
$dbpass="";
# Connect MySQL

$db=mysql_connect($dbhost, $dbuser, $dbpass) or die ("Not connect:" .mysql_error());


$db_table=mysql_select_db($dbname) or die ("Not connect:" .mysql_error());
#$ip_add=$_SERVER[REMOTE_ADDR];

?>

<style>
input
{
border:solid 1px #00;
text-align:center;
}
textarea
{
border:solid 1px #00;
text-align:center;
}
</style>
<body bgcolor=f6f6f6>
<table width=80% height="20%" border="0" align=center bgcolor=#c6c6c6>
<form method="post" action="<?php add_zav1();?>">
<tr><td colspan=3><input type="hidden" name="ip_add"></td></tr>
<tr>
<td align=center valign=middle width=35%><b>Адресс заявителя</b></td>
<td align=center valign=middle><input type="text" name="address" size=45 maxlenght=200></td>
<td rowspan=9 height=100% valign=middle>
<select multiple name="nastroishiki" size=15>
<?php
$query="select first_name from sotrudniky";
$result=mysql_query($query);
$count321=mysql_num_rows($result);


for ($i=0; $i<$count321; $i++)
{
$row=mysql_fetch_row($result);

echo "<option value=$row[0]><b>$row[0]</b>";
}
//mysql_close($dbbase);
?>
</select>

</td>
</tr>
<tr><td align=center valign=middle width=35%><b>Телефон заявителя</b>
<td align=center valign=middle><input type="text" name="telephone" size=45 maxlenght=200></td></tr>
<tr><td align=center valign=middle width=35%><b>Время заявки</b><td align=center>


<b><?php echo TIME?></b>&nbsp;&nbsp;&nbsp;<select name="time">
<?php

$xsw=date('i');
$time=22;
for ($i=9; $i<$time; $i++)
{
echo "<option value=\"$i\">$i _00&nbsp;ч";
}

?></td></tr>
<tr><td align=center width=35%><b>Дата заявки</b><td align=center>
<b><?php echo DATE?></b>&nbsp;&nbsp;&nbsp;<select name="date">
<?php
$date=date('d'.'-'. 'm'.'-'.Y.'||'.H.'_'.i.'_'.s);
echo "<option value=$date><b>$date</b>";
?>
</select>
</td></tr>
<!-- -->
<tr><td align=center valign=middle width=35%>
<b>Кто настраивает</b><td align=center valign=middle width=35%>
<b><?php echo NAST2?></b>&nbsp;&nbsp;&nbsp; ======= >>>>>
</td></tr>
<tr><td align=center width=35%><b>Планируемая дата</b><td align=center>
<b><?php echo DATE2?></b>&nbsp;&nbsp;&nbsp;<select name="date2">
<?php


$date12=01;
$xsw=date('m.y');


for ($i=1; $i<32; $i++)
{

echo "<option value=\'$date12.$xsw\'><b>$date12.$xsw</b>";
$date12+=1;
}

?>
</select>

</td></tr>
<tr><td align=center width=35%><b>Планируемое время</b><td align=center>
<b><?php echo TIME2?></b>&nbsp;&nbsp;&nbsp;<select name="time2">
<?php


$time1=9;



for ($i=9; $i<22; $i++)
{

echo "<option value=\'$time1\'><b>$time1&nbsp;_00&nbsp;ч.</b>";
$time1+=1;
}

?>
</select>

</td></tr>

<!-- Comment-->

<tr><td colspan=2 align=center><textarea name="comments" rows="5" cols="50">&nbsp;&nbsp;&nbsp;</textarea></td></tr>
<tr><td colspan=2 align=center valign=middle>
<input type="submit" value="Добавить">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="Сбросить">

</td></tr>

</select>
</form>
</table>

<?php

$ip_add=addslashes($HTTP_POST_VARS["ip_add"]);
$comments=addslashes($HTTP_POST_VARS["comments"]);
$address=addslashes($HTTP_POST_VARS["address"]);
$telephone=addslashes($HTTP_POST_VARS["telephone"]);
$time=addslashes($HTTP_POST_VARS["time"]);
$date=addslashes($HTTP_POST_VARS["date"]);
$nastroishiki=addslashes($HTTP_POST_VARS["nastroishiki"]);
$date2=addslashes($HTTP_POST_VARS["date2"]);
$time2=addslashes($HTTP_POST_VARS["time2"]);




function add_zav1 ()
{
$query="insert into add_zayavka values ($address)";



$result= mysql_query($query) or die ("<b>Not query</b>");
if ($result)
echo mysql_affected_rows(). " cool add";
exit;
}

?>

В конце генерируется вот эта срань <form method="post" action="1 cool add

Вопрос №1: Как сделать так чтоб был вызов функции заново add_zav1 и данные формы где адресс писалось в базу

Не пойму что и как я не так сделал ((((
Спасибо заранее за помощь.
 
Код:
$query="insert into add_zayavka values ($address)";
место $адресс, ты должен перечислить все ячейки таблицы, в том порядке, в котором они созданы;
Код:
$query="insert into add_zayavka values (null, '$address', '$telephone'.........)";
ну это единственное что я понял из твоего кода :)
 
Я данные ньюансы знаю. ТЕст делал по одному полю.
 
копаться я не буду в твое коде, но для общего развития скажу, функция использует ток локальные перменные, а для глобальных, используется global
 
Окей понял.
Вопрос, вынес код из функции в отдельный скрипт который делает вставку в мускул, создается Ид-индентиф. но данные не пишутся, что не так делаю? ХЗ
 
Бредовый код от начала и до конца. И это хакеры? :D

Ну и почему что-то должно куда-то добавляться, если объявленая функция add_zav1() ни разу не вызывается?..
 
вызывается
<form method="post" action="<?php add_zav1();?>">

Ну во первых уже сказали global
function add_zav1 ()
{
global $address;
$query="insert into add_zayavka values ($address)";

$result= mysql_query($query) or die ("<b>Not query</b>");
if ($result)
//для проверки выведем и значение переменной адрес
echo mysql_affected_rows(). " cool add - ".$address;
exit;
}
ну и вообще сам проверь через phpmyadmin свой запрос
примерно так
insert into add_zayavka values (1, 23, 33, " и т.д.")
А так все в принципе работоспособно на первый взгляд.

И вообще если функция mysql_affected_rows() возвращает 1 - то всетаки какие-то действия с твоей таблицей были произведены.
 
вызывается
<form method="post" action="<?php add_zav1();?>">
А ты вообще вкурсе что должно быть в атрибуте action тега form

Это мега LOL :D

ну и вообще сам проверь через phpmyadmin свой запрос
примерно так
insert into add_zayavka values (1, 23, 33, " и т.д.")
А так все в принципе работоспособно на первый взгляд.
Ну ну. Загляни в мануал для начала по поводу синтаксиса INSERT :D
 
Убейся мега кодер.
Я вот знаю, что должно быть в атребуте action . Но не когда не мешает эксперементировать. Выучите для начала основы синтаксиса ПХП.

INSERT Как я описал код рабочий, необязательно в инсерте поля указыв., достаточно перечислить их перемен. Уже как с пол года так пишу и еще не на один проэкт не жаловались.

Я лишь задал вопроса 2 на которые хотел получить ответ.
Зы. Я не хакер, это для Fpingera
======================
И вообще если функция mysql_affected_rows() возвращает 1 - то всетаки какие-то действия с твоей таблицей были произведены.

Будите смеяться, но возвращает значение 1 :D
Но в базу ничего не пишет, точнее не то что нужно. Пишится пустое значение.
ВСе откликнувшимся спасибо, но ошибка еще есть
 
Я вот знаю, что должно быть в атребуте action . Но не когда не мешает эксперементировать.
penguen, не позорься лучше.
Выучите для начала основы синтаксиса ПХП.
Это ты мне совет даёшь? Лучше синтаксис bbCode выучи :D
Уже как с пол года так пишу и еще не на один проэкт не жаловались.
Какие ваши доказательства? (с) Красная жара... :D

А теперь по твоему говнокоду...
В атрибуте action тега form должен указываться URL (имя скрипта), которому передаётся запрос формы. Прописать тудда имя функции, выполняющей добавление в БД - это не эксперемент, а совершенное незнание php. Если бы ты включил отображение ошибок, то выяснил кучу всякого интересного о своём говнокоде.

Да, мне нужно было более точно указать, что функция не выполняется после получения данных add_zav1(). А выполнение в том месте, где ты её прописал бесполезно.

О синтаксие SQL ввообще молчи... :D

И лучше слушай, что тебе говорят боле знающие люди и учись.

P.S. Кстати, нахрена скрытое поле <input type="hidden" name="ip_add"> не имеющее значение? И нахрена пустое значение из него засовывать в БД? :p

P.S.S. Вот лучши покури простой скрипт работы с формой и постарайся понять, почему в нём такой порядок действий и прочее...
PHP:
<?php
/*
Структура таблицы:
-----------------
CREATE TABLE names (
  id int(11) unsigned NOT NULL auto_increment,
  name varchar(255) default NULL,
  PRIMARY KEY  (id),
  UNIQUE KEY id (id)
) TYPE=MyISAM;
*/
// ---------------------------------------------------------------------------
define("DEBUG", true); // Изменить значение на false или закомментировать
                       // при рабочем режиме!!!
// ---------------------------------------------------------------------------
// Включаем обработку ошибок
// ---------------------------------------------------------------------------
ini_set("log_errors", true);
error_reporting(E_ALL^E_NOTICE);
ini_set("display_errors", false);
if (defined("DEBUG") && DEBUG) {
    error_reporting(E_ALL);
    ini_set("display_errors", true);
}
// ---------------------------------------------------------------------------
// Настройки подключения к БД
// ---------------------------------------------------------------------------
$db_host     = "localhost";
$db_user     = "user";
$db_password = "password";
$db_name     = "test";
// ---------------------------------------------------------------------------
// Обрабатываем запрос формы
// ---------------------------------------------------------------------------
$form_error = "";
if (isset($_POST["action"]) && "add_name" == $_POST["action"]) {
    if (!isset($_POST["name"]) || "" == trim($_POST["name"])) {
        $form_error = "Вы не указали имя";
    }
    if (empty($form_error)) {
        $connection = mysql_connect($db_host, $db_user, $db_password);
        if(!$connection){
            trigger_error(mysql_error(), E_USER_ERROR);
        }
        $db_select = mysql_select_db($db_name, $connection);
        if(!$db_select) {
            trigger_error(mysql_error(), E_USER_ERROR);
        }
        $name = mysql_real_escape_string(trim($_POST["name"]));
        $sql_string = "INSERT INTO names (name) VALUES ('{$name}')";
        if (!mysql_query($sql_string)) {
            trigger_error(mysql_error(), E_USER_ERROR);
        }
        header("Location: {$_SERVER['REQUEST_URI']}");
        exit();
    }
}
// ---------------------------------------------------------------------------
// Получаем список добавленных имён
// ---------------------------------------------------------------------------
$connection = mysql_connect($db_host, $db_user, $db_password);
if(!$connection){
    trigger_error(mysql_error(), E_USER_ERROR);
}
$db_select = mysql_select_db($db_name, $connection);
if(!$db_select) {
    trigger_error(mysql_error(), E_USER_ERROR);
}
$names_list = array();
$sql_string = "SELECT * FROM names ORDER BY name ASC";
$result = mysql_query($sql_string);
if (!$result) {
    trigger_error(mysql_error(), E_USER_ERROR);
} else {
    while ($row = mysql_fetch_assoc($result)) {
        $names_list[] = $row;
    }
}
// ---------------------------------------------------------------------------
// Выводим страницу
// ---------------------------------------------------------------------------
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=windows-1251" />
<title>Пример работы с формой</title>
<meta name="author" content="jonjonson7@gmail.com" />
</head>
<body>
<!-- Форма добавления имени =============================================== -->
<form action="demo.php" method="post">
<input type="hidden" name="action" value="add_name" />
<?php if (!empty($form_error)): ?>
<div style="color:red;"><?php echo $form_error;?></div>
<?php endif; ?>
<label for="Name">имя:</label><br />
<input type="text" name="name" value="" id="Name" /><br />
<input type="submit" value="добавить" />
</form>
<!-- Список добавленных имён ============================================== -->
<?php if (!$names_list): ?>
<!-- Таблица пуста ======================================================== -->
<div>В базе данных нет ни одного имени</div>
<?php else: ?>
<!-- В таблице есть хотя бы одно имя ====================================== -->
<table>
  <tr>
    <th>Имя</th>
  </tr>
<?php foreach($names_list as $name) { ?>
  <tr>
    <td><?php echo $name["name"];?></td>
  </tr>
<?php } ?>
</table>
<?php endif; ?>
</body>
</html>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху