Войти

Показать полную графическую версию : [решено] PHP - Передача полезного значения(части) массива из одного скрипта php, в другой.


ilka
01-11-2010, 02:42
Доброй ночи коллеги.
Прошу помощи и сильно не пинать, т.к. с пхп знаком только с прошлых выходных.
Ситуация следующая.
Задача написать веб морду к БД mysql, в которой имеются записи о клиентах организации.
Пользователь забивает фамилию, допустим - Иванов. и тут оказывается что после обработки массива, клиентов с такой фамилией - 3 человека (у всех записей есть свой уникальный идентификатор - ID). Выбираем нужного нам человека, тыкаем на него и открывается следующий скрипт, который с помощью SQL запроса (основываясь на выбранном ID) заполняет HTML табличку и сотрудник пускает эти данные на распечатку -например договор на нужного Иванова И.И.
... как передать переменную методом POST для обработки введенной информации массива - разобрался. Но возникла проблема с передачей нужной части массива из одного скрипта (findscript.php) в другой (createdoc.php) (допустим ТОЛЬКО 2й Иванов с ID = 123 из всех трех найденных должен быть внесен в документ, для последующей печати).

Заранее большое спасибо за любую подсказку или ссылку!

p.s.: прошу прощения за избыточность кода!)

файл 1

<html>
<head>
<title>Поиск клиента в Базе данных</title>
</head>
<body>
<form action="findscript.php" method="post">
<center>
<b>Введите фамилию клиента (в Именительном падеже - Иванов)</b>
<p>
<b>Если по фамилии клиент не был найден, введите его номер сотового телефона (без восьмерки - 9261234545)</b>
<p>
<table width="600"><tr><td align="left">
Ищем по:<br>
<select name="searchtype" size=2>
<option value="Last_Name" selected>Фамилии клиента
<option value="Phone">Номеру сотового телефона клиента
</select><br>
Введите данные:<br><input type="binary" name="searchterm"><br>
<p>
<p>
<input type=submit value="Поиск">
</center>
</form></td></tr></table>
</body>
</html>


файл findscript.php


<html>
<head>
<title>Программа поиска клиента (файл findscript.php)</title>
</head>
<body>
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$db = 'clients';
//$pass = $_POST['password'];
$user = '*****';
$pass = '******';
$server = 'localhost';
$link = mysql_connect($server, $user, $pass);
if(!$link) die('Не могу соединиться с MySQL');
mysql_select_db($db) or die('Не могу открыть $db: '.mysql_error());
$how = $_POST['searchterm'];
$what = $_POST['searchtype'];
//echo 'searchtype';
//var_dump($_POST);
trim ($how);
if (!$how)
die ('Не все данные введены.<br>
Пожалуйста, вернитесь назад и закончите ввод информации');
$how = addslashes ($how);
$query = "SELECT * FROM (info) WHERE $what like '%$how%'";
$result = mysql_query($query);
$number = mysql_num_rows($result);
/* Напечатать всех в красивом виде*/
$i = 0;
IF ($number == 0) {
print "<center><P><P>Клиент в базе данных не найден.</center>";
} ELSEIF ($number > 0) {
print "<center><P><P><b>Количество найденых клиентов в базе данных: $number</b><BR><BR>";
while ($i < $number){
$lastname = mysql_result($result,$i,"Last_Name");
$middlename = mysql_result($result,$i,"Middle_Name");
$name = mysql_result($result,$i,"Name");
$phone = mysql_result($result,$i,"Phone");
$id = mysql_result($result,$i,"ID");
?>
<table border=5 rules="all" width="600" cellpadding="5"><td align="left">
<tr><td>
<?php
print "<b>&nbsp;$lastname $name $middlename</b>&nbsp;";
?>
</td>
<th>
<form action="createdoc.php" target="_self" method="post"><input type="submit" value="Сформировать договор">
// И ВОТ ЗДЕСЬ НАСКОЛЬКО Я ПОНИМАЮ НУЖНО ВСТАВИТЬ КОД ДЛЯ ПЕРЕДАЧИ ТРЕБУЮЩЕЙСЯ
// И УЖЕ ОТОБРАННОЙ ЧАСТИ ПЕРЕМЕННОЙ К СЛЕДУЮЩЕМУ СКРИПТУ ===> createdoc.php
</form>
</th></td>
</tr>
<tr><td>
<?php
print "&nbsp;Сотовый телефон - <b>$phone</b>&nbsp;";
?>
</td>
<td>
<?php
print "&nbsp;Номер клиента - $id&nbsp;";
?>
</td>
</tr>
<?php
print "<BR><BR>";
$i++;
?>
<?php
}
//print "</center>";
}
mysql_close($link);
?>
</tr>
</table>
</body>
</html>

Sham
01-11-2010, 19:32
радио-кнопки не подходят? <input type="radio" name="name" value="<ID человеков>" />. В скрипте ловите $_POST['name'].

ilka
01-11-2010, 20:14
так а как мне передать нужное мне значение из массива методом POST? У меня же массив в php и как перекинуть его на другую страницу?
если value="<ID человеков> то там указывается конкретный номер...т.е. переменную $id - подставить не могу...он так её и передаст как текст, и будет $_POST['name'] = буковки $id.
.....или же нет?

Sham
01-11-2010, 21:19
зачем передавать что-то, если можно снова сформировать этот массив? сделайте функцию/метод для формирования массива....
обычно скрытые данные передаются через input type="hidden" name="" value="..."
если name будет типа array[key] - на выходе будет $_POST['array']['key']

ilka
01-11-2010, 22:30
Спасибо за ответы!
...но представим что пользователь вбивает в поиске "Иванов" ...страничка отображает ряд найденных Ивановых, среди которых и тот кто нам нужен. Далее тыкнув на него ....она ожидает что отчет будет сформирован только по тому Иванову, которого она выбрала.
...теперь что получается. Генеря страничку с выводом на экран всего массива с "Ивановыми", у нас уже есть тот уникальный идентификатор ($id), который теперь осталось только передать следующей странице (___.php) в SQL запрос и просто сделать выборку заполняя html-шаблон. Дико извиняюсь но в упор не понимаю зачем ещё раз генерить массив на следующей странице.

Объясните пожалуйста!
Может я просто не правильно мыслю?

Sham
01-11-2010, 22:48
ilka, конкретизируйте. Напишите пример массива, который хотите получить, элементы массива, значения.
Если будет галочка/радио-кнопка, то получите ID (или чего там), на основе которого можно вытянуть из базы недостающую инфу для распечатки.

ilka
02-11-2010, 15:37
Добрый день)
попробовал с радио кнопкой..... на следующей странице php выдал текст "array" и всё =(
...наверное очень криво объясняю...извините...попробую ещё раз
---------------------------------------------------------
1. на первой странице вводится фамилия клиента,
после чего все данные идут на след страницу =>

http://www.imagepost.ru/thumbs/267/hHUmqsE.jpg (http://www.imagepost.ru/?v=267/hHUmqsE.jpg)

---------------------------------------------------------
$last = $_POST['searchterm']; //переданная фамилия
$query = "SELECT * FROM (info) WHERE Last_Name like '%$last%'";
$result = mysql_query($query);
$number = mysql_num_rows($result);
/* Напечатать всех в красивом виде*/

2. вот сдесь начинается самое интересное -
обрабатываем массив, который красиво отобразится в html на страничке оператора,
а в массиве информация по трем клиентам и в каждой
переменной $lastname $middlename $name $phone $id есть три значения, которые по порядку
выведутся в HTML каждый в своей табличке и у каждого будет кнопка "Сформировать договор"
Нажав на одну из получившихся трех (в данном случае) кнопок в интересующей нас табличке.
Каким то образом переменная $id (так проще всего, по скольку в БД это уникальное значение
и основываясь на нем можно составить точный запрос) -но не весь массив! а только одно единственное значение!
должна передаться в следующую страницу

(Картинка как оно все выглядит)

http://www.imagepost.ru/thumbs/267/www2.JPG (http://www.imagepost.ru/?v=267/www2.JPG)

$i = 0;
IF ($number == 0) {
print "<center><P><P>Клиент в базе данных не найден.</center>";
} ELSEIF ($number > 0) {
print "<center><P><P><b>Количество найденых клиентов в базе данных: $number</b><BR><BR>";
while ($i < $number){
$lastname = mysql_result($result,$i,"Last_Name");
$middlename = mysql_result($result,$i,"Middle_Name");
$name = mysql_result($result,$i,"Name");
$phone = mysql_result($result,$i,"Phone");
$id = mysql_result($result,$i,"ID");
?>
<table border=5 rules="all" width="600" cellpadding="5"><td align="left">
<tr><td>
<?php
print "<b>&nbsp;$lastname $name $middlename</b>&nbsp;";
?>
</td>
<th>
<form action="createdoc.php" target="_self" method="post"><input type="submit" value="Сформировать договор">

===========================================
скорее всего тут нужно как то передать $id
===========================================

</form>
</th></td>
</tr>
<?php
print "<BR><BR>";
$i++;
?>

===============================================================
здесь генерится следующая табличка - пока массив не закончится.
===============================================================

<?php
}
}
mysql_close($link);
?>

......где то уперся лбом и не пойму что делать ....а точнее что искать(

Sham
02-11-2010, 18:16
mysql_query (http://docs.php.net/manual/en/function.mysql-query.php) - там посмотрите примеры правильного перебора результата.скорее всего тут нужно как то передать $id »
input type="hidden" внутри формы
<form action="createdoc.php" method="post">
<input type="submit" value="Сформировать договор" />
<input type="hidden" name="ID" value="<?php echo $id; ?>" />
</form>
id будет в $_POST['ID']

или просто ссылку без формы
<a href="createdoc.php?ID=<?php echo $id; ?>">Сформировать договор</a>
будет тогда $_GET['ID'] (или $_REQUEST в обоих случаях)

в createdoc.php обработайте ID и выводите что надо.

ilka
02-11-2010, 19:37
Sham, Огромное Вам человеческое спасибо!!!!!!!!!!!!!!!!!!!!!!!!!
Всё заработало!!!
Буду продолжать ваять далее)




© OSzone.net 2001-2012