Форум сетевых администраторов
Показаны 19 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- провлема (http://netadmin.ws/forum/showthread.php?threadid=2325)


Помещено Venom 27-07-2002 в 16:44:

провлема

Проблема иакая, при нажатие на копку,почемуто вводяца все данные кро admin_id хотя его значенме естьвезде. помогитн...

PHP:


<?
function print_form() {
print(
"Enter Your Interview into the Datebase:<br><br>\n");
$db = mysql_connect("localhost", "root");
mysql_select_db("esrael", $db);
$sql = "select * from admins limit 1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo 
"You Name: $row[admin_name]<br>\n";
echo 
"ID: $row[admin_id]\n";
$admin_id=$row[admin_id];
?>
<form action="intvpost.php?<?$admin_id?>" method="post">
Who Was Interviewed:<input type="text" name="topic"><p>
<textarea cols=40 rows=20 name="body"></textarea><p>
<input type="submit" name="submit" value="Submit Interview">
</form>
<?
}

if(isset(
$submit)):
if(!
$topic || !$body):
print(
"<b>You forgot to fill some of the required fields</b>");
else:
$db2 = mysql_connect("localhost", "root"); 
mysql_select_db("esrael", $db2);
$sql2 = "INSERT INTO interview VALUES('$admin_id','$topic','$body', NOW())";
echo 
$sql2;
$result2 = mysql_query($sql2);
echo 
"Все OK";
endif;
else:
print_form();
endif;
?>


Проблема иакая, при нажатие на копку,почемуто вводяца все данные кро admin_id хотя его значенме естьвезде. помогитн..


Помещено SCHIZO 27-07-2002 в 17:28:

<form action="intvpost.php?<?$admin_id?>" method="post">

самое простое вместо post написать get

а лучше добавить скрытое поле с <?$admin_id?> и убрать id из action

__________________
FAQ OFF


Помещено Venom 27-07-2002 в 19:03:

да проблема не в этом. он не определяет значение admin_id


Помещено SCHIZO 27-07-2002 в 19:19:

=)
ну что еще сказать?..
жди, щас распишу в чем проблема...

__________________
FAQ OFF


Помещено SCHIZO 27-07-2002 в 19:55:

итак, что мы видим?

quote:
<form action="intvpost.php?<?$admin_id?>" method="post">


----------------------------
подробности:
----------------------------

1. <?$admin_id?> непонятно какое действие производить над этой переменной?(чтобы что-то сделать с переменной, требуется указать еще и оператор)

2. action="intvpost.php?<?$admin_id?>" method="post" методом POST переменная $admin_id прикрученая таким образом к форме передаваться не будет.

-----------------------------
лекарство:
-----------------------------

1. написать хотя бы <?=$admin_id?> или <? echo $admin_id; ?> (для сведения: в целях совместимости с XML не следует использовать короткие теги <? ?>, правильно будет <?php ?> см.также PHP Coding Standart)

2. вместо запихивания параметра в REQUEST_STRING, который кстати передается только при запросе методом GET(а у тебя какой метод написан?), следует в форму добавить скрытое поле с этим параметром <input type="hidden" name="admin_id" value="<?php echo $admin_id; ?>">

P.S.
хоть бы книжку какую по CGI почитал...

__________________
FAQ OFF


Помещено Venom 27-07-2002 в 22:18:


PHP:


<?
function print_form() {
print(
"Enter Your Interview into the Datebase:<br><br>\n");
$db = mysql_connect("localhost", "root");
mysql_select_db("esrael", $db);
$sql = "select * from admins limit 1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo 
"You Name: $row[admin_name]<br>\n";
echo 
"ID: $row[admin_id]\n";
?>
<form action="intvpost.php<?php echo $admin_id; ?>" method="post">
Who Was Interviewed:<input type="text" name="topic"><p>
<textarea cols=40 rows=20 name="body"></textarea><p>
<input type="hidden" name="admin_id" value="<?php echo $admin_id; ?>">
<input type="submit" name="submit" value="Submit Interview">
</form>
<?
}

if(isset(
$submit)):
if(!
$topic || !$body):
print(
"<b>You forgot to fill some of the required fields</b>");
else:
$admin_id=$row[admin_id];
$date = date("H:i,d/M/y");
$db2 = mysql_connect("localhost", "root"); 
mysql_select_db("esrael", $db2);
$sql2 = "INSERT INTO interview VALUES('$admin_id','$topic','$body', $date)";
echo 
$sql2;
$result2 = mysql_query($sql2);
echo 
"Все OK";
endif;
else:
print_form();
endif;
?>




чо теперь не так?


Помещено SCHIZO 27-07-2002 в 22:40:

action="intvpost.php<?php echo $admin_id; ?>"

- убери кусок выделеный жирным(он вообще никакой роли не играет)
- в начале скрипта напиши error_reporting(E_ALL); (все что вывалит после этого изменения будет ошибками)
- хотелось бы взглянуть на дамп структуры таблицы

SCHIZO добавил 27-07-2002 в 22:53:56:
чем больше изучаю этот код тем больше удивляюсь тому как же я далек от такого стиля программирования, ну ладно хватит лирики, перейдем к делу (сам таким был.. =)

у тебя там функция которая выводит форму, так?
и в этой функции я не увидел место где определяется значение переменной $admin_id после выборки из базы...

echo "ID: $row[admin_id]\n";

вместо этого попробуй так:
$admin_id = $row[admin_id];
echo "ID: ".$admin_id."\n";

__________________
FAQ OFF


Помещено Venom 27-07-2002 в 23:02:

Warning: Use of undefined constant admin_id - assumed 'admin_id' in c:\program files\apache group\apache\htdocs\esrael\admsec\intvpost.php on line 85

Warning: Undefined variable: row in c:\program files\apache group\apache\htdocs\esrael\admsec\intvpost.php on line 85




вот ошыбка которую он выдает. вот зип с самим скриптом и дампом.


Помещено SCHIZO 27-07-2002 в 23:26:

ты не в то место изменения добавил....
в функцию надо, где то строка 70-я, он не вносится потому что не отправляется, глянь исходник HTML и посмотри что у тебя скрипт в поле которое hidden написал

SCHIZO добавил 27-07-2002 в 23:29:03:
...и заимей на будущее полезную привычку заключать элемент массива в кавычки.
вот так будет правильно: $array['element']
а вот так неправильно $array[element]

P.S.
это вроде просто, но позволяет значительно упростить жизнь

__________________
FAQ OFF


Помещено Venom 27-07-2002 в 23:55:


PHP:


<?
function print_form() {
print(
"Enter Your Interview into the Datebase:<br><br>\n");
$db = mysql_connect("localhost", "root");
mysql_select_db("esrael", $db);
$sql = "select * from admins limit 1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo 
"You Name: $row[admin_name]<br>\n";
$admin_id = $row[admin_id];
echo 
"ID: ".$admin_id."\n";
?>
<form action="intvpost.php" method="post">
Who Was Interviewed:<input type="text" name="topic"><p>
<textarea cols=40 rows=20 name="body"></textarea><p>
<input type="hidden" name="admin_id" value="<?php echo "$admin_id"; ?>">
<input type="submit" name="submit" value="Submit Interview">
</form>
<?
}

if(isset(
$submit)):
if(!
$topic || !$body):
print(
"<b>You forgot to fill some of the required fields</b>");
else:
$date = date("H:i,d/M/y");
$db2 = mysql_connect("localhost", "root"); 
mysql_select_db("esrael", $db2);
$sql2 = "INSERT INTO interview VALUES('$admin_id','$topic','$body', $date)";
echo 
$sql2;
$result2 = mysql_query($sql2);
echo 
"Все OK";
endif;
else:
print_form();
endif;
?>



врпервых я птолько начел это дело учить. А ВО ВТОÐ_ЫХ ТЕПЕÐ_Ь ВСЕ ОК НО НЕ вводит даные в базу.


Помещено SCHIZO 28-07-2002 в 00:24:

главное спокойствие =)

обрати внимание на строчку кода формы в коде скрипта:
<input type="hidden" name="admin_id" value="<?php echo "$admin_id"; ?>">

теперь перейди в броузере к скрипту и посмотри страницу в виде HTML....
скажи что ты видишь в этой строчке вместо <?php echo "$admin_id"; ?> ???

дополнение.
посмотрел дамп базы, и сравнил его с запросом который ты пытаешься выполнить.
Сделал вывод что порядок следования полей в таблице и запросе не совпадает. Т.е.
в таблице поля идут в следующем порядке:

code:

intv_id topic body date admin_id


а запрос на вставку значений ты делаешь в таком порядке:

code:
'$admin_id','$topic','$body', $date


а надо в таком порядке (не копируй строчку, подумай головой и сделай вручную как надо!)

code:
'',topic, body, date, admin_id



P.S.
если получиться, сообщи

__________________
FAQ OFF


Помещено Venom 29-07-2002 в 16:14:

<?
function print_form() {
print("Enter Your Interview into the Datebase:<br><br>\n");
$db = mysql_connect("localhost", "root");
mysql_select_db("esrael", $db);
$sql = "select * from admins limit 1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo "You Name: $row[admin_name]<br>\n";
$admin_id = $row[admin_id];
echo "ID: ".$admin_id."\n";
?>
<form action="intvpost.php" method="post">
Who Was Interviewed:<input type="text" name="topic"><p>
<textarea cols=40 rows=20 name="body"></textarea><p>
<input type="hidden" name="admin_id" value="<?php echo "$admin_id"; ?>">
<input type="submit" name="submit" value="Submit Interview">
</form>
<?
}

if(isset($submit)):
if(!$topic || !$body):
print("<b>You forgot to fill some of the required fields</b>");
else:
$date = date("H:i,d/M/y");
$db2 = mysql_connect("localhost", "root");
mysql_select_db("esrael", $db2);
$sql2 = "INSERT INTO interview VALUES('0','$topic','$body', '$date','$admin_id')";
echo $sql2;
$result2 = mysql_query($sql2);
echo "Все OK";
endif;
else:
print_form();
endif;
?>

лол, а теперь дату не находит.


Помещено SCHIZO 29-07-2002 в 17:22:

что ты пытаешься туда вставить?
- приблизительно следующее 19:13,29/Jul/02

каков тип поля?
- date

какие данные способно хранить это поле?
- дата представленная в формате YYYY-MM-DD

P.S.
если тебе необходимо вставить текущюю дату используй функцию MySQL - CURDATE() вместо переменной

__________________
FAQ OFF


Помещено Venom 29-07-2002 в 18:33:

что ты пытаешься туда вставить?
- приблизительно следующее 19:13,29/Jul/02

da

каков тип поля?
- date

da

какие данные способно хранить это поле?
- дата представленная в формате YYYY-MM-DD

ne znau, ya ne ispolzival standart


Помещено SCHIZO 29-07-2002 в 18:39:

вместо этого -> 19:13,29/Jul/02
попробуй это -> 2002-07-29

если надо еще и время измени формат поля и храни в нем UNIX TIMESTAMP и запихивай как UNIX TIMESTAMP

P.S.
поле не способно хранить данные которые ты ему передаешь

__________________
FAQ OFF


Помещено Venom 29-07-2002 в 19:17:

типо

$date = date("U"); ?
и в дв поменать на TIMESTAMP?

мне нужно чтоб так было...
20:15 - July 29, 2002


Помещено SCHIZO 29-07-2002 в 20:01:

да, что то вроде этого...
из UNIX TIMESTAMP с помощью функций PHP можно много чего сделать.
Почитай руководство PHP по функции time();
она выдает время в формате UNIX TIMESTAMP

P.S.
вот парочка функций для работы с датой и временем я их использую в своих проектах (например http://forum.monchegorsk.ru/) функции можно протестировать заменив аргумент $timestamp на time()

PHP:


// фунция для форматирования времени из UNIX TIMESTAMP
function get_formated_time($timestamp) {
    
$arr = getdate($timestamp);
    if (
$arr['hours']   < 10)   $arr['hours'] = '0'.$arr['hours'];
    if (
$arr['minutes'] < 10) $arr['minutes'] = '0'.$arr['minutes'];
    if (
$arr['seconds'] < 10) $arr['seconds'] = '0'.$arr['seconds'];
    
$time = ' '.$arr['hours'].':'.$arr['minutes'].':'.$arr['seconds'].' ';
    return 
$time;
}

// фунция для форматирования даты по русски из UNIX TIMESTAMP
function get_formated_date($timestamp){
    
$arr = getdate($timestamp);
    switch(
$arr['mon']) {
        case(
1):  $month = 'январь';  break;
        case(
2):  $month = 'февраль'; break;
        case(
3):  $month = 'март';    break;
        case(
4):  $month = 'апрель';  break;
        case(
5):  $month = 'май';     break;
        case(
6):  $month = 'июнь';    break;
        case(
7):  $month = 'июль';    break;
        case(
8):  $month = 'август';  break;
        case(
9):  $month = 'сентябрь';break;
        case(
10): $month = 'октябрь'; break;
        case(
11): $month = 'ноябрь';  break;
        case(
12): $month = 'декабрь'; break;
    }
    if (
$arr['mday']<10) $arr['mday'] = '0'.$arr['mday'];
    
$date = ' '.$arr['mday'].'&nbsp;'.$month.'&nbsp;'.$arr['year'].' ';
    return 
$date;
}



...я уже рассказал и показал более чем достаточно чтобы ты самостоятельно смог справиться с проблемой. Читай RFTM и учись, тогда все получиться.

__________________
FAQ OFF


Помещено Venom 29-07-2002 в 22:40:

хех, ти показал только время. я только начал учить это днло,так что плз покжи как вносит такую даиу как я показал.


Помещено SCHIZO 29-07-2002 в 23:12:

покажи, да раскажи... а своя голова зачем? или мне вместо тебя твой скрипт написать? (час работы = 30 USD =)

Ты так никогда ничему не научишься. Мне никто ничего не объяснял, когда я начинал, просто говорили RFTM и все. Я искал, читал и учился.... САМ ... и спасибо огромное тем людям что так мне говорили, а иначе сейчас, я бы не знал и сотой доли того что знаю...

P.S.
еще одно сообщение подобного рода - тему закрою.

__________________
FAQ OFF


Формат времени GMT. Текущее время 04:12.
Показаны 19 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.