У меня есть сканер штрих-кода Datalogic Falcon 4410. У меня есть HTML-форма для добавления продуктов в базу данных.
Вот моя простая форма:
<form id="formprod" class="form-horizontal" method="post" action="url">
<fieldset>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="textinput">Référence</label>
<div class="col-md-4">
<input id="textinput" name="reference" type="text" placeholder="placeholder" class="form-control input-md">
</div>
</div>
<!-- Button (Double) -->
<div class="form-group">
<div class="col-md-8">
<input type="submit" id="button1id" name="submit" value="OK" class="btn btn-success"/>
<input type="reset" id="button2id" name="button2id" value="RESET" class="btn btn-danger"/>
</div>
</div>
</fieldset>
</form>
Итак, в сканере штрих-кода, если я открою html-страницу, напишу с помощью виртуальной клавиатуры на входе и отправлю с помощью кнопки отправки: все работает.
Но если я сканирую штрих-код, форма автоматически отправляется, запись сохраняется, но поле ссылки в БД пустое.
Мой код PHP:
<?php
if(isset($_POST["reference"])){
$hostname='****';
$username='****';
$password='*****';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=name",$username,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO product (reference)
VALUES ('".$_POST["reference"]."')";
if ($dbh->query($sql)) {
echo 'Done!';
}
else{
echo 'Error!';
}
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
У тебя есть идея?
Благодарю.
PS: он не оптимизирован для SQL-инъекций, например, это будет сделано, когда запись будет работать
РЕДАКТИРОВАТЬ: РАБОТАТЬ ПОСЛЕ ПЕРЕЗАГРУЗКИ.
Большинство сканеров штрих-кода, которые я использовал в библиотеках, отправляют возврат каретки после данных, которые они сканировали. Часто есть способ заявить, что вы не хотите CR в настройках сканера. Проверьте сайт производителя.
Других решений пока нет …