Hi have updated to the latest version and all seems ok so far but on the generation of PDF when viewing in PDF program it is showing the below php errors on some of the products we have added to an invoie, is there a way to fix this
A PHP Error was encountered
Severity: 8192
Message: nl2br(): Passing null to parameter #1 ($string) of type string is deprecated
Filename: pdf/InvoicePlane - overdue.php
Line Number: 147
Backtrace:
File:
/home/wbdn/public_html/ap.ppd/application/views/invoice_templates/pdf/InvoicePlane
- overdue.php
Line: 147
Function: nl2br
File: /home/wbdn/public_html/ap.ppd/application/third_party/MX/Loader.php
Line: 474
Function: include
File: /home/wbdn/public_html/ap.ppd/application/third_party/MX/Loader.php
Line: 425
Function: _ci_load
File: /home/wbdn/public_html/ap.ppd/application/helpers/pdf_helper.php
Line: 102
Function: view
File:
/home/wbdn/public_html/ap.ppd/application/modules/invoices/controllers/Invoices.php
Line: 272
Function: generate_invoice_pdf
File: /home/wbdn/public_html/ap.ppd/index.php
Line: 329
Function: require_once
Open up that file and scroll to line 147
Copy / paste 5 lines above and 5 lines below that line 147 in this thread.
I think youāre getting the error, because you have debug modus turned on?
Hi ive gone to that file and this is the code 5 lines above & below, there is no debug turned on as far as im aware, this error only shows on old invoices when the PDF is generated and you look at the PDF, when new invoices are created with the same product added and generate the PDF it does not show this error on the PDF
<?php
foreach ($items as $item) { ?>
<tr>
<td><?php _htmlsc($item->item_name); ?></td>
<td><?php echo nl2br(htmlsc($item->item_description)); ?></td>
<td class="text-right">
<?php echo format_amount($item->item_quantity); ?>
<?php if ($item->item_product_unit) : ?>
<br>
<small><?php _htmlsc($item->item_product_unit); ?></small>
1 Like
The error comes, because $item->item_description
is empty.
Sending an empty value to nl2br
gives this message
right okay yes that makes sense, thank you for your help
ive looked within the database and can see its blank, i can add the information required but there is alot.
I dont know alot about phpadmin but would anyone know of a way to update the item_description with some text but only if item_name matches a certain word or item_id matches certain number ?
1 Like
Thatās a difficult one!
Try this first: (it updates the item->description with a space, so that nl2br wonāt break), it updates it for all lines, so be careful if you want this and if youāre sure the description isnāt filled anywhere:
update ip_items set item_description = ' '
The other ones are variants on top of above one:
update ip_items set item_description = 'some text lorem ipsum' where name like '%InvoicePlane%'
and
update ip_items set item_description = 'some text lorem ipsum' where item_id in (1,2,3,4,5)
You can also think of variations on above code.
The %InvoicePlane%, thatās āwildcardsā on both ends of āInvoicePlaneā you can also place the wildcards on either end.
The item_id in (1,2,3,4,5) can also be:
item_id like ā1313%ā
Think of what you really like, write it out, the update queries will show up after that.
Hi thanks for your help im just looking at which one is best
so when i do a search in ip_invoice_items for āManagement Feeā as theses are the ones where the description is missing and showing error on the PDF and only need to update them ones and the search brings back 1252 records.
so i try this code below but the simulate query only brings back 94 records, see attach screen shot of the database tables as can see the item_description is NULL
āupdate ip_invoice_items set item_description = āManagement Feeā where item_product_id in (14)ā
1 Like
Ok, when i update something, i always want to make a select first, just to see what iām updating.
Compare these 2, see which one you like:
select item_product_id, item_name, item_description from ip_invoice_items where item_product_id in (14)
With above select you can select product_id 14,15,16 you name it. Great option!
select item_product_id, item_name, item_description from ip_invoice_items where item_name = āManagement Feeā
From your question I think you want above query, but itās less precise. If you gave another item besides product_id 14 in the table the name āManagement Feeā that will get that description as well.
Summary:
If product_name is āManagement Feeā I want my description to be āManagement Feeā, then your update statement would be:
update ip_invoice_items set item_description = āManagement Feeā where item_name='Management Fee'
Make your select first, just as a precaution
simulate works and can confirm it shows the correct ones, when trying to command you mention to execute it comes back with
" You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near āFeeā where item_name=āManagement Feeāā at line 1"
Paste the SQL query that gave that error, there is something wrong near āFeeā, but that occurs two times in that SQL query, so i need to see it.
Hi it was the command above you mention in summary
update ip_invoice_items set item_description = āManagement Feeā where item_name='Management Fee'
i was looking at it wrong, teach me to not look when tired, think managed to get the specific ones now updated using below code
update `ip_invoice_items` set `item_description` = 'Management Fee' where `ip_invoice_items`.`item_product_id` = 14;
1 Like
There is a difference between " ` " and " ā ", if that makes sense.
The " ` " you put around the fields, for example
`item_description`
The " ā " you put around some values you select, the result of a āwhereā.
I donāt know if the query i quoted worked for you, maybe phpmyadmin is smart enough