| |
|
|
| | Имеется одномерный массив переменных $ssilka[$j], которые я вывожу на экран вот таким образом:
for ($j = 1; $j <= $n_ss; $j++)
{
echo $ssilka[$j];
}
|
А хотелось бы сделать так, чтобы эти сроки выводились не просто на экран, а в форму, где каждую из них можно с клавы подкорректировать, и одной кнопкой "Ввод" сохранить корректировку.
Даже не представляю, как бы такое осуществить... | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 12:22)
| | | А массив Вы от куда берёте? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 12:22)
| | | А массив откуда берётся из файла, базы данных, сессии? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 12:22)
| | | Дык...
>
>for ($j = 1; $j <= $n_ss; $j++)
> {
> echo "<input type=text size=70 name='$j' value='$ssilka[$j]'><p>";
> }
>
|
Дальше дело техники) | |
| |
|
|
| |
|
|
| |
для: Киналь
(25.07.2007 в 12:31)
| | | Массив формируется непосредственно при работе скрипта (без базы, без сессии). Рецепт Киналь подошел просто шикарно, но довести его до конца я не сумел...
У меня получается так:
for ($j = 1; $j <= $n_ss; $j++)
{
echo "<input type=text size=70 name='$j' value='$ssilka[$j]'><p>";
}
echo '<input type="submit" value="Ввести" name="B2">' ;
|
А теперь, как я понимаю, надо вытаскивать глобальные переменные
for ($j = 1; $j <= $n_ss; $j++)
{
$ssilka[$j] = _POST[$ssilka[$j]];
echo $ssilka[$j];
}
|
Разумеется, эта конструкция не работает, а как надо, я не знаю! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 13:09)
| | | Во-первых, все поля нужно поместить в тег формы.
Во-вторых, отключить magic_quotes_gpc - это делается в в .htaccess
В третьих, не забывать про функцию htmlspecialchars() которая преобразует plain-text в html-код
<?php
echo "<form action =? method=post>";
for ($j = 1; $j <= $n_ss; $j++)
$ssilka[$j] = $_POST[$ssilka[$j]];
for ($j = 1; $j <= $n_ss; $j++)
echo "<input type=text size=70 name=\"$j\" value=\""
. htmlspecialchars($ssilka[$j])
. "\"><p>";
echo '<input type="submit" value="Ввести" name="B2"></form>' ;
?>
|
>А теперь, как я понимаю, надо вытаскивать глобальные переменные
$_POST - это массив входных параметров, пришедших с формы, отправленной методом POST | |
| |
|
|
| |
|
|
| |
для: Trianon
(25.07.2007 в 13:18)
| | | К сожалению, так не получилось... Пустые окна в форме, и больше ничего достичь не удалось.
Попробовал вот так:
echo "<form action =? method=post>";
for ($j = 1; $j <= $n_ss; $j++)
echo "<input type=text size=70 name=\"$j\" value=\""
. htmlspecialchars($ssilka[$j])
. "\"><p>";
echo '<input type="submit" value="Ввести" name="B1"></form>' ;
if (isset($_POST['B1']))
{
echo "Скорректированный результат:<br>";
for ($j = 1; $j <= $n_ss; $j++)
{
$ssilka[$j] = $_POST[$ssilka[$j]];
echo $ssilka[$j];
echo "<br>";
}
}
|
Теперь в окнах формы есть первоначальный текст, но после нажатия на кнопку "Ввести" пишется только "Скорректированный результат:"
Что-то еще надо изменить в части вывода глобальных переменных, но что?
===============
В .htaccess сделал записи:
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
Так надо? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 14:23)
| | | может лучше объяснить суть скрипта... зачем Вам обрабатывать то, что появляется в процессе? смысл плиз... Вы же эти данные потом будете использовать или они так и висят в воздухе? | |
| |
|
|
| |
|
|
| |
для: buro
(25.07.2007 в 14:41)
| | | Скрипт сформировал массив строк в автоматическом режиме, подбирая их из выдачи Яндекса по формальным признакам. А теперь я хочу взглянуть на результат и вручную подправить то, что мне не нравится. Потом эти строки этого массива ложатся нужным мне образом в текстовый файл, который и является результатом работы скрипта.
Сам скрипт уже работает и меня вполне устраивает, так что осталось только отладить корректировку, о кодах которой я и пишу. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 14:23)
| | | Было бы проще, если бы Вы хотя бы схематично обозначили источник, откуда нужно взять строки, редактируемые скриптом, и место, куда их нужно положить, после исполнения скрипта.
php_flag magic_quotes_gpc Off
да, именно так.
php_flag magic_quotes_runtime
это, к счастью - значение по умолчанию | |
| |
|
|
| |
|
|
| |
для: Trianon
(25.07.2007 в 15:12)
| | | В теле файла ins.php происходит обращение к Яндексу, из выдачи которого формируется одномерный массив переменных. Вот такой:
echo $ssilka[1]; Кайт-школа Акватории лета
echo $ssilka[2]; Лет 10 назад человек работал по соседству, в одном издательстве
echo $ssilka[3]; Обувь для лета: модные тренды 2007
echo $ssilka[4]; Сумчатое настроение на лето
echo $ssilka[5]; Архитектурное Летоэтого года может кардинально изменить Вашу жизнь!
Из этих строк я формирую текстовый файл, который мне и нужен.
Скрипт работает уже несколько дней и прекрасно справляется с порученным ему делом.
Однако иногда возникает необходимость внести некоторые исправления в сформированные строки. Вот взгляните на последнюю строку - там слово "Лето" слилось со следующим словом. Надо бы это вручную исправить, а потом весь массив строк записать в те же переменные $ssilka[ ], чтобы скрипт продолжил свою работу.
С имеющимися кодами он этого не делает. Даже вот так не выводит скорректированные тексты, хотя в переменных $ssilka[ ], которые я для контроля вывожу ниже, они есть:
echo "<form action =? method=post>";
for ($j = 1; $j <= $n_ss; $j++)
echo "<input type=text size=70 name=\"$j\" value=\""
. htmlspecialchars($ssilka[$j])
. "\"><p>";
echo '<input type="submit" value="Ввести" name="B1"></form>' ;
if (isset($_POST['B1']))
{
echo "Скорректированный результат:<br>";
$ssilka[1] = $_POST[$ssilka[1]];
echo $ssilka[1];
$ssilka[2] = $_POST[$ssilka[2]];
echo $ssilka[2];
$ssilka[3] = $_POST[$ssilka[3]];
echo $ssilka[3];
}
echo $ssilka[1];
echo $ssilka[2];
echo $ssilka[3];
|
Можно прочесть только "Скорректированный результат:" | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 15:25)
| | | Так не выйдет.
Запрос, который получает данные с яндекса
и запрос, который получает данные из формы редактирования
- это два разных запроса
<?php
// разместите здесь код, который обращается
// к яндексу и вытаскивает массив строк $ssilka[]
// .......
// .......
// код , создающий форму, и вписывающий в нее данные их массива с яндекса
echo "<form action=update_lines.php method=post>\r\n";
foreach($ssilka as $key =>$line)
echo "$key : ".<input name=var[$id] value=\".htmlspecialchars($line).""\"></br>\r\n";
echo "<input value=Update type=submit /></form>\r\n";
?>
|
<?php // это файл update_lines.php
if(isset($_POST['var']))
{
$ssilka = $_POST['var'];
// здесь разместите Ваш код, который из массива $ssilka
// сформирует окончательный файл.
// .......
// .......
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(25.07.2007 в 15:43)
| | | Видимо, я неудачно изложил идею скрипта.
Сначала скрипт работает с Яндексом и формирует массив. При этом Яндексу посылается нужное количество запросов, какждый из которых обрабатывается надлежащим образом - так и формируется массив строк $ssilka[ ].
Когда сформировано требуемое количество элементов массива, общения с Яндексом прекращается. Всё, про Яндекс и запросы к нему забыли, ибо это уже в прошлом. Теперь работаем только с набранным массивом. С теми кодами, о которых я писал. И я никак не могу понять, почему они не работают? Очевидно, что не работает вот это
echo "<input type=text size=70 name=\"$j\" value=\""
. htmlspecialchars($ssilka[$j])
. "\"><p>";
|
ибо в глобальную переменную информация не попадает! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 16:00)
| | | У скриптов не бывает глобальных переменных, сохраняющих свои значения между вызовами.
Время жизни всех переменных ограничено продолжительностью запуска скрипта.
Скрипт не может поработать и просто сформировать массив. Этот массив потеряется.
Скрипт обязан положить его в файл, в базу данных, в окно браузера вывести на худой конец.
Просто так бросить массив нельзя.
По достижении последнего оператора скрипта - этот массив (и все другие переменные) будет уничтожен.
Есть мааааааленькое исключение из этого правила, которое касается содержимого переменной $_SESSION. Но если Вы не понимаете предыдущего - в сторону сессий Вам смотреть категорически рано. | |
| |
|
|
| |
|
|
| |
для: Trianon
(25.07.2007 в 16:09)
| | | Я все это понимаю, и я всё это учел. Более того, проверил сохранность элементов массива. Вот взгляните на код в этой ветке (25.07.2007 в 15:25) - там ниже отлаживаемого кода дополнительно выводятся первые три элемента массива, из которых я вижу, что содержимое в них есть, оно не пропало и не должно было пропасть, поскольку из файла я не уходил и его не перезапускал.
На практике я эти же три элемента вывожу и до отлаживаемой части кода - на всякий случай.
Подобные вещи я проверяю первым делом, всегда размещая ловушки в узловых частях скрипта.
Так что дело не в этом. Дело, вероятнее всего, в коде ввода в глобальные переменные. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 16:26)
| | | Вы не всё учли.
Вы не учли того, что код , который нарисовал форму, и код, который обработал её поля после нажатия кнопки Ввести - это код РАЗНЫХ скирптов.
Второй скрипт указывается в теге - <form action=скрипт.
Да, у Вас там стоит вопрос , что означает, грубо говоря - файл той же страницы.
Файл то тот же. Но вызов скрипта из этого файла по событию отправки формы - уже другой - новый вызов.
И в новом вызове у Вас будет скрипт от начала выполняться заново. C несуществующим массивом $ssilka (правда уже с непустым $_POST)
Так что хотите Вы этого или нет, Вам придется рассмотреть эти две реинкарнации одного скрипта независимо.
Хотя я полагаю, Вам было бы проще явно разбить скрипт на два...
Кстати $_POST[] можно вывести так:
print_r($POST); | |
| |
|
|
| |
|
|
| |
для: Trianon
(25.07.2007 в 16:45)
| | | Разумеется, Вы совершенно правы!
Я целый день долбился любом в этот скрипт, и лишь теперь до меня дошло, как оно есть на самом деле.
Большое Вам спасибо!
И за советы как таковые, и за само желание донести правильные сведения до моей головы! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 20:02)
| | | Донес-то Poison... его благодарите.
Я не смог. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 16:00)
| | |
echo "<input type=text size=70 name=\"peremen".$j."\" value=\""
. htmlspecialchars($ssilka[$j])
. "\"><br/>";
|
а так не покатит? (там переменные цифрами как то мутно мне кажется) потом принимайте файлом переменные и записывайте в файл или базу. чего уж тут мудрить :)
по сути задачка проще простого. скрипт получает из яндекса, массив опять же формирует скрипт, редактируете, нажимаете, записывает скрипт | |
| |
|
|
| |
|
|
| |
для: buro
(25.07.2007 в 16:34)
| | | *** а так не покатит? ***
А фиг его разберет...
Делаю вот такой простейший код:
$ssilka[1] = "ПЕРВЫЙ текст №1";
$ssilka[2] = "ВТОРОЙ текст №2";
$ssilka[3] = "ТРЕТИЙ текст №3";
for ($j = 1; $j <= 3; $j++)
{
echo "<input type=text size=70 name=\"peremen".$j."\" value=\""
. htmlspecialchars($ssilka[$j])
. "\"><br/>";
}
echo '<input type="submit" value="Ввести" name="B2">' ;
if (isset($_POST['B2']))
{
echo "<br>Скорректированный результат:<br>";
$ssilka[1] = $_POST[$ssilka[1]];
echo $ssilka[1];
$ssilka[2] = $_POST[$ssilka[2]];
echo $ssilka[2];
$ssilka[3] = $_POST[$ssilka[3]];
echo $ssilka[3];
}
|
Первоначальный текст в форме прописывается, а больше никакой реакции!
У меня уже спортивный интерес преобладает над практическим, так что либо этот код у меня заработает, либо не знаю что я с ним сделаю... | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 16:58)
| | | что же вы делаете?... это и не должно по сути работать :)
$ssilka[1] = "ПЕРВЫЙ текст №1";
$ssilka[2] = "ВТОРОЙ текст №2";
$ssilka[3] = "ТРЕТИЙ текст №3";
echo"
<form action='?act=3' method='post'>";// тройка означает скока сылок как я считаю
for ($j = 1; $j <= 3; $j++)
{
echo "<input type=text size=70 name=\"peremen".$j."\" value=\""
. htmlspecialchars($ssilka[$j])
. "\"><br/>";
}
echo '<input type="submit" value="Ввести" >' ;
echo "</form>";
if ($_GET['act']=="3")
{
for ($j = 1; $j <= 3; $j++)
{
echo "".$_POST["peremen$j"]."<br/>";
}
}
|
ну примерно так должно выглядеть... работает проверил | |
| |
|
|
| |
|
|
| |
для: buro
(25.07.2007 в 18:07)
| | | Да, так заработало, БОЛЬШОЕ спасибо! Правда, пока только на макете, в отдельном файле, а в скрипте не хочет. Но уж это мы его уговорим...
И в этой связи такой вопрос.
При запуске файла со скриптом в его адресе появляется добавка ?act=3 (точнее, ?act=N, где N - число элементов массива).
Какова её сущность? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 19:40)
| | | это попытка передать GET-параметром признак наличия полей POST ....
Довольно неуклюжая :(
Да. В принципе, POST-запрос может передавать и POST и GET-переменные одновременно.
На практике такая методика обычно только усложняет алгоритм. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(25.07.2007 в 16:58)
| | | Владимир55 вам же Trianon написал рабочий пример? и обьяснил, а вы непоймете что после того как яндекс забьет инфу в ваш массив и вы отредактируете данные, нажмете сохранить и ваш скрипт снова полезет к яндексу...
По примеру ошибка очевидна:
<%
$ssilka[1] = "ПЕРВЫЙ текст №1";
$ssilka[2] = "ВТОРОЙ текст №2";
$ssilka[3] = "ТРЕТИЙ текст №3";
for ($j = 0; $j < sizeOf($ssilka); $j++)
{ /* Здесь вы даете полям имена типа 0,1,2,3 и тд */
echo "<input type=text size=70 name=\"".$j."\" value=\""
. htmlspecialchars($ssilka[ $j ])
. "\"><br/>";
}
echo '<input type="submit" value="Ввести" name="B2">' ;
if (isset($_POST['B2']))
{ /* А здесь? их и нужно искать по 0,1,2,3 и тд */
echo "<br>Скорректированный результат:<br>";
$ssilka[1] = $_POST[0];
echo $ssilka[1];
$ssilka[2] = $_POST[1];
echo $ssilka[2];
$ssilka[3] = $_POST[2];
echo $ssilka[3];
}
|
| |
| |
|
|
| |
|
|
| |
для: Poison
(25.07.2007 в 18:51)
| | | *** вы непоймете что после того как яндекс забьет инфу в ваш массив и вы отредактируете данные, нажмете сохранить и ваш скрипт снова полезет к яндексу...***
Теперь я понимаю, о какой ситуации говорил Trianon! Спасибо ему - он опытный человек и предусмотрел всякие варианты.
Но такой ситуации у меня не бывает. Ибо после того, как я отредактирую данные, мне уже незачем лезть в Яндекс и скрипт не понадобится по крайней мере несколько дней...
Видимо, я потому и не понял его предостережения, что в голове не было такого алгоритма. Но на будущее приму к сведению! Большое спасибо! | |
| |
|
|