Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   ajax и переменные (https://javascript.ru/forum/dom-window/50894-ajax-i-peremennye.html)

sloyi 16.10.2014 08:56

ajax и переменные
 
Ребята есть следующий код

<select class='select-vibor-strel' id='filter_dop'>
<option class='option-vibor'>Выбрать</option>
<option class='option-vibor'>Выбор 1</option>
<option class='option-vibor'>Выбор 2</option>
<option class='option-vibor'>123</option>
<div class='iskat-form'>Искать</div>
</select>


$(document).ready(function(){
var pole_3;

	$('.iskat-form').click(function(){
	pole_3 = document.getElementById('filter_dop').value;
	$.post("/netcat/modules/default/vivod-all-filter-function.php",
						{
						pole_3:pole_3,
						},
					function(data)
						{
						document.querySelector('.ves-spisok').innerHTML = data;
						return false;
						}
						
			);
      });
});


файл vivod-all-filter-function.php;
$pole_3 = $_POST["pole_3"];

$db = mysql_connect($MYSQL_HOST,$MYSQL_USER,$MYSQL_PASSWORD);
mysql_select_db($MYSQL_DB_NAME, $db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");

$Subdivision_vendor = mysql_query("SELECT * FROM `Message2011` WHERE `Dop_par` = ".$pole_3."", $db);
if(!$Subdivision_vendor){echo 'Товары ненайдены';}
else{
$myrow_vendor = mysql_fetch_array($Subdivision_vendor);
do
    {
     echo $myrow_vendor['Name'];
     }
     while ($myrow_vendor = mysql_fetch_array($Subdivision_vendor));



Проблема заключается в следующем; Не выводит совпадения. говорит что таких записей нет. Хотя в базе они есть и если выводишь переменную $pole_3 он выводит ее правильно и в базе смотришь есть поле с таким значением. Но если в переменной числовое значение то он выводит правильно но если есть хоть одна буква то он выводит что нет совпадений грешу на типы данных. в базе у меня char меняю типы и в js и в php ничего не вышло. менял и на int и на string. Помогите пожалуйста завтра deadline. Предстоит безсоная ночь(((. У кого какие мысли почему не работает?

danik.js 16.10.2014 09:12

Цитата:

Сообщение от sloyi
<div class='iskat-form'>Искать</div>

Ты зачем див засунул в <select> :D
Браузер его все равно оттуда вытолкнет )) Или проигнорирует - не знаю

danik.js 16.10.2014 09:15

Цитата:

Сообщение от sloyi
Помогите пожалуйста завтра deadline

Ой и говнокодище. Не буду помогать - умирай. Пусть заказчик знает что ты не умеешь кодить. :haha:

ksa 16.10.2014 09:18

sloyi, я х/з за каким ты фигом разместил тут столько кода... :)
Но в "моем" SQL такое

SELECT * FROM table WHERE prop = СТРОКА


работать не будет. :no:

А будет работать такое

SELECT * FROM table WHERE prop = 0123456789

Т.е. любое число. Или
SELECT * FROM table WHERE prop = 'СТРОКА'

danik.js 16.10.2014 09:21

Цитата:

Сообщение от sloyi
Но если в переменной числовое значение

А ты попробуй вот такое значение:
<option>;DROP TABLE Message2011</option>


Это должно все исправить. Ну кто-нибудь потом поможет исправить ))

danik.js 16.10.2014 09:22

Цитата:

Сообщение от sloyi
iskat-form

:D

sloyi 16.10.2014 09:26

Div я не кинул в селект. это просто сюда писал и ошибся у меня в коде все нормально. Да извените говнокод согласен пытаюсь научиться с помощью вот таких ваших критик. Только говорите пожалуйста нормально что именно не нравиться в коде чтоб таких ошибок я больше не делал. спасибо вам большое за то что откликнулись. ksa я исправил как ты сказал все работает. Еще раз спасибо парни;)

sloyi 16.10.2014 09:28

да с названиями переменных мне нужно поработать. Просто я работаю первый месяц а мне сразу сложный сайт дали. не очень сложный но приличный )))) мозг кипит с него уже))) с js дружу но только на привет пока)))

sloyi 16.10.2014 09:48

Парни а еще вопрос возможно крайне глупый но тем не менее можно ли задать условие в запросе вот примерно так

("SELECT * FROM `Message2011` WHERE `Cena` >= ".$pole_min." if($parametr_1!=''){ AND `Cena` <= ".$pole_max."}, $db);

ksa 16.10.2014 09:51

Цитата:

Сообщение от sloyi
можно ли задать условие в запросе вот примерно так

Нет конечно! :D

ksa 16.10.2014 09:53

sloyi, но никто не мешает формировать саму строку запроса, как тебе захочется. ;)

sloyi 16.10.2014 09:54

т.е. мне нужно через if прописывать все возможные варианты? т.к. у меня есть 3 параметра и они пустые. и при за просе если они пустые мы не обращаем на них внимание

ksa 16.10.2014 09:56

Пример на COS...
s sql="SELECT * FROM table WHERE prop >= "+min
s:prm'="" sql=sql+" And prop <= "+ max
w !,sql

sloyi 16.10.2014 09:58

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

ksa 16.10.2014 09:59

Цитата:

Сообщение от sloyi
т.е. мне нужно через if прописывать все возможные варианты?

Что именно использовать при формировании строки запроса - решать тебе. Вариантов реализации бывает ооочень много...

ksa 16.10.2014 10:00

Цитата:

Сообщение от sloyi
код не могу прочитать

Ну, а я с ПХП не работаю... :)

danik.js 16.10.2014 10:25

Цитата:

Сообщение от danik.js
А ты попробуй вот такое значение:
<option>;DROP TABLE Message2011</option>

Так ты пробовал это или нет? Вобще, не понял намека что-ли?

sloyi 16.10.2014 10:40

кончно не пробывал. А намек так себе если чесно

danik.js 16.10.2014 11:08

Цитата:

Сообщение от sloyi
А намек так себе если чесно

Ну ты подумал, и все-таки решил оставить в коде уязвимость sql-injection, верно?

kostyanet 16.10.2014 12:46

Товарищ ТС, прекращайте заниматься садомазо. Так нетрадиционно-ориентированные делают:


$myrow_vendor = mysql_fetch_array($Subdivision_vendor);
do
    {
     echo $myrow_vendor['Name'];
     }
     while ($myrow_vendor = mysql_fetch_array($Subdivision_vendor));


Православные делают вот так:

while ($myrow_vendor = mysql_fetch_array($Subdivision_vendor))
     echo $myrow_vendor['Name'];

kostyanet 16.10.2014 12:54

Стопудов такой вот как sloyi делал сайт детской полУклиники куда я зашел с карты посмотреть расписание. Показать? Представьте пока - вокруг необъятно пустой страницы по перимерту расположены кнопари с коробок спичек размером. То есть начинаешь читать снизу вверх, потом слева направо, потом сверху вниз. При этом некоторые кнопари имеют подкнопари исправно выпадающие внутрь пустой страницы. Она не пустая, конечно, там приветственная телега которую конечно ничто не будет читать. Гениально! Один раз только можно зайти - второй раз уже не рискнешь.


Часовой пояс GMT +3, время: 03:31.