Toto vlákno bylo označeno za vyřešené.
Ahoj nejsem programátor, ale nějak jsem si řekl, že to dokážu ... nakonec se obracím na vás :)
Mám cyklus do kterého potřebuji udělat další, který mi vylistuje všechny položky dané objednávky. Teď to vypíše jen tu první.
$query = "SELECT * FROM `orders__order`, `orders__items` WHERE `orders_flag` =3 LIMIT 0 , 10";
$database->query = $query;
$database->set_query();
// ob_start();
if ($database->result) {
$i = 1;
while ($row = mysql_fetch_object($database->result)) {
echo '<div class="container">
<h2>Invoice for purchase #';echo $row->number; echo '</h2>
<hr>
<table class="table table-condensed">
// ZAČÁTEK tohle potřebuji vylistovat tak ať tam jsou všechny položky
<tr>
<td>';echo $row->name;echo '</td>
<td class="text-center">';echo $row->moc;echo ' Kč</td>
<td class="text-center">';echo $row->amount;echo '</td>
<td class="text-right">';echo $sub = round($row->moc * ($row->amount));echo ' Kč</td>
</tr>
// KONEC listu
</table>
</div>
$i++;
}
}
;
Díky moc za radu, už na tom trávím celej víkend a pořád nějaká chyba nebo tam těch položek mám nějak moc :)
Stejně v tom selektu mám něco špatně. Jak na to koukám, že sice to vypíše první položku, ale na všech objednávkách je stejná. :(
Ahoj tak mám ještě jeden snad poslední problém.
Objednávky se generují do PDF ... vygeneruje to 10 objednávek vč. čísla v názvu PDF jen obsah všech 10ti objednávek je naplněn obsahem 1 objednávky.
$query = "SELECT * FROM `orders__order` WHERE `orders_flag` =3 LIMIT 0, 10";
$database->query = $query;
$database->set_query();
if ($database->result) {
ob_start();
$i = 1;
while ($row = mysql_fetch_object($database->result)) {
OBJEDNÁVKY
';
$html=ob_get_contents();
$mpdf->WriteHTML($stylesheet,1);
$mpdf->WriteHTML($html,2);
$name = _ABS_PATH."temp/order_".$row->number.'.pdf';
$mpdf->Output($name,"F");
ob_end_clean();
ob_end_flush();
$i++;
}
}
;
Nevidíte kde by mohla být chyba? Díky moc za tip.
peter ~ Anonymní uživatel~ 3989 příspěvků
Pulka kodu tam asi chybi, zkus neco jako jsfiddle, pokud se neprobouras s tim pres zdejsi filtry.
Z toho, co tam je, bys soudil, ze to je nedodelane, ze to vubec nejede. Kdo vi, zda jsou spravne zavorky pro while cyklus a kdo vi, co jde do promenne $html.
Celé to vypadá takhle ...
Vypíše to co má
Vygeneruje to 10 PDF
Jen v každém PDF je obsah první objednávky...
<div class="container">
<?php
define('_INDEX_CALL', true);
require("config.php");
require_once(_ABS_PATH."mpdf60/mpdf.php");
$mpdf = new mPDF('utf-8','A4');
$mpdf->useOnlyCoreFonts = true;
$mpdf->SetDisplayMode('fullpage');
//$mpdf->SetAutoFont(0);
// CSS soubor
$stylesheet = file_get_contents(_ABS_PATH.'css/bootstrap.min.css');
require_once(_ABS_PATH . "system/lib/database.class.php");
$database = new database($host, $user, $db_name, $password);
$database_obj = new database($host, $user, $db_name, $password);
$query = "SELECT * FROM `orders__order` WHERE `orders_flag` =3 LIMIT 0, 10";
$database->query = $query;
$database->set_query();
if ($database->result) {
ob_start();
$i = 1;
while ($row = mysql_fetch_object($database->result)) {
echo '<div class="container">
<div class="row">
<div class="col-xs-12">
<div class="text-center">
<h2>Invoice for purchase #';echo $row->number; echo ' / date ';echo $row->updated; echo '</h2>
</div>
<hr>
<div class="row">
<div class="col-md-12 col-xs-3 col-lg-4 pull-left">
<div class="panel panel-default height">
<div class="panel-heading">Billing Details</div>
<div class="panel-body">
<strong>xxx</strong><br>
xxx<br>
xxx<br>
Czech republic<br>
<strong>IC: xxx<br>DIC: xxx</strong><br>
</div>
</div>
</div>
<div class="col-xs-12 col-xs-4 col-lg-4 print-container">
<div class="panel panel-default height">
<div class="panel-heading">Payment Information</div>
<div class="panel-body">
<strong>Payment method:</strong> ';echo $row->payment_name; echo '<br>
<strong>Bank:</strong> UniCredit Bank, a. s.<br>
<strong>Address of bank:</strong> xxx<br><br>
<strong>IBAN:</strong> xxx<br>
<strong>SWIFT:</strong> xxx<br>
</div>
</div>
</div>
<div class="col-xs-12 col-xs-3 col-lg-4 pull-right">
<div class="panel panel-default height">
<div class="panel-heading">Shipping Address</div>
<div class="panel-body">
<strong>';echo $row->fak_name_surname; echo '</strong><br>
';echo $row->fak_street_cp; echo '<br>
';echo $row->fak_town; echo '<br>
';echo $row->fak_psc; echo '<br>
';echo $row->fak_country; echo '<br>
<strong>Phone:</strong> ';echo $row->fak_telephone; echo '
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="text-center"><strong>Order summary</strong></h3>
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-condensed">
<thead>
<tr>
<td><strong>Item Name</strong></td>
<td class="text-center"><strong>Item Price</strong></td>
<td class="text-center"><strong>Item Quantity</strong></td>
<td class="text-right"><strong>Total</strong></td>
</tr>
</thead>
<tbody>';
$i = 1;
$query_obj = "SELECT * FROM `orders__items` WHERE `order_id` =" . $row->id;
$database_obj->query = $query_obj;
$database_obj->set_query();
while ($obj = mysql_fetch_object($database_obj->result)) {
$price_dph = $obj->price * (1 + $obj->shop_vat / 100);
echo '
<tr>
<td class="line">';echo $obj->name;echo '</td>
<td class="text-center line">';echo round($price_dph);echo ' Eur</td>
<td class="text-center line">';echo $obj->amount;echo '</td>
<td class="text-right line">';echo $sub = round($price_dph * ($obj->amount));echo ' Eur</td>
</tr>';
$i++;
}
;
echo '<tr>
<td class="highrow bline"></td>
<td class="highrow bline"></td>
<td class="highrow bline text-center"><strong>Subtotal</strong></td>
<td class="highrow bline text-right">';echo $subtotal = $row->price - ($row->payment_price + $row->delivery_price); echo ' Eur</td>
</tr>
<tr>
<td class="highrow"></td>
<td class="highrow"></td>
<td class="highrow text-center"><strong>Fees for payment</strong></td>
<td class="highrow text-right">';echo $row->payment_price; echo ' Eur</td>
</tr>
<tr>
<td class="emptyrow"></td>
<td class="emptyrow"></td>
<td class="emptyrow text-center"><strong>Shipping</strong></td>
<td class="emptyrow text-right">';echo $row->delivery_price; echo ' Eur</td>
</tr>
<tr>
<td class="emptyrow"><i class="fa fa-barcode iconbig"></i></td>
<td class="emptyrow"></td>
<td class="emptyrow text-center"><strong>Total</strong></td>
<td class="emptyrow text-right">';echo $row->price; echo ' Eur</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
';
$html=ob_get_contents();
ob_end_clean();
$mpdf->WriteHTML($stylesheet,1);
$mpdf->WriteHTML($html,2);
$name = _ABS_PATH."temp/order_".$row->number.'.pdf';
$mpdf->Output($name,"F");
$i++;
}
}
;
ob_end_flush();
?>
</div>
peter ~ Anonymní uživatel~ 3989 příspěvků
Zjednodusil jsem to. Sis na sablony mel udelat funkci, te predat $row, abys to mel prehlednejsi. Tak schvalne, jestli tam ted vidis to, co vidim ja?
<?php
define('_INDEX_CALL', true);
require("config.php");
require_once(_ABS_PATH . "mpdf60/mpdf.php");
$mpdf = new mPDF('utf-8', 'A4');
$mpdf->useOnlyCoreFonts = true;
$mpdf->SetDisplayMode('fullpage');
//$mpdf->SetAutoFont(0);
// CSS soubor
$stylesheet = file_get_contents(_ABS_PATH . 'css/bootstrap.min.css');
require_once(_ABS_PATH . "system/lib/database.class.php");
$database = new database($host, $user, $db_name, $password);
$database_obj = new database($host, $user, $db_name, $password);
$query = "SELECT * FROM `orders__order` WHERE `orders_flag` =3 LIMIT 0, 10";
$database->query = $query;
$database->set_query();
if ($database->result) {
ob_start();
$i = 1;
while ($row = mysql_fetch_object($database->result)) {
echo 'x';
echo $row->number;
echo 'x';
echo $row->updated;
echo 'x';
echo $row->payment_name;
echo 'x';
echo $row->fak_name_surname;
echo 'x';
echo $row->fak_street_cp;
echo 'x';
echo $row->fak_town;
echo 'x';
echo $row->fak_psc;
echo 'x';
echo $row->fak_country;
echo 'x';
echo $row->fak_telephone;
echo 'x';
$i = 1;
$query_obj = "SELECT * FROM `orders__items` WHERE `order_id` =" . $row->id;
$database_obj->query = $query_obj;
$database_obj->set_query();
while ($obj = mysql_fetch_object($database_obj->result)) {
$price_dph = $obj->price * (1 + $obj->shop_vat / 100);
echo 'y';
echo $obj->name;
echo 'y';
echo round($price_dph);
echo 'y';
echo $obj->amount;
echo 'y';
echo $sub = round($price_dph * ($obj->amount)); // kdo vi, co to vypise...
echo 'y';
$i++;
}
echo 'z';
echo $subtotal = $row->price - ($row->payment_price + $row->delivery_price);
echo 'z';
echo $row->payment_price;
echo 'z';
echo $row->delivery_price;
echo 'z';
echo $row->price;
echo 'z';
$html = ob_get_contents();
ob_end_clean();
$mpdf->WriteHTML($stylesheet, 1);
$mpdf->WriteHTML($html, 2);
$name = _ABS_PATH . "temp/order_" . $row->number . '.pdf';
$mpdf->Output($name, "F");
$i++;
}
}
ob_end_flush();
?>
Vypíše to to stejné co mě vč. těch PDFek kde je v každném to stejné, ale už jsem to vyřešil.
Jedna změna je tady
if ($database->result) {
$i = 1;
while ($row = mysql_fetch_object($database->result)) {
ob_start();
echo '<div class="container">
A druhá ta nejpodstatnější je u výpisu položek
$a = 1;
$query_obj = "SELECT * FROM `orders__items` WHERE `order_id` =" . $row->id;
...
$a++;
}
Změnil jsem to z $i na $a protože $i používám nahoře.
Vše ostatní zůstalo a chodí to jak hodinky.
Ale jinak díky za tip určitě to jde ještě zoptimalizovat.
peter ~ Anonymní uživatel~ 3989 příspěvků
Jo, presne to jsi mel videt :) Ja teda pouzivam i,j,k,... male L spis ne, protoze vypada jako i a 1. "i" jako index nebo osovy kriz x,y,z, i,j,k.
#8 peter
Čtvrtý level zanoření cyklu by se v programu stejně neměl vyskytovat (už třetí je obvykle na pováženou), takže v mých programech na "l" či "L" řada nikdy nepřijde.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků
Přidej příspěvek
Uživatelé prohlížející si toto vlákno Uživatelé on-line: 0 registrovaných, 23 hostů