Я пытаюсь напечатать несколько строк mysql, используя mysql_fetch_array с циклом while, но он печатает только первый результат, в то время как моя таблица содержит многие из них с правильными условиями
$queryString="SELECT * FROM items WHERE order_id='".$order_id."' and confirm_order='0' ORDER BY id";
$myquery=mysql_query($queryString);
$handle = printer_open("POS");
printer_start_doc($handle, "My Document");
printer_start_page($handle);
$font = printer_create_font("Arial", 35, 20, 300, false, false, false, 0);
printer_select_font($handle, $font);
while ($fetch = mysql_fetch_array($myquery)) {
$product=$fetch[product_name];
$type=$fetch[type];
$q=$fetch[item_quantity];
$comment=$fetch[comment];
$tex="".$q." ".$type." ".$comment." ".$product."";
printer_draw_text($handle, $tex, 10, 10);
}
printer_delete_font($font);
printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
Примечание: - и я не могу использовать mysqli
или PDO
поскольку я просто тестирую что-то на старом проекте
На основе руководства printer_draw_text
Функция рисует текст в позиции x, y, используя выбранный шрифт.
В вашем коде x,y
значения x,y
равны 10,10. Поэтому каждый раз новый текст написан на том же посту. Это означает, что предыдущий, написанный новым, и только одно значение, вырисовывается только одно значение.
Существует два возможных решения:
1. Изменить значения x, y после каждой итерации.
$counter = 10; //add a number counter
while ($fetch = mysql_fetch_assoc($myquery)) {//use assoc for lighter array iteration
$product=$fetch['product_name']; //use quotes around indexes, best practise
$type=$fetch['type'];
$q=$fetch['item_quantity'];
$comment=$fetch['comment'];
$tex="$q $type $comment $product";//remove unncessary quotes
printer_draw_text($handle, $tex, $counter, $counter); // use that number counter as x,y position
$counter+10;//in each iteration chnage the value by adding 10
}
2.Or Создавайте новые страницы на каждой итерации: -
while ($fetch = mysql_fetch_assoc($myquery)) {//use assoc for lighter array iteration
$product=$fetch['product_name'];//use quotes around indexes, best practise
$type=$fetch['type'];
$q=$fetch['item_quantity'];
$comment=$fetch['comment'];
$tex="$q $type $comment $product";//remove unncessary quotes
printer_draw_text($handle, $tex, 10, 10);
printer_end_page($handle); //end page on each iteration
}
printer_delete_font($font);
printer_end_doc($handle);
printer_close($handle);
Примечание: - Добавьте остальную часть кода, как есть.
$fetch[product_name]
должно быть$fetch['product_name']
(это дополнительное замечание, оно не отвечает на вопрос.)error_reporting(E_ALL|E_NOTICE); in front of the script