mysql_fetch_array получает только первый результат, даже с циклом while

0

Я пытаюсь напечатать несколько строк 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 поскольку я просто тестирую что-то на старом проекте

  • 1
    $fetch[product_name] должно быть $fetch['product_name'] (это дополнительное замечание, оно не отвечает на вопрос.)
  • 1
    Чтобы найти ошибки и предупреждения, поставьте error_reporting(E_ALL|E_NOTICE); in front of the script
Показать ещё 9 комментариев
Теги:
arrays
while-loop

1 ответ

2
Лучший ответ

На основе руководства 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);

Примечание: - Добавьте остальную часть кода, как есть.

  • 0
    теперь работает нормально! большое спасибо
  • 0
    @SophieBernard рада помочь вам :) :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню