http://www.devshed.com/c/a/PHP/Using-Filters-in-PHP-5/3/
This devshed article taught how to use filters in PHP 5
$min = 1;
$max = 99;
$input = 101;
if(filter_var($input, FILTER_VALIDATE_INT, array("options" => array("min_range" => $min, "max_range"=> $max ))) === FALSE)
{
echo 'Error: Input must be a value between 1 and 99.';
}
else
{
echo 'Input is correct';
}
Labels: php
convert file names to upper case using tr command in Unix
Need to convert file names to upper case using tr command in Unix.
In a folder -> /apps/dd01/misc
there are two files like:
pi-abcd.pdf
pi-efgh.pdf
The output of should be like:
pi-ABCD.pdf
pi-EFGH.pdf
I have used the command to work for a single file at a time like:
mv *.pdf "pi*-`ls -ltr *.pdf | awk '{print ($9)}' | cut -c 4-7 | tr '[a-z]' '[A-Z]'`.pdf"
How do we modify the above command so that it works out for multiple files in a folder as above.
http://www.unix.com/shell-programming-scripting/114463-convert-file-names-upper-case-using-tr-command-unix.html
Labels: unix case study
1) Row Count:
Select count(*) from tbl
is the only way to know the exact number of records of an InnoDB table. What you see in your user frindly software may be wrong.
select count(*) is not the same as count(name)
* denotes all rows while count(name) will return the count of only NOT NULL records.
2) Silent Conversion:
MySQL does nasty things at times like truncating data with or without issusing any warning. Data integrity is compromised under the nose of the programmer.
3) Keys:
Primary and Unique keys are the same except, Primary does not allow NULL values and there can only be one Primary key because the name of the key itself is "Primary" and that name can not be repeated. Using composite keys for e.g. (surname, name, city) does help to maintain data integrity and speed up the query. Every table must have a primary key. If no column or group of columns is suitable for the purpose, use Auto Incremented id.
4) Data Type:
MySQL has 5 datatypes to store numbers. tinyInt, smallInt, mediumInt, , int and bigInt in that order. Do not use float, double, timestamp, blob, set and enum unless you can justify their need. Use Decimal for storing... what else? decimal.
5) Shell Script:
Knowing basic shell script helps. Knowing commands like tail, cat, awk and sort is essential.
Labels: mysql tips
Insertion of multiple rows comes about often in batch jobs, database migrations and handling table relationships. A naive approach, via PHP, would be to loop over the data to be inserted, inserting one row at a time. Suppose the data is already properly filtered and quoted:
foreach( $data as $row ) {
$query = "INSERT INTO `test_table` (user_id,content) VALUES ("
. $row['user_id'] . "," . $row['content'] . ")";
mysql_query($query);
}
Depending on the amount of rows to be inserted, this can be a costly process. A better approach would be to concatenate the values into one insert query and then execute it:
$values = array();
foreach( $data as $row ) {
$values[] = "(" . $row['user_id'] . "," . $row['content'] . ")";
}
if( !empty($values) ) {
$query = "INSERT INTO `test_table` (user_id,content) VALUES "
. implode(',',$values);
mysql_query($query);
}
A single query completes much faster than looping through multiple queries. At 2560 rows inserted, it took the loop ~36 seconds to complete, yet the single query took just 0.14 seconds.
Sounds Interesting!
http://www.techfounder.net/2009/05/14/multiple-row-operations-in-mysql-php/
Labels: mysql tips, php
http://www.mikehillyer.com/mysql/user-friendly-age-function-for-mysql/
Hre is Mkie Hillyer's quick and dirty stored function for MySQL that takes two DATETIME arguments and produces a readable difference in hours, days, weeks, months or years.
DELIMITER //
CREATE FUNCTION TimeDiffUnits (old DATETIME, new DATETIME) RETURNS CHAR(50) DETERMINISTIC NO SQL
BEGIN
DECLARE diff INTEGER;
SET diff = UNIX_TIMESTAMP(new) - UNIX_TIMESTAMP(old);
CASE
WHEN (diff < 3600) THEN
RETURN CONCAT(FLOOR(diff / 60) , ' Minutes');
WHEN (diff < 86400) THEN
RETURN CONCAT(FLOOR(diff / 3600), ' Hours');
WHEN (diff < 604800) THEN
RETURN CONCAT(FLOOR(diff / 86400), ' Days');
WHEN (diff < 2592000) THEN
RETURN CONCAT(FLOOR(diff / 604800), ' Weeks');
WHEN (diff < 31536000) THEN
RETURN CONCAT(FLOOR(diff / 2592000), ' Months');
ELSE
RETURN CONCAT(FLOOR(diff / 31536000), ' Years');
END CASE;
END //
DELIMITER ;
If you want more sophisticated version, you can find it here...
http://rpbouman.blogspot.com/2009/06/mysql-refactoring-stored-function.html
Labels: mysql tips
index.php (or index.html) is the file that the browser will first look for on your website.
Right click on this file and remove the Write permission for "Owner". There are 2 advantages.
1) A virus / malicious script can not modify this file.
2) You can not accidentally overwrite the index file!
Whenever you are going to change the file, do not forget to allow the permission to the "Owner" again.
Labels: usability
A pop-up window has always been a grey area for the web developers. Not any more. Here is greybox to help the poor cut - paste guys like me :)
http://orangoo.com/labs/greybox/normal_usage.htmlAfter downloading the source, I could easily create very professional pop-up effects with minimum code.
That's great!!
Labels: usability