Формы&Сценарии

gitex

Новичок
Формы&Сценарии

Доболе время суток!
Не могу получить переменную, из формы (form.html)в сценарий (send_simleform.php ), пишет "Notice:

Undefined variable: sender_name in ..."
Стоит PHP 5 + MYSQL 5 + Apache 2.0.55
Кусок из формы:
...
<form method ="post" action="send_simleform.php">
<p><strong>NAME </strong><br>
<input type="text" name ="sender_name" size=30></p>
<p><input type="submit" name="submit" value="SEND!"></p>
....

Кусок из сценария:
...
<? echo $sender_name; ?>
....

Есть идеи?
 

gitex

Новичок
Спасибо, с $_POST работает. Но как быть с использовании переменной? Скажем сдесь (переменная $table_name )

PHP:
 $form_block = "
<Form Method=\"POST\" Action=\"do_createtable.php\">
<Input Type=\"hidden\" name=\"table_name\" Value=\"$table_name\">
<table Cellspacing=5 cellpadding=5>
он выдаёт ошибку
Notice: Undefined variable: table_name in...
.
 

440hz

php.ru
gitex
так она и не определена ... определи ее.

судя по коду плачет по тебе инъекция ...
 

gitex

Новичок
Насчёт инъекции можно не волноваться – дальше localhost не уёдёт :). Вопрос предыдущий был составлен исходя из первого, т.е., после формы (html)”table_name” нам нужно перевести в переменную, для дальнейшего использования.
Чтобы было всё понятно, более подробные исходники:

Index.html:

PHP:
 <html>
<head>
<title>N1</title>
</head>
<body>
<h1>N1</h1>

<form method="Post" Action="do_showfielddef.php">

<p><strong> Table name:</strong><br>
<input type="text" Name="table_name" size=30</p>

<p><strong> Fields:</strong><br>
<input type="text" Name="num_fields" size=5</p>

<p><input type="submit"Name="submit" Value="Next"></p>

</form>
</body>
</html>
do_showfielddef.php:
PHP:
<?
if  ((!$table_name)|| (!$num_fields)) {
header ("Location: http://localhost");
exit;
}
$form_block = "
<Form Method=\"POST\" Action=\"do_createtable.php\">
<Input Type=\"hidden\" name=\"table_name\" Value=\"$table_name\">
<table Cellspacing=5 cellpadding=5>
<tr>
<th>Field name</th><th>Field type</th><th>Field size</th></tr>
";
......
 

440hz

php.ru
if ((!$table_name)|| (!$num_fields))

повторюсь ... видно с первого поста НЕ ДОШЛО ...

if (empty($_POST['table_name']) OR empty($_POST['num_fields']))
 

gitex

Новичок
Спасибо конечно за терпение, но я изучаю Пхп только 1 неделю. ПОСЛЕДНИЙ вопрос про эту тему- как правильно написать вот это
<Input Type=\"hidden\"name=\"table_name\"Value=\"$table_name\"> ?
2)Где возможно посмотреть готовый код какой либо ДБ на PHP с использованием MySQL?
 

Фанат

oncle terrible
Команда форума
1. никак неправильно.
имя таблицы нельзя передавать из формы.
и не нужно
потому, тчо таблица тебе всё равно нужна одна.
2. готовый код ДБ
PHP:
<? 
mysql_connect();
mysql_select_db("new");
$table="test";
if($_SERVER['REQUEST_METHOD']=='POST') { 
  if ($id=intval($_POST['id'])) {
    $query="UPDATE $table SET name='".mysql_real_escape_string($_POST['name'])."' WHERE id=$id";
  } else {
    $query="INSERT INTO $table SET name='".mysql_real_escape_string($_POST['name'])."'";
  }
  mysql_query($query);
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); 
  exit; 
} 
if (!isset($_GET['id'])) { 
  $LIST=array();
  $query="SELECT * FROM $table"; 
  $res=mysql_query($query);
  while($row=mysql_fetch_assoc($res)) $LIST[]=$row;
  include 'list.php';
} else { 
  if ($id=intval($_GET['id'])) {
    $query="SELECT * FROM $table WHERE id=$id"; 
    $res=mysql_query($query);
    $row=mysql_fetch_assoc($res);
    foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v);
  } else {
    $row['name']='';
    $row['id']=0;
  }
  include 'form.php';
} 
?>

form.php
<form method="POST">
<input type="text" name="name" value="<?=$row['name']?>"><br>
<input type="hidden" name="id" value="<?=$row['id']?>">
<input type="submit"><br>
<a href="?">Return to the list</a>
</form>

list.php
<a href="?id=0">Add item</a>
<? foreach ($LIST as $row): ?>
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a>
<? endforeach ?>
 
Сверху