Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP & form & array

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Опять я с ламерским вопросом. Прошу сильно не пинать.  Не могу понять, как осуществить передачу данных.
 
Проблема такая: у меня есть массив с данными по пользователю. И есть форма с кнопками. В зависимости от выбора надо запускать ту или иную функцию. И ничего у меня не получается.
 
форма:

<?
function my_choice($my_user)
{
      do_html_header();
?>
 
      <form action="choice_form.php" method="post">
            <table>
                  <tr>
                        <td><input type="submit" name="my_choice1" value="Выбор1"></td>
                        <td><input type="submit" name="my_choice2" value="Выбор2"></td>
                  </tr>
            </table>
      </form>
<?
      do_html_footer();
}
;?>

 
Файл choice_form.php:

<?
$my_choice1 = $HTTP_POST_VARS["my_choice1"];
$my_choice2 = $HTTP_POST_VARS["my_choice2"];
 
 
if ($my_choice1)
      run_fun1($my_user);
elseif ($my_choice2)
      run_fun2($my_user);
else
      ?>Что-то не сложилось<?
;?>

 
Массив $my_user определен в другой функции, откуда идет вызов функции my_choice(&my_user), как глобальный. Но в вызываемые функции, он не попадает. Что я делаю не так?

Всего записей: 38546 | Зарегистр. 29-08-2002 | Отправлено: 02:00 30-10-2004 | Исправлено: Kaylang, 02:04 30-10-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
$HTTP_POST_VARS["my_choice1"];  

юзай $_POST['my_choice1'];
версия php какая кстати?
 
Добавлено

Цитата:
идет вызов функции my_choice(&my_user), как глобальный

насколько я помню, делается так:
function my_choice(&$my_user)
{
...
}
my_choice($my_user);


----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 02:03 30-10-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Массив $my_user определен в другой функции, откуда идет вызов функции my_choice(&my_user), как глобальный. Но в вызываемые функции, он не попадает. Что я делаю не так?

если честно, то не понял о чем ты..  
выводится форма..через функцию my_choice, в которую зачем то передается переменная $my_user, которая не используется.. далее форма сабмитится на  
choice_form.php, что, по сути, является вторым обращением к php и ожидается, что каким то образом, переменная $my_user перейдет в нее??  
я правильно понял? если да, то читаем, как использовать сессии или хотя бы кукиесы.
Есть еще, конечно, вариант вставлять переменную в форму в виде input type=hidden , но это не лучшее решение.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:07 30-10-2004 | Исправлено: Cheery, 02:08 30-10-2004
Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xntx

Цитата:
версия php какая кстати?

PHP Version 4.3.10-dev  

Цитата:
юзай $_POST['my_choice1'];  

Спасибо, попробую.
 
Только, я хотел сказать, что форма обрабатывается нормально, вот только массив не передается. $_POST['my_choice1']; решит проблему?

Всего записей: 38546 | Зарегистр. 29-08-2002 | Отправлено: 02:08 30-10-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaylang

Цитата:
$_POST['my_choice1']; решит проблему?

не решит.. читай выше.


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:14 30-10-2004
Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xntx

Цитата:
насколько я помню, делается так:  
function my_choice(&$my_user)  

Так я тоже делал.  не помогло.
Cheery

Цитата:
выводится форма..через функцию my_choice, в которую зачем то передается переменная $my_user, которая не используется.. далее форма сабмитится на  
которая не используется.. далее форма сабмитится на  
choice_form.php, что, по сути, является вторым обращением к php и ожидается, что каким то образом, переменная $my_user перейдет в нее??  
я правильно понял? если да, то читаем, как использовать сессии или хотя бы кукиесы.

Ты понял, приблизительно правильно. В начале есть логин пользователя. Далее из базы берутся некоторые данные пользователя, которые будут нужны в работе приложения. Потом в зависимости от выбора надо запустить функцию, но внутри функции нужны будут эти данные. В самой форме, эти данные не нужны, но как передать их в функцию если я запускаю форму, нифига не могу придумать.
Насчет сессии, я пытался этот массив зарегистрировать session_register($my_user);, но мне это не помогло. Где-то я что-то недопонимаю.

Всего записей: 38546 | Зарегистр. 29-08-2002 | Отправлено: 02:15 30-10-2004 | Исправлено: Kaylang, 02:16 30-10-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaylang

Цитата:
Насчет сессии, я пытался этот массив зарегистрировать session_register($mbr_user);, но мне это не помогло. Где-то я что-то недопонимаю.

читай учебники.. когда постится форма запускается скрипт с нуля. у него нет данных, которые были раньше, значит ему нужно либо передавать их из формы, либо как то сохранять.. через куки - на стороне клиента, или через сессию - на стороне сервера.
http://us2.php.net/session
не нужно тебе session_register..
все, что нужно, session_start()
затем $_SESSION['var_name']=$my_user;
 
в скрипте choice_form.php:  
session_start();
$my_user=$_SESSION['var_name'];
 
если логаут - то удаляй сессию.. линк выше
 
зы: глобальность означает именно ее в пределах того, как выполняется скрипт.. как только он выполнился и данные ушли в браузер - все очищается (ну или почти все).

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:19 30-10-2004 | Исправлено: Cheery, 02:22 30-10-2004
Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Спасибо!  Сессию я стартовал, но про $_SESSION['var_name'] был не в курсе совсем.
 
Нету у меня тут нормальных учебников на русском языке. А в английском я не силен. Вот поеду в Россию и куплю парочку учебников. Еще бы кто посоветовал, какие именно взять, а то фигни всякой много выпускают.
 
Добавлено
Cheery

Заработало!  А я пол-дня на эту шнягу убил, и никак понять не мог...

Всего записей: 38546 | Зарегистр. 29-08-2002 | Отправлено: 02:30 30-10-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Нету у меня тут нормальных учебников на русском языке.
У тебя есть интернет - а этого более чем достаточно (остаётся только иметь желание):
http://php.net/manual/ru/ - официальная документация (на http://php.net/docs/ можно взять оффлайн-версию).
http://phpfaq.ru - PHP FAQ (очень часто ответ на свой вопрос можно получить именно здесь, если чтение on-line версии мануала не помогло)
http://phpclub.ru/detail/article/ - PHP в деталях
http://phpclub.ru/faq/ - ответы на часто возникающие вопросы (карта FAQ)
http://rontommy.narod.ru/tmp/kniga/Samouchitel.PHP4.pdf - Дмитрий Котеров. Самоучитель PHP4. 572 стр. <4 Мб
ftp://study:rybubrybub@videofon.ru/phpmysql/phpmysql.zip - Лаура Томсон и Люк Веллинг. Разработка Web-приложений на РНР и MySQL. 672 стр. 35 Мб (на редкость отвратительно описана работа с MySQL - ничего более глупого, чем делать stripslashes после получения данных из базы, придумать просто невозможно).
http://dklab.ru - лаборатория Дмитрия Котерова
http://php.spb.ru
К материалам древнее года/двух рекомендую относится с некоторой долей недоверия (т.е. не считать каждое слово чистой монетой).
ИМХО, всё это - наиболее стоящее из того, что мне попадалось.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 10:22 30-10-2004 | Исправлено: SiMM, 17:30 04-11-2005
Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SiMM
Спасибо за ссылки!

Цитата:
ftp://study:rybubrybub@videofon.ru/phpmysql/phpmysql.zip  - Лаура Томсон и Люк Веллинг. Разработка Web-приложений на РНР и MySQL. 672 стр. 35 Мб  

Это у меня есть. Именно по ней и учусь.  Правда отсканировано несколько неудачно.
Проблема в том, что я целыми днями у компа и глаза устают нехило, поэтому предпочитаю читать печатанные материалы.  Вот счас скачаю Самоучитель Д.Котерова и в понедельник его распечатаю.

Всего записей: 38546 | Зарегистр. 29-08-2002 | Отправлено: 12:08 30-10-2004 | Исправлено: Kaylang, 12:10 30-10-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Именно по ней и учусь
Сейчас краем глаза глянул на это дело. Советую быть с этой книжкой крайне осторожным (может вообще отложить на потом), поскольку в ней встречается откровенная лажа. Пример (стр. 207)
Цитата:
Как вы, наверное, помните, в главе 4 говорилось о функциях addslashes() и stripslashes(). Если записывать данные, введенные пользователем, в базу данных типа MySQL, следует вызывать addslashes(), а при возврате пользователю выходных данных — stripslashes().
Если по поводу использования addslashes спор может быть только в пользу mysql_real_escape_string (т.е. вопрос не столь существенен), то бредни о том, что при возврате пользователю выходных данных необходимо использовать stripslashes нужно пропускать мимо ушей. Такое ощущение, что автор не понимает происходящего. Более подробные разъяснения - в PHP FAQ: Кавычки. \"Надоедливые наклонные\", слеши, экранирование кавычек.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 21:47 30-10-2004 | Исправлено: SiMM, 21:48 30-10-2004
maora

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Свидетельствую, как изучающая по обеим этим книгам - Томсон и Веллинг - местами такие перлы выдает, что по нескольку дней можно искать, в чем дело! Очень много крови может попортить просто пропущеный пробел, вообще коды очень неаккуратно написаны, уж не знаю, вина ли это издательства, скорее, по вышеприведенному примеру - нет.

Всего записей: 19 | Зарегистр. 24-02-2003 | Отправлено: 22:38 06-11-2004
refuge



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
<?
require '../carstock/global.php';
require '../carstock/config/config.php';
 
// process and store data
if($stock) {
    // check to see if the stock number entered already exists in db
    $link = mysql_connect($dbhost, $dbuser, $dbpass);
    $query = "SELECT id FROM $dbvin WHERE stock='$stock'";
    $result = mysql_db_query($dbname, $query, $link);
    if(mysql_num_rows($result)) {
        echo "<script language='JavaScript'> alert('The stock number you entered already exists in the database.'); </script>";
    } else {
        // make input query friendly
        foreach($_POST as $key => $value) {
            $_POST[$key] = addslashes($value);
        }
        
        // add listing to database
        $time = time();
        $ccode = substr(time().rand(10000,99999),-15);
        
        $link = mysql_connect($dbhost, $dbuser, $dbpass);
        $query = "INSERT INTO $dbvin VALUES('0',
        '$_POST[fuel]',
        '$_POST[trans]',
        '$_POST[sold]'
        )";
        mysql_db_query($dbname, $query, $link);
        mysql_close($link);
 
        echo "<script language='JavaScript'> window.location='carstock_summary.php?ccode=$ccode'; </script>";
        echo "You added a vehicle";
        exit();
    }
}
?>
 
    <form action='<?=$PHP_SELF?>' method=post onSubmit='return checkrequired(this)'>
    <select class='text' name='trans' style='width:150px' tabindex='11'>
                <option value='<?=$trans?>'><?=$trans?></option>
                <option value='Petrol'>Petrol</option>
                <option value='Disel'>Diesel</option>
            </select>
    </form>
 

 
Делаю вэбсайт на разных языках. В админ панеле вводятся данные в форму - например "Petrol", что записывается в MySQL базу, и оттуда выводится на странице вэбсайта.
 
Вопрос, как можно сделать так, когда при вводе в форму "Petrol", на вэбсайт с англ. яз. выводилось то же, а на вэбсайт с рус. яз. выводился например "Бензин", возможно ли сделать так, чтобы при выборе в форме "Petrol" в базу заносилось не одно значение, а например 2 значения, petrol и бензин? Или как можно, сделать это подругому?
 
извините если не понятно написал.

Всего записей: 483 | Зарегистр. 03-03-2002 | Отправлено: 16:34 03-11-2005
Advanced_Guest



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
refuge
Есть 2 варианта:
 
добавить в базу дополнительное поле "name_rus" и запихивать туда русское имя.
 
Или добавить поле "язык" и пихать туда название языка.
Потом на сайте выбирать только нужные записи (where language='en' )

----------
The Abyss - UO, LA2, Ботва, BSFG

Всего записей: 2446 | Зарегистр. 14-04-2002 | Отправлено: 16:48 03-11-2005
refuge



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Advanced_Guest
 

Цитата:
добавить в базу дополнительное поле "name_rus" и запихивать туда русское имя.  

 
Не проблема создать доп. поле в базе, но как я понимаю придется вбивать каждый раз в форму англ. и русс. значение отдельно, или как-то можно это сделатить по другому?
 

Код:
 
<select class='text' name='trans' style='width:150px' tabindex='11'>  
                <option value='<?=$trans?>'><?=$trans?></option>  
                <option value='Petrol'>Petrol</option>  
                <option value='Disel'>Diesel</option>  
</select>
 

 
Также, где можно поподробнее узнать про (where language='en' )

Всего записей: 483 | Зарегистр. 03-03-2002 | Отправлено: 17:34 03-11-2005
Advanced_Guest



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
refuge

Цитата:
Не проблема создать доп. поле в базе, но как я понимаю придется вбивать каждый раз в форму англ. и русс. значение отдельно, или как-то можно это сделатить по другому?

да, придёться (прикручивать автоматический словарь не советую  - замучаешься %)
 
 

Цитата:
Также, где можно поподробнее узнать про (where language='en' )

Если нужно не каждую строку переводить на енг, (или языков многомного) то иногда стоит создавать одну таблицу, где 1 строка =1 страница на 1 языке.
 
И оттуда делать выборку
 
выглядит так:
 
id | name | lang
id1 | name1 | lang1
id2 | name2 | lang1
id3 | name3 | lang2
 
и просто выбираем where lang='lang1'
 
и тд .

----------
The Abyss - UO, LA2, Ботва, BSFG

Всего записей: 2446 | Зарегистр. 14-04-2002 | Отправлено: 21:24 03-11-2005
Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
refuge
Я недавно делал сайт на 3 языка. Пробовал оба предложенные тебе метода. В конце концов остановился на том, что делал по 3 поля в таблицах (it, de, en) куда заносил названия для каждого языка. Выборка по базе происходит без проблем.  
Какой язык использует пользователь передается через GET.  

Цитата:
Не проблема создать доп. поле в базе, но как я понимаю придется вбивать каждый раз в форму англ. и русс. значение отдельно, или как-то можно это сделатить по другому?

Можно сделать по другому. Типа такого:

Код:
 
<select class='text' name='trans' style='width:150px' tabindex='11'>  
                <option value='<?=$trans?>'><?=$trans?></option>  
 
<?php
    $sql = "SELECT `".$_GET['language']."` FROM `table`";
    $result = mysql_query($sql) or die('Invalid query: '.mysql_error());
    $count = mysql_numrows($res);
 
    if ($count) {
        for($i=0; $i<$count; $i++) {
                $product=mysql_result($result,$i,$_GET['language']);
?>
                <option value='<?php echo $product;?>'><?php echo $product;?>></option>  
<?php
        }
    }
mysql_free_result($result);
?>
</select>  
 

 
Тогда он тебе будет автоматически заполнять select значениями из базы.

Всего записей: 38546 | Зарегистр. 29-08-2002 | Отправлено: 15:39 04-11-2005 | Исправлено: Kaylang, 15:47 04-11-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://phpclub.ru/faq/multilang

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 17:41 04-11-2005
refuge



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо всем, постараюсь сделать lang='lang1'  способом.

Всего записей: 483 | Зарегистр. 03-03-2002 | Отправлено: 20:13 04-11-2005
refuge



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу помочь с таким вопросом.
 
Стоит селект форма со значениями Sale и Sold, при выборе Sale, в базу  идет ничего, при выборе Sold в базу идет Sold:
 

Код:
 
<select class='text' name='sold'>
<option value='<?=$sold?>'><?=$sold?></option>                
<option value=''>Sale</option>
<option value='Sold'>Sold</option>
</select>
 

 
Пытаюсь поставить чекбокс, при выборе которого отправлялось бы значение Sold, и при очистке, отправлялось бы ничего.

Код:
 
<input type="checkbox" name="Sold" value="<?=$Sold?>">
 

 
Но так, как я это делаю - не работает. Чего тут не хватает?
Извините если криво объясняю.

Всего записей: 483 | Зарегистр. 03-03-2002 | Отправлено: 17:39 14-12-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP & form & array


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru