powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Название кнопки submit и прочих input'ов
24 сообщений из 24, страница 1 из 1
Название кнопки submit и прочих input'ов
    #38348812
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что будет если кнопка называется table, а все остальные поля в той же форме называются table[id], table[name], table[cat] и тп? Названия условны, чисто шаблон.

Оказывается вы получите почти пустой $_POST. Прилетит только одинокая кнопка. При этом если посмотреть в заголовки то можно увидеть дружный полет всех остальных значений под названиями, но где они приземляются неизвестно. В RAW тоже нет.

Вопрос бывалым. Что за байда?

Потратил час методом научного самотыка отыскивая разницу между теми таблицами записи из которых постприниматель понимает, и теми которые не видит. Выяснил что выше изложено и еще кое-что. По идее вообще ничего не должно было работать если бы пхп сказочным образом бы не переводил названия таблиц в lowercase. Именно те, которые имели titlecase работали, а которые названы целиком в нижнем регистре - не долетали.

Отсюда второй вопрос бывалым - где найти и вырезать эту фичу понижения регистра названия полей?
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38348818
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор При этом если посмотреть в заголовки то можно увидеть дружный полет всех остальных значений под названиями, но где они приземляются неизвестно. В RAW тоже нет.
скриншот?
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38348916
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, на слово не верите. Ну значит вы ответа не знаете.

В общем суть-то и так понятна, но хотелось уточнить. Может кто уже наступал на такие грабли. Сутьтакова. Имена типа table[name], table[id] и тп компилируются php в связный массив. Что, собственно, я и использую на стороне обработчика. И вполне естественно что если приходит переменная точно с таким же именем, но другого рода, компилятор вынужден что-то выбрать - либо то, либо другое. Пишут что выбирает он тупо - кто последний, того и тапки.

То есть если я перетащу кнопку наверх полей, то пропадет инфа о кнопке. Ее одноименная переменная будет убита последующей.

Что касается ловеркейса. Оказывается это mysqli fetch_field так выдает orgname и orgtable.

С какого перепуга - непонятно.
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38348920
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самая мякотка тупости в том и заключается моей, что я же использовал массив как таковой. Раскурочивал $_POST в цикле по key value. Мог бы сразу допереть что если я получаю компилированную переменную, не RAW какой-нибудь, то условия меняются и надо следить за базаром в гтмл.
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38348960
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowскриншот?


https://www.dropbox.com/s/lft59h9boorcdky/post.png

ну в принципе логично, из нескольких одноимённых переменных, PHP берёт переменную, поступившую последней.
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349103
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

Примерчик, который иллюстрирует проблему, выложите плиз. Чтоб можно было скопипастить и запустить на своем компе.
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349248
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<html>
  <body>
    <form method="post">
      <input type="submit" name="table" value="submit_button"/>
      <input type="text" name="table[id1]" value="table_id1"/>
      <input type="text" name="table[id2]" value="table_id2"/>
      <input type="text" name="table[id3]" value="table_id3"/>
    </form>

    <hr/>
    <?php var_dump($_POST); ?>
  </body>
</html>      



vs

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<html>
  <body>
    <form method="post">
      <input type="text" name="table[id1]" value="table_id1"/>
      <input type="text" name="table[id2]" value="table_id2"/>
      <input type="text" name="table[id3]" value="table_id3"/>
      <input type="submit" name="table" value="submit_button"/>
    </form>

    <hr/>
    <?php var_dump($_POST); ?>
  </body>
</html>      
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349447
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять затупил по-черному с массивами. Циклы и массивы это не мое фсе. Нет, на явескрипте почему-то все шиколадно, а вот с пхп опять затык (как и раньше с басиком и си).

Продолжение темы, немного может не по теме. Разобравшись с одноименными переменными решил усугубить и зафигачил все имена по одному шаблону, что дало массу полезной инфы для валидации и построения запроса. Сначала я хотел на яве все формировать, но мне все эти субмиты форм явой вообще не нравятся, как и аякс, потому что у меня богатый опыт написания скриптов на гризманке (greasemonkey). В общем амбула:

прилетает такой элемент массива:
Код: sql
1.
[Название_страны] 	=> Array ( [16] 			=> Array ( [252] 	=> Италия ) ) 



Заране известно что первый ключ - имя поля, второй внутри массива - флаг, третий внутри массива - тип поля и его значение - значение поля. Как мне его превратить в человеческий массив с заранее известными ключами, типа

Array("name"=>"Название_страны", "value"=>"Италия" ,"flags"=>16, "type"=>252);

С тем массивом я ж ничего не знаю - ни одного ключа заранее, вообще. Известна только структура данных. Как выше описано. Помогите пжлста, функцию написать чтобы из того, в этот. Спасибо.
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349450
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл оформить для ясности цель.

Код: sql
1.
Array("name"=>"Название_страны", "value"=>"Италия" ,"flags"=>16, "type"=>252);
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349458
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про гризманку.

Например надо взять в кавычки значение поля, ну вместо = Италия в запросе должно быть например = "Италия". Если я это сделаю на яве, то во-первых даже не знаю что с кавычками будет после этого пхп компилятора запроса, во-вторых чужой скрипт может кавычки не поставить, а написать что-то типа truncate и бла-бла-бла вместо = "Италия". Аналогично с идентификаторами полей. Может я и тут чего-то не понимаю, но как получить все интересующее от базы пользуясь загруженными в страницу функциями для аякса знаю прекрасно. У меня несколько скриптов для сайтов содержание которых меня вообще не волнует - оно сносится подчистую и на свободное место помещаются все интересующие меня данные в удобном для меня виде.
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349585
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче застрял, капец.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
	function getPost($post) {

		function _traverse($elem, $cnt, $res) {
			$names = Array('name', 'flags', 'type', 'value');
			if(!is_array($elem)) {
				$res[$names[$cnt]] = $elem;
				$cnt = 0;
			} else {
				$k = key($elem);
				$v = $elem[$k];
				$res[$names[$cnt]] = $k;
				_traverse($v, ++$cnt, $res);
	//			return $res;
			}
		echo '<br/>';
		print_r($res);
		} 

		$res = Array();

		$table = key($post);
		$arr = $post[$table];
		$res = _traverse($arr, 0, $res);

		echo '<br/><br/><br/>';
		print_r($res);
		echo  '<br/> = rowS';
	}



Изнутри рекурсии последняя копия функции дает то, что мне надо. Но никак не соображу как вытащить результат из последней копии.

Оригинальный компиленный в $post массив состоит только из нескольких ключей и ровно одного значения.

Блин, ну кто-нить тут разбирается в рекурсиях и циклах?
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349586
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача более ясно такова:

Есть
Код: sql
1.
2.
3.
4.
5.
6.
	Array ( 
	[Country] => Array (
		[id] 	=> Array ( [49699]	=> Array ( [3] 		=> 3 ) ) 
		[name] 	=> Array ( [0] 		=> Array ( [253] 	=> Italy ) ) 
		) 
	) 



надо
Код: sql
1.
2.
3.
4.
5.
6.
	Array ( 
	[Country] => Array (
		[0] => Array( [name] => id,   [flag] => 49699,	[type] => 3,   [value] => 3), 
		[1] => Array( [name] => name, [flag] => 0,		[type] => 253, [value] => Italy), 
		) 
	) 
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349593
JustCrazy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
debloggerС тем массивом я ж ничего не знаю - ни одного ключа заранее, вообще. Известна только структура данных. Как выше описано. Помогите пжлста, функцию написать чтобы из того, в этот. Спасибо.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
$last_arr=array();
$arr_0=array('country_name' => array('flag_num' => array('type_num' => 'value_name'))); //прилетевший массив (если так все понял)
foreach($arr_0 as $k1=>$arr_1){
  $last_arr['name']=$k1;
  foreach($arr_1 as $k2=>$arr_2){
    $last_arr['flags']=$k2;
    foreach($arr_2 as $k3=>$arr_3){
      $last_arr['type']=$k3;
      $last_arr['value']=$arr_3;
    }
  }
}
var_dump($last_arr);


Код: php
1.
2.
3.
4.
5.
6.
array(4) { 
  ["name"]=> string(12) "country_name" 
  ["flags"]=> string(8) "flag_num" 
  ["type"]=> string(8) "type_num" 
  ["value"]=> string(10) "value_name" 
}


так ?
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349601
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понимаю что можно отразить структуру вложенными форичами, но глобальные условия таковы, что количество ключей величина изменяемая. Конечно карта имен должна совпадать, но она и делается в одном месте, откуда и берется во все остальные.

Короче, чтобы достать значение последней копии массива вместо

Код: sql
1.
2.
_traverse($v, ++$cnt, $res);	
return $res;



надо присвоить

[code]
$res = _traverse($v, ++$cnt, $res);
[code]

Теперь остается выяснить как собрать весь индексный массив в этой _traverse, потому что вызывать ее форичем для значения родительского массива нельзя, потому что значением становится потомок и первый ключ пропадает втуне.
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349610
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кхе-кхе, тормоз все равно победил.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
function getPost($post) {

	function _traverse($elem, $cnt, $res) {
		$names = Array('name', 'flags', 'type', 'value');
		if(is_array($elem)) {
			$k = key($elem);
			$v = $elem[$k];
			$res[$names[$cnt]] = $k;
			$res = _traverse($v, ++$cnt, $res);	
		} else {
			$res[$names[$cnt]] = $elem;
		}
	return $res;
	} 

	$fields = Array();
	$table = key($post);
	$arr = $post[$table];

	foreach($arr as $key => $val) {
		$fields[] = _traverse(Array($key => $val), 0, Array());
	}
	
	return $fields;
}



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

Всем спасибо. :)
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349619
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кто захочет попробовать, исходный массив например такой

Код: sql
1.
$arr = Array ( [Страна] => Array ( [id] => Array ( [49699] => Array ( [3] => 1 ) ) [Фото_страны] => Array ( [32801] => Array ( [3] => 1 ) ) [Название_страны] => Array ( [16] => Array ( [252] => Китай ) ) [Описание_страны] => Array ( [0] => Array ( [253] => China ) ) [UPDATE] => Array ( [database] => Array ( [id] => Обновить ) ) ) );



Возвращаюсь к теме по просьбам читателей. Такая шняга получается если форму заполнить примерно так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
<form style="display:none;" name="editInline" enctype="multipart/form-data" accept-charset="UTF-8" method="post" action="edit.php">
<input type="text" tabindex="2" name="Страна[id][49699][3]" class="inputText hide" />
<input type="text" tabindex="3" name="Страна[Фото_страны][32801][3]" class="inputText" />
<textarea tabindex="4" name="Страна[Название_страны][16][252]" class="inputText" ></textarea>
<input type="text" tabindex="5" name="Страна[Описание_страны][0][253]" class="inputText" />
<input type="submit" name="Страна[UPDATE][database][id]" value = "Обновить"/>
<input type="submit" name="Страна[DELETE][database][id]" value = "Удалить"/>
<input type="submit" name="Страна[INSERT][database][id]" value = "Добавить"/>
</form>



Кнопки в идентичной структуре передают имя базы и имя primary key. Я его не определяю, потому что определяю правило для данного клиента - любая таблица обязана иметь примари кей и точка. Нет примари - нет обслуживания. Имя pk, конечно, может быть любым.

Для кнопочных данных смысл названий не совпадает, но это и не важно. В цикле с переключателем запрос строится по ключевым словам UPDATE-DELETE и тп. Следовательно никакое поле в таблице не имеет права называться UPDATE, DELETE и тп. Это еще одно правило.

Вчера посмотрел устройство пхпмайадмина и вполне понятно стало почему он глючит. Когда нет четких правил глюки гарантированы как конец света.

Кстати, наконец-то обучил винду искать в содержании файлов php. Оказывается есть примитивный хак описанный в официальном документе. В реестре присваиваете хэндлер фильтра от текстового файла чему угодно, лог-офф, лог-он и винда все ищет как из пушки.
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38349620
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Писец, а чего этот бб-код code не варпит строки? Одуреть...
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38351006
JustCrazy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
debloggerЯ понимаю что можно отразить структуру вложенными форичами, но глобальные условия таковы, что количество ключей величина изменяемая. Конечно карта имен должна совпадать, но она и делается в одном месте, откуда и берется во все остальные.
сделать так и без разницы на количество ключей..
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$arr_0=array('country_name' => array('flag_num' => array('type_num' => 'value_name')),'country_name1' => array('flag_num1' => array('type_num1' => 'value_name1'))); 
$last_arr=array();
$i=0;
foreach($arr_0 as $k1=>$arr_1){
  $mid_arr[$i]=array();
  $mid_arr[$i]['name']=$k1;
  foreach($arr_1 as $k2=>$arr_2){
    $mid_arr[$i]['flags']=$k2;
    foreach($arr_2 as $k3=>$arr_3){
      $mid_arr[$i]['type']=$k3;
      $mid_arr[$i]['value']=$arr_3;
    }
  }
  array_push($last_arr, $mid_arr[$i++]);
}
var_dump($last_arr);
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38351605
14640879
ты абсолютно уверен что двигаешься в нужном направлении? мб как то так?!
Код: php
1.
2.
3.
4.
5.
6.
Array ( 
	[сountry] => Array (
		[id] => Array( [flag] => 49699,	[type] => 3,   [value] => 3), 
		[name] => Array( [flag] => 0,	[type] => 253, [value] => Italy), 
		) 
	) 


+ на клиенте, наверное удобно использовать hidden поля
Код: php
1.
2.
3.
4.
5.
6.
<form enctype="multipart/form-data" method="post" action="edit.php">
     <input type="hidden" name="country[id][flag]" value="49699" />
     <input type="hidden" name="country[id][type]" value="3" />
     <input type="text" name="country[id][value]" />
and etc.
</form>


конечно не видя твоей прямой задачи - это всего лишь предположение... $)
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38351958
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предположение,

Кнопки и так скрытые, цсс-ом, ява их потом собирает в тулбар, все какие найдет на странице, и елем.клик()м отгружает.

---

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

В добитой рекурсии количество елементов значения не имеет и, если отключить еррор_репортинг(ОЛЛ) то скрипт молчком запишет пустые ключи когда их массив непредусмотрительно кончится. Стало быть если имена не нужны, то с цифрами вообще все полностью автоматически в рекурсии на любой размер структуры.
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38351986
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С целью прояснить и поделиться.

Традиционный способ пересылки данных:

form
input name ="я_знаю_имя_переменной"
input name ="это_известное_мне_имя_переменной"
input name ="об_этой_тоже_мне_все_известно"

post

if isset($post['я_знаю_имя_переменной']) $за_каким_то_новая_переменная = $post['я_знаю_имя_переменной'];

if isset($post['это_известное_мне_имя_переменной'])...
if isset($post['об_этой_тоже_мне_все_известно'])...

Получаются 2 скрипта в которых одинаковые данные взятые откуда-то и ВРУЧНУЮ разложены по полочкам. Если из БД - скрипт становится частью БД. Это - бред.

Я пытаюсь делать так, чтобы скрипт вообще ничего не знал. В случае который обсуждается скрипт знает только О ВЕЧНОМ. О трех, пока что операторах update, insert & delete. Они да, прописаны в скрипте, по ним идут ветки и все такое. Но повторяю - это вечное. Сколько будет существовать SQL, столько в нем будут update, select & insert.

Все остальное, в том числе русские эквиваленты для перечисленных операторов скрипт грузит из БД.
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38352002
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другими словами имя Страна[Фото_страны][32801][3] - абсолютно ничего не означает кроме того, что в тот момент была показана таблица Страна, выбрано поле Фото_страны, и данные этого поля были зафиксированы в еще двух ключах. Будет другая таблица, другие поля - все будет по-другому и заранее никакие данные неизвестны.

Опять же можно вообще не мучить клаву, а закинуть все данные через одно поле.
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38352057
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

Собрать все данные и отправить их одним махом через JSON со стандартной структурой вида ключ->значение - тоже не?
...
Рейтинг: 0 / 0
Название кнопки submit и прочих input'ов
    #38352118
автор Если из БД - скрипт становится частью БД. Это - бред.
вообще ничего не понятно... думаю не мне одному...
каким образом (в каком виде) получаем данные из хранилища?
как хотим разместить полученные данные на странице?
как хотим отдать обратно на сервер для обработки?
авторО трех, пока что операторах update, insert & delete. Они да, прописаны в скрипте, по ним идут ветки и все такое. Но повторяю - это вечное. Сколько будет существовать SQL, столько в нем будут update, select & insert.
Вообще-то ветки по ним идти как бэ и не должны!
удаляется по id - отдельная функция
обновляется по id + данные - отдельная функция
вставка - просто данные (автогенерация id) - отдельная функция...
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Название кнопки submit и прочих input'ов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]