Hello everyone,
I've been experimenting with checking for errors in data inserted into a table
using an html form. The main page displays the result of a select * from
the_table at the top of the page, with the form for inserting the data beneath.
The SQL for the insert occurs on a
Tris,
make the the field, id_number, an auto_increment field.
[EMAIL PROTECTED] on 07/09/2003 07:44:34
AM
To: [EMAIL PROTECTED]
cc:(bcc: David P. Giragosian/MDACC)
Subject: [PHP-DB] Auto inc in MySQL
I know I'll get flamed for askign such a simple question, but here goes...
Howdy everyone,
I'm in the process of setting up a new development environment with Apache
1.3.27 and PHP 4.3.2 on a Win2k machine with SP2.
I'm getting an error message from apache saying that it can't find the
c:/php/sapi/php4apache.dll . However, that is indeed where the dll is located.
FYI:
OOPS!!
I dug around in the install.txt file in PHP, and found that php4ts.dll needs to
be relocated to either where apache.exe resides, where
php4apache.dll resides, or in the windows system directory. All now works as
expected.
David
[EMAIL PROTECTED] on 07/14/2003 11:35:42
AM
To:
Good Morning All ,
Has anyone successfully implemented PDF functionality within their PHP / MySQL
projects? My needs are very basic, so I'd like to use something like ezPDF
creation to avoid buying a license. But I haven't yet got ezPDF to work
correctly. Set up is Win2k, PHP 4.3.2, Apache
Good day all,
Anyone have an idea why I receive a call to undefined function error message
when I use the imagetypes() function on PHP versions 4.2.3 and 4.3.2 ??
The code to test for PNG image handling is right from the manual...
?php
if ( imagetypes() IMG_PNG)
{
echo PNG Support
Ah,
you know, when I removed the semi-colon and restarted apache, I got an error
saying that the module couldn't be found or started...
Wonder why it is not available. I downloaded PHP 4.3.2 php.net just last week.
BTW, I'm on Win 2k, also.
Any ideas?
[EMAIL PROTECTED] on 07/28/2003
thanks,
I was gonna repost to let everyone know that I was being a dummy because I
hadn't indicated in php.ini where the extensions directory was located. I added
the path, and uncommented the extension=php_gd2.dll, and all is ok in
php-land. Thanks, again
[EMAIL PROTECTED] on 07/28/2003
Howdy Listers,
Can someone explain to me the mechanism by which SID acquires a value?
For example,
$FOO = SID;
echo $FOO;
produces something like PHPSESSID=ade4055eef947f1a00cdb280470e859b when
IE is first opened and the page is loaded,
whereas reloading of the page produces an empty string
Howdy Listers,
Can someone explain to me the mechanism by which SID acquires a value?
For example,
$FOO = SID;
echo $FOO;
produces something like PHPSESSID=ade4055eef947f1a00cdb280470e859b when
IE is first opened and the page is loaded,
whereas reloading of the page produces an empty string
Yes, easily. Use the 'if' conditional in mysql...
select if(col_name = 1, 'yes', 'no') from table_name;
David
Shaun [EMAIL PROTECTED]
09/03/2003 10:32 AM
To:
[EMAIL PROTECTED]
cc:
Subject:
[PHP-DB] Viewing Data From MySQL
Hi,
Is it possible to change the way a query is
IMHO I would be extremely reluctant to open any link sent to this list.
The last time I did so, not only did it connect me to a porno site, it
created a link in my favorites folder, causing me to have a lot of
explaining to do ( as I access this list through my place of employment ).
So,
Good Morning PHP-DB Listers,
I have a PHP GUI in which a select box gets populated by a query of a
MySQL DB for all CD's by all artists when the page is first opened. I am
now trying to implement
the same query but with a WHERE clause that filters the returned CD's to
be displayed in the same
Thank you CPT John W. Holmes. I'll give it a try.
David
Just wondering...
Is there a limit to the number of session variables one can create/store ?
Or is the limit imposed by the size of the file ?
I'm on a Windows 2000 machine, and the variables are being saved in
notepad.
David
Define 'too much' please...
David
CPT John W. Holmes [EMAIL PROTECTED]
09/24/2003 10:29 AM
Please respond to CPT John W. Holmes
To:
[EMAIL PROTECTED], [EMAIL PROTECTED]
cc:
Subject:
Re: [PHP-DB] Storing Session Variables
From: [EMAIL PROTECTED]
Is there a limit to the number
Get serious for a second here... Why not explain why you're asking this
question? If you're going to store a huge amount of data in a session,
explain why.
OK. Today I'm working on a prototype GUI for a medical setting ( the
production GUI will be done in C++, I believe). The GUI must keep
Are you asking for help with the query, or with having the query populate
a select box? If you are planning to be able to manually enter search
criteria, then you do not want a select box, you want a text type input.
David
Andrew R [EMAIL PROTECTED]
09/29/2003 05:01 PM
To:
[EMAIL
Good Day All,
I have an intranet GUI that allows users to select, insert, and update
data in a db. When data is entered into one of the screens, a C program
is called which does some calculations and then creates a PDF file on the
server. I want the user to then see the PDF file opened on
OK. So if I understand corectly, a link with the path to the file on the
server will work. How do I have a new browser opened displaying the PDF
more or less automatically, ie, without the user clicking anything? Is
this a Header() function?
David
Richard and Karen,
Thanks for your help this morning with my PDF question. I created the link
dynamically as you suggested.
In retrospect, I also think that I was seeking a javascript solution,
i.e., now that the PDF file exists on the web server :
?php
$openPDF = SCRIPT
Hi Erik,
I think you can use ** $line['cases.id'] ** if you individually identify each column
selected, rather than using the * symbol.
David
Erik Björling [EMAIL PROTECTED]
10/16/2003 10:57 AM
To:
[EMAIL PROTECTED]
cc:
Subject:
[PHP-DB] Retreive data from multiple columns
Hello All,
I'm familiar and comfortable with selecting and utilizing one record at a
time in my php-mysql gui / application. But now I'm faced with having to
select one field from 24 records and assign the results to 24 different
variables.
Table structure:
CONFIG
Thanks for your kind reply, John. I've not used the variable variable
technique before but do recall reading about it in the PHP Bible.
I'll give it a try.
David
John Krewson [EMAIL PROTECTED]
11/24/2003 01:33 PM
To:
[EMAIL PROTECTED]
cc:
Subject:
Re: [PHP-DB] Extracting
I'm getting the correct output from the following query:
$selectLabelQuery = SELECT short_label
FROM config
ORDER BY meter_num;
$resultSelectLabelQuery = mysql_query($selectLabelQuery) or
Howdy all,
I have been using PHP, MySQL and Apache on Win2K for about a year now and
have recently begun the process of switching development to Linux --
RH9.0.
Yesterday (by using the excellent reference by Patrick Harper,
http://www.internetsecurityguru.com/documents/snort_acid_rh9.pdf ) I
Good day all,
This may be easier than I'm imagining...
The question:
When using the header(location: ...) method for inserting or updating some
$_POST['variable']'s into a MySQL db (preventing repeat insertions or
updates when 'refreshing', etc...), is it possible to return a
Regarding...
-- $query = CREATE TABLE staff (
-- staffid INT(3) NOT NULL AUTO_INCREMENT UNSIGNED,
-- name VARCHAR(255) NOT NULL,
-- login VARCHAR(10) NOT NULL,
-- password VARCHAR(8) NOT NULL,
-- picaddy VARCHAR(255) NOT NULL,
-- email VARCHAR(255) NOT NULL,
-- staffbio TEXT NOT NULL,
--
Hello PHP-DB listers,
I've a PHP, MySQL Web Page script that branches according to browser
(e.g., MSIE, or Mozilla ) and which uses a small number of session
variables. I've noticed that when connecting through Explorer, for each
browser / page instance opened on the same machine, there is a
Let's see if I'm understanding you correctly. You want to have a form with
2 or more popup menus, where a choice of `country` in the first menu then
populates a second popup menu with the `states` located in that country?
If this is what you're asking, I do this all the time using select (or
Good Morning,
This post is somewhat OT -- please forgive me. I've spent over 3 days
trying to get sendmail configured and I've lost some patience and
reasoning ability in the process.
I have a Linux (RH9), Apache 2.0.48, PHP 4.3.4, MySQL GUI that creates a
PDF document on the server for web
Jason,
Thanks for the suggestions.
In regard to your question, no. A simple mail() invocation without the
attachment does not work, hence my sense that the problem is the sendmail
config.
I'm in the process of checking the logs and will repost if anything looks
promising.
David
Jason
Howdy Listers,
The Background:
I am making dynamic, color-coded, png images of the floor plan of a
building and displaying them in a browser. Numerous radioactivity sensors
throughout the building send their readings to a MySQL dB, and the web
page queries the dB, and depending on the
Thanks, Paul, you got it right. I was trying to do it all in one
file/page. I'll have a go at your suggestion.
dave
I might be reading this wrong, but I do not think you should put your
meta refresh request in the png creation script. It should be in the
html body script.
Index.php
Thanks so much but I am so new to all this so need more explanation
please.
I think at this point I don't mind the round trip to the server side
till I
find a better way. But for now I think I have what you are suggesting
but
then why my echo is not retuning anything :
form name=fcountry
Here is my code now, but I am getting a parsing error
Parse error: parse error, unexpected $end
$db_table = 'log';
$conn = mysql_connect($db_host,$db_user,$db_pass);
if ($conn == true) {
$insert = INSERT INTO $db_table SET ;
$insert .= Base = ' . $row-Base . ', ;
$insert .=
Howdy All,
I've PHP / Apache / MySQL running on a Linux machine where a GUI allows an
administrator to track changes made to computers on our intranet. I've
been asked to add an 'history' button so that all changes made to one or
more computers can be put into a table, displayed on client
Thanks for responding, Torsten. If I'm understanding your suggestion, then
what happens where the data from the dB already has a ; (semi-colon) in
it? Wouldn't this corrupt the import into excel?
dave
My question is whether there might be a more direct way to get the dB
data
into excel on
There definitely are colons, and there is a 'comments' field and
semi-colons may appear there. However I think I will include a note in the
help file for the admin to avoid using semi-colons in this field. Seems
the best solution. And you are right: A .csv is seen as an excel file, so
opening
Thanks, Christian, and all who responded. I think this is almost exactly
as it will work. The problem with using some kind of MySQL frontend is
that this would involve some knowledge of dB's and SQL (can't be certain
of this), and that it would be additional steps. For example, the GUI
already
Wow, thanks. I'm gonna give this a try right now.
dave
Mark Weinstock at [EMAIL PROTECTED] recently wrote...
Maybe I'm missing something (quite possible), but you can make the
work happen autogically by using http headers.
header(Content-type: application/octet-stream);
I've used the header function before for redirection with success, but in
the current situation I'm not sure where to put the 2 calls to it. I'm
making the web page on the fly -- querying the dB, writing out the string
including html tags and the query result, using fopen to create the file,
Howdy All,
If one were to use mysql_unbuffered_query() instead of mysql_query(), are
calls to mysql_free_result still needed? or valid? I'm asking because when
I make this change in one of my scripts, mysql_free_result throws a
warning: 'xxx' is not a valid result resource... The application
Jeff,
From my recent readings, and others please correct me here, I think you
need to first declare the variables inside the Class, i.e., var
$srvr['etime'] = array();
var $srvr['etime']['server'];
-- then assign a value to them:
var $srvr['etime']['server'] = '27.22.1.5:1433';
In other
I'd bet I'm in the minority here, but I don't mind at all the occasional,
OT post. Hell, most of life seems OT, doesn't it?
BTW, your solution provides me with very helpful information. Thanks much.
dave
Fixed my own problem.
Within the tag, you can use autocomplete=off
To turn off the
OT
If anyone 'listening' has the php 4.3.7 binary installed on Windows, would
you kindly run phpinfo() and let me know what version of OpenSSL is
bundled with the release ( should be either 0.9.7c or 0.9.7d ).
/OT
Thanks,
dave
Thanks Marie and MeX for having a look.
dave
I have ERwin 4.1.2208 installed, and it connects to MySQL only through
ODBC, so one needs to have the MyODBC.dll installed. You can then make an
ODBC connection with it. But ERwin is probably a $4,000.00 software
package. Pretty steep for an individual...
dave
May be ERwin or BPwin can help
Have you assigned the values in the $_SESSION['l_industry'] array to those
specific local variables, $l_industry['0'], $l_industry['1']... ?
dave
Stuart Felenstein [EMAIL PROTECTED]
10/11/2004 10:20 AM
To:
[EMAIL PROTECTED]
cc:
Subject:
Re: [PHP-DB] Don't mean to be
[EMAIL PROTECTED]
10/13/2004 12:11 PM
To:
[EMAIL PROTECTED]
cc:
Subject:
Re: [PHP-DB] INNO tables - will I have problems?
To quote the Mighty Gerard Samuel [EMAIL PROTECTED]:
Julian Madle wrote:
I obviously have no control of which ISP and end-user may
choose, although our
right, so after you define the fields of the table, you add type=innodb
simple as that
dave
Gerard Samuel [EMAIL PROTECTED]
10/13/2004 02:34 PM
To:
[EMAIL PROTECTED]
cc:
[EMAIL PROTECTED], [EMAIL PROTECTED]
Subject:
Re: [PHP-DB] INNO tables - will I have problems?
[EMAIL
If you haven't yet deleted the localhost root account, you can log onto
the mysql client with:
mysql mysql -uroot -p
then press enter again when it prompts you for a password.
You should now be able to manage all your account info.
dave
Perry, Matthew (Fire Marshal's Office) [EMAIL
Matt,
Is there a space between PASSWORD and the opening parenthesis? There
shouldn't be, if there is. Otherwise, your statement worked without errors
for me on MySQL Version 4.0.16.max-nt.
Make sure that you are logged in as root.
C : \ select user();
Sometimes MySQL is cryptic about its
Andre,
Did you intend to write that both sessions have the same name? Doesn't
that result in the same issue with the session identification?
dave
Andre Matos [EMAIL PROTECTED]
10/22/2004 03:25 PM
To:
[EMAIL PROTECTED]
cc:
Subject:
RE: [PHP-DB] How to send a SID in a security way
Just wanted to clarify.
The devil is always in the details.
dave
***
---
Bart Baaten
C:\mysqldump -uadministrator -p test test.sql
Enter password: **
Perry, Matthew (Fire Marshal's Office) [EMAIL PROTECTED]
10/25/2004 01:53 PM
To:
[EMAIL PROTECTED]
cc:
Subject:
RE: [PHP-DB] backing up database with mysqldump
How do I provide a password?
I
Rene,
I've gotten a lot of mileage lately out of 'The PHP Anthology, Volumes I
and II' by Harry Fuecks and published by SitePoint. The author
demonstrates IMO fairly sophisticated usage of OOP techniques in
constructing classes for MySQL, in particular. And the coding examples
are robust
Martin,
Thanks for your kind words to the new guy. I really don't understand why
others don't simply refrain from responding rather than burn bandwidth
with their rants of RTFM or or Off Topic - go somewhere else. I really
appreciate all the posts folks make as I tend to learn something, even
Nate,
Don't know if this is the case or not, but the destination database has to
already exist on the upload server.
dave
Nate Nielsen [EMAIL PROTECTED]
11/17/2004 10:08 AM
To:
[EMAIL PROTECTED]
cc:
Subject:
RE: [PHP-DB] mysql db dump with php
I tried this but to no avail.
--- Ford, Mike [EMAIL PROTECTED] wrote:
0: INSERT INTO Table1 (LurkID, ProfileName, Edu,
WorkAuth, WorkExp, CarLev, Secu, Confi, Relo,
Telecomu, City1, State1, City2, State2,
TravelPref,
SalaryAnnual, SalaryHourly, Available) VALUES (47,
'', 7, 2, 1015, 5, , '', '', '',
Ross,
If someone can give me a good reason why this is so, it will stop it
annoying me so much.
From the MySQL manual for version 4.0.16:
It is not allowed to use a column alias in a WHERE clause, because the column
value may not yet be determined when the WHERE clause is executed. See
It looks like the parenthesis on the line with the 'while' loop is an
opening parenthesis instead of a closing parenthesis.
while($row=mysql_fetch_array($result)({
^
dave
Just testing the list mail server as I haven't received any posts for days
now.
dave
Jason, can you explain why stripslashes should not be used on data
taken from the db? when you store data in the db i thought it was good
practice to addslashes, when you retrieve from the db, you will need
to use stripslashes to remove the extra \
If I may step in...
Assuming a MySQL db,
Yemi Obembe wondered:
Hi guiz,
I was just wondering if anyone has an idea the maximum size of
characters(in bytes) a mysql database can contain
thanx
*
This is determined by the OS file-size limit as MyQSL stores its data in
regular files. I
On a side note, who's sick of seeing the word optimizing misspelled in
the title? :)
Ah, the things we do to keep a thread clean.
--
- Martin Norland, Sys Admin / Database / Web Developer, International
Well, of course, _optimise_ is the British spelling of _optimize_ .
Afterall, this
[EMAIL PROTECTED] wrote:
On a side note, who's sick of seeing the word optimizing misspelled
in
the title? :)
Ah, the things we do to keep a thread clean.
[snip]
Well, of course, _optimise_ is the British spelling of _optimize_ .
Afterall, this __is__ an international list ;-
Harry,
I think you could also just use backticks around `limit` as occurs in the
table creation statement below.
David
limit is a mysql keyword...change that field name and the corresonding
names
in your sql
bastien
From: HarryG [EMAIL PROTECTED]
To: php-db@lists.php.net
Subject:
Either syntax is correct. From section 6.4.3 of the MySQL Manual:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ((expression | DEFAULT),...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expression, ... ]
or INSERT [LOW_PRIORITY |
We have created a MySQL/ C application that gathers environmental data and
does inserts into the db once per minute.
A set of PHP applications reads this data and does some graphical display
of the values.
Changing from Standard Time to Daylight Savings Time causes minor
problems, but in the
Peter,
Perhaps you are referring to these directive in php.ini:
; Automatically add files before or after any PHP document.
auto_prepend_file =
auto_append_file =
David
Peter Beckman [EMAIL PROTECTED]
04/05/2005 03:39 PM
To:
PHP-DB Mailing List php-db@lists.php.net
cc:
We have created a MySQL/ C application that gathers environmental data and
does inserts into the db once per minute.
A set of PHP applications reads this data and does some graphical
display
of the values.
Changing from Standard Time to Daylight Savings Time causes minor
problems, but
Perry, Matthew (Fire Marshal's Office) wrote:
Is there a way to transfer post data to a series of PHP pages?
For example, lets say I have the following 4 pages:
Page1.php - this page has my original post form
Page2.php - this page does one thing with the post data
Page3.php - this page does
This question will probably be off-topic for some, but it does relate to a
database application so please bear with me.
I'm pulling date-times out of a MySQL db:
mysql select date_format(`date_time`, '%Y.%m.%d %H:%i:%s') as rightNow
from location1 order by date_time desc limit 1;
Thank you kindly, Neil Smith and Brent Baisley.
I now see the error of my approach.
---
$dateArray = array();
for($counter = 0; $counter = 3600; $counter++)
{
$dateArray[
Thank you kindly, Neil Smith and Brent Baisley.
I now see the error of my approach.
---
$dateArray = array();
for($counter = 0; $counter = 3600; $counter++)
{
$dateArray[
Thank you kindly, Neil Smith and Brent Baisley.
I now see the error of my approach.
---
$dateArray = array();
for($counter = 0; $counter = 3600; $counter++)
{
$dateArray[
Thank you kindly, Neil Smith and Brent Baisley.
I now see the error of my approach.
---
$dateArray = array();
for($counter = 0; $counter = 3600; $counter++)
{
$dateArray[
Thank you kindly, Neil Smith and Brent Baisley.
I now see the error of my approach.
---
$dateArray = array();
for($counter = 0; $counter = 3600; $counter++)
{
$dateArray[
C:\mysqldump --version
mysqldump Ver 9.09 Distrib 4.0.16, for Win95/Win98 (i32)
C:\mysqldump --help | grep table
STDIN 6 Dumping definition and data mysql database or table
STDIN 7 Usage: mysqldump [OPTIONS] database [tables]
STDIN 22--add-drop-tableAdd a 'drop
Anyone using MySQL 4.1 as a backend to their PHP apps? I'm particularly
interested in the cluster software that the docs say are part of 4.1. I
have some apps that would benefit from a high uptime db backend but I'm a
bit concerned about the 'not enterprise-ready' disclaimer on the mysql
You can definitely do a load file from within the mysql client, so I'd
guess you can do it through mysql_query, too. I'm wondering about the
semi-colon within the query. Maybe it needs to be escaped, too.
David
I could be 100% wrong on this, but I do not think that a command line
statement
Hello Yui,
We use an executable called pdftotext.exe to extract text from pdf's.
You can find it here: - http://www.foolabs.com/xpdf/download.html
Although we use it from the command line, I'd guess that it can be used
satisfactorily with exec() within a PHP script, also.
David
Bastien
You need to use the username and password of the database, not the OS, to
connect to MySQL. You would also need to set up an account for the
username/host name of the remote computer within MySQL for this to work
successfully. If this is a new installation of MySQL, try leaving username
and
It's possible that the keywords wouldn't be in the first X numbers of
characters.
|-+--
| | |
| | |
| | Joseph
In full agreement here. I scratched my head this morning, then looked up
INSERT in the MySQL Docs for a sanity check. It must be an UPDATE
statement to work as indicated below.
David
Sorry David Mitchell
==
Is that a
Ken:
Echo out the query. Check it. Run it from the MySQL client.
What does the error message say? Does the table 109fh6 actually exist in
the database?
David
# Ken responded:
#
# After adding echo mysql_error(); I get the same result. I tried changing
# the query to include 109fh7 (a
Results from full-text searches on a documents database are returning
sometimes 300-400 hits, so I'm gonna need to implement a dynamic navigation
bar. Perhaps this a stupid question, but it seems from a brief googling
that navigation bars - dynamic or not - operate by appending variables and
Thanks for the quick response, Bastien.
I was thinking that using hidden fields may be another way to go. But how
would I assign a value to a form variable via clicking on a link?
No, you could try keeping that data in sessions or in hidded form fields
in
the page...note that the latter
Thanks for weighing in on the question, Julien. It's an intranet
application, and I have some influence with the users' browser settings, so
I used Javascript. I have to admit though that I was unaware you could pass
a function from an anchor href tag
(a
How can I force the browser to re-display the last dynamically created page
when using the back button, for example, rather than re-issuing the query.
Are there any complications because we are using the https protocol on
Apache?
David
--
PHP Database Mailing List (http://www.php.net/)
To
/* for the archives */
Ah, it's in the manual, isn't it?
I was calling session_start() on the page, so the session.cache_limiter
value of 'nocache' in php.ini was overriding all attempts to cache the
page.
Calling session_cache_limiter('private') before session_start() did the
trick.
David
List Active?
David
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
I want to know how to mirror one MySQL database installed in two
different servers so they can be synchronized.
Any idea?
Search the MySQL docs/manual for master and/or slave. There are good
examples for setting up replication from many different web sites as well.
David
--
PHP Database
snip...
// check passwords match
$_POST['password'] = stripslashes($_POST['password']);
$info['password'] = stripslashes($info['password']);
$_POST['password'] = $_POST['password'];
if ($_POST['password'] != $info['password']) {
die('Incorrect password, please try
I have been using MySQL for quite some time and am now running Server
4.1. I
have been developing custom web-based software for a customer and
recently
moved their server to a different machine. I have everything running
smoothly EXCEPT for mySQL. Any time I try to start the service I get an
^bump^
its too quiet in here!
Has something exciting happened in the U.S. of A. ??
A certain Texas politician under indictment for felony charges announced he
is going to resign in June, but surely this is off-topic.
[hehehehehehehe]
David
--
PHP Database Mailing List
I have an application which calls up some data from a MySQL table and
puts it into a web form for users to modify.
One of the cells holds a text string which is put into a text input
field. However, if that text string includes an apostrophe, all text
after the apostrophe disappears.
For
Skip Evens wrote:
Hello all,
I'm brand spanking new to the list and have a
quick question.
I was under the impression that addslashes() would
handle single quote marks in INSERT statements,
but when I execute the following:
$sql=UPDATE images SET orderno=$orderno,
Skip Evans wrote:
Hello all,
I'm brand spanking new to the list and have a
quick question.
I was under the impression that addslashes() would
handle single quote marks in INSERT statements,
but when I execute the following:
$sql=UPDATE images SET orderno=$orderno,
url='.addslashes($url).',
1 - 100 of 113 matches
Mail list logo