Взема на точна стойност от инпут

Knoppix_

Registered
Здравейте имам инпут на който взимам стойност с $_POST
идеята е че в този нпут има празни символи пример PB 0031 PK

по този инпут след като взема стойноста му правя where клауза която вкарвам в заявка как мога да вземам точната стойност на инпута защотот при това търсене
PB 0031 PK

ми извежда и резултати PB 0034 PK PB 0038 PK а аз иксам да извежда само тези
 
По-правилно щеше да бъде да записваш тези номера така: AB1234CD , без интервалите.

А относно проблема ти не разбирам. Пишеш WHERE `pole` = 'PB 0031 PK' и ти излизат 0034, 0038 ..?? Дай малко код...
 
Да точно това имам предвид иначе да знам че по правилно ще е да са без интервал но ..
 
Knoppix_ каза:
Да точно това имам предвид иначе да знам че по правилно ще е да са без интервал но ..
Дай следните неща: формата ти и действията, които правиш при натискане на бутона
 
Кода на файла който е хтмл е това
Код:
<body>
	<h2>Basic CRUD Application</h2>
	<div class="demo-info" style="margin-bottom:10px">
	</div>
    <input type="text" name="vlekach_number" name="vlekach_number" value="<?php echo $_GET['kamion']; ?>">
	
	<table id="dg" title="Списъци" class="easyui-datagrid" style="width:860px;height:400px"
			url="pages/get_zarejdane.php"
			toolbar="#toolbar" pagination="true"
			rownumbers="true" fitColumns="true" singleSelect="true">
		<thead>
			<tr>
				<th field="vlekach" width="50" align="center">Влекач</th>
				<th field="data" width="50">Дата</th>
                <th field="strana" width="150">Държава</th>
                <th field="bezinostancia" width="150">Бензиностанция</th>
                <th field="kolichestvo" width="70">Количество</th>
                <th field="kilometraj" width="70">Километраж</th>
                <th field="tonaj" width="90">Тонаж</th>
                <th field="full" width="50">Фулиран</th>
			</tr>
		</thead>
	</table>
	<div id="toolbar">
		<a href="#" class="easyui-linkbutton" iconCls="icon-add" plain="true" onClick="newZarejdane()">Нов запис</a>
		<a href="#" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onClick="editZarejdane()">Редакция</a>
		<a href="#" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onClick="removeZarejdane()">Изтриване</a>
</div>
	
	<div id="dlg" class="easyui-dialog" style="width:400px;padding:10px 20px"
			closed="true" buttons="#dlg-buttons">
		<div class="ftitle">Нов запис</div>
		<form id="fm" method="post" novalidate>
			<div class="fitem">
				<label>Влекач:</label>
				<input name="kamion" class="easyui-validatebox" required="true">
			</div>
			<div class="fitem">
				<label>Дата:</label>
				<input name="data" class="easyui-validatebox">
			</div>
			<div class="fitem">
				<label>Страна:</label>
				<input name="strana">
			</div>
			<div class="fitem">
				<label>Бензиностанция:</label>
				<input name="bezinostancia" class="easyui-validatebox">
			</div>
            <div class="fitem">
				<label>Количество:</label>
				<input name="kolichestvo" class="easyui-validatebox">
			</div>
            <div class="fitem">
				<label>Километраж:</label>
				<input name="kilometraj" class="easyui-validatebox">
			</div>
            <div class="fitem">
				<label>Тонаж:</label>
				<input name="tonaj" class="easyui-validatebox">
			</div>
            <div class="fitem">
				<label>Фулиран:</label>
				<input name="full" class="easyui-validatebox">
			</div>
		</form>
	</div>
	<div id="dlg-buttons">
		<a href="#" class="easyui-linkbutton" iconCls="icon-ok" onClick="saveZarejdane()">Запис</a>
		<a href="#" class="easyui-linkbutton" iconCls="icon-cancel" onClick="javascript:$('#dlg').dialog('close')">Отказ</a>
	</div>
</body>
Това е кода на самият скрипт
Код:
<?php
	include 'conn.php';
	
	$page = isset($_POST['page']) ? intval($_POST['page']) : 1;
	$rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10;
	$itemid = isset($_POST['vlekach_number']) ? mysql_real_escape_string($_POST['vlekach_number']) : '';
	
	$offset = ($page-1)*$rows;
	
	$result = array();
	
	$where = "vlekach like '$itemid%' ";
	mysql_query("SET CHARACTER SET utf8");
	$rs = mysql_query("select count(*) from zarejdania where " . $where);
	$row = mysql_fetch_row($rs);
	$result["total"] = $row[0];
	
	$rs = mysql_query("select * from zarejdania where " . $where . " limit $offset,$rows");
	
	$items = array();
	while($row = mysql_fetch_object($rs)){
		array_push($items, $row);
	}
	$result["rows"] = $items;
	
	echo json_encode($result);
?>
 
изпълни същата заявка в phpmyadmin и виж дали ще ти върне същото...


select * from zarejdania where vlekach like 'PB 0031 PK%';

принципно би трябвало да работи. като въведеш PB 0 се изпраща заявка ...like 'PB 0%' и ще излезнат всички, които започват с дадения стринг и така нататък...
:roll:
 
Да но тази стойност в този инпут я взимам със $_ГЕТ което ми връща стойност която взима от адрес бара, след това тази стойност ако я дам поле = $нещо не ми се показват резултати, а когато е Like тогава пък излизат всички който съдържат PB ..
 
Аз виждам, че взимаш $itemid чрез $_POST :roll:

Сложно ли ще е да преправиш навсякъде формАта на номерата? Сам виждаш колко проблеми създава.

Но ако не искаш - в предните теми ти бяха предложили urlencode да слагаш на номера, когато го задаваш и ще стане нещо от рода на PB%200031... след това urldecode :roll:
 
хм това е интересно ама така и не можах да разбера къде да го сложа това в смисъл че дори и преправен одеве пробвах само с един номер като сменя и пак не ми се получи за това си мисля че проблема е другаде
 
Knoppix_ каза:
хм това е интересно ама така и не можах да разбера къде да го сложа това в смисъл че дори и преправен одеве пробвах само с един номер като сменя и пак не ми се получи за това си мисля че проблема е другаде

Ако ръчно напишеш в адресбара PB0031PK - без интервали, ще сработи ли? Аз ще ти отговоря: няма да сработи, защото $itemid го взимаш с $_POST !

input-a винаги предава точната стойност, дори ако напишеш 3 интервала, ще изпратиш 3 интервала.
 
До тук добре, само че след като съм го променил в базата данни на такъв израз без интервали след като съм дал линка да е без интервали, инпута си излиза без интервали и при положение че дам че поле = промениливата не ми излиза резултат ето това ми е интересно
И тогава решението на проблема какво е че нещо вече се обърках тотално
 
Аз не разбрах какъв ти е проблема. Започнахме от input поле, преминахме през $_POST и стигнахме до $_GET. :roll:
 
Така като направя $neshto =$_GET[kamion] от адрес бара скрипта спира да работи, за това реших да направя едно скрито поле в началото което съм си кръстил влекач номер, така от там с пост зимам стойноста на полето и го вмъквам във заявката, слет като го вмъкна обаче в заявката не ми излиза точна стойност т.е излизат ми пак всички записи в таблицата
 
Добре де с това урл декоде как ще стане
там където давам че в инпут value = $_GET['kamion'] ли трябва да го сложа или там където казвам че променливата е равна $_POST ...
 
как задаваш GET параметъра kamion ? Там, където го задаваш, слагаш urlencode. А най-добре промени формАта да е без интервали - най-малкото ще спестиш 2 символа.
 
Нали това се оптивам да обесня от одеве че реално в момента никъде няма интервали и когато изпълня заявката излизат по абсолютно същият начин
за това питах за това урл енкоде
 
Ако изпълниш заявката в phpmyadmin както те посъветвах, пак ли излиза? Дай я тая заявка, която изпълняваш.
 
$where = " `vlekach` LIKE '$itemid%' ";

mysql_query("select count(*) from zarejdania where " . $where);

mysql_query("select * from zarejdania where " . $where . " limit $offset,$rows");

а във phpmyadmin-a излиза както трябва дори като са разделени и дам PB 0031 PK Изкарва само тези резултати

Това е от PHP admina
Показване на записи 0 - 29 ( 98 общо, Заявката отне 0.0012 секунди) [ID: 2 - 31] записите са точно 98 .. ей това не мога да разбера защо е
 
Ако една и съща заявка в phpmyadmin работи а в скрипта не, без да дава грешки php/mysql (трябва да си сигурен) при мен се получи подобно нещо заради кирилицата, тоест символите които търсех бяха на кирилица а сървърът не беше конфигуриран , като го качих на платения хост се оправи.
Друг вариант е вместо mysql_qery(" ...");
му дай echo "....";
за да видиш в страницата , как изглежда заявйката, копираш я в phpmyadmin и виж какво ще стане.
 
Виждам втора твоя тема за въпросните празни места.

Въпрос: Защо не замениш space символите с терета в базата данни и не заменяш местата с терета когато присвояваш стойността на $_GET['kamion'] към $itemid?

1. Как да замениш символите в таблицата(направи backup преди това):

[sql]UPDATE zarejdaniq SET vlekach = REPLACE(vlekach, ' ', '-');[/sql]

2. След това:

PHP:
$itemid = str_replace(' ', '-', $_GET['kamion']);

3. И накрая:

PHP:
$where = " `vlekach` = '$itemid' ";

mysql_query("select count(*) from zarejdania where " . $where);

mysql_query("select * from zarejdania where " . $where . " limit $offset,$rows");
 

Горе