Verify EAN 13 in MySql

23 March 2012 6 comments

To verify the correct structure of an EAN13  with MySql we can create a function as the follow.

DROP FUNCTION IF EXISTS FNC_IS_VALID_EAN13;

DELIMITER $$
CREATE FUNCTION FNC_IS_VALID_EAN13(_ean VARCHAR(13)) RETURNS tinyint(4)
READS SQL DATA
BEGIN
DECLARE _correct_ean TINYINT;
DECLARE _even_sum SMALLINT;
DECLARE _odd_sum SMALLINT;
DECLARE _check_digit SMALLINT;
DECLARE _check_number SMALLINT;
IF LENGTH(_ean) 13 THEN RETURN 0; END IF;
IF NOT _ean REGEXP ‘^[0-9]+$’ THEN RETURN 0; END IF;
SELECT SUBSTR(_ean, 0, 1)+SUBSTR(_ean, 2, 1)+SUBSTR(_ean, 4, 1)+SUBSTR(_ean, 6, 1)+SUBSTR(_ean, 8, 1)+SUBSTR(_ean, 10, 1) INTO _even_sum;
SELECT SUBSTR(_ean, 1, 1)+SUBSTR(_ean, 3, 1)+SUBSTR(_ean, 5, 1)+SUBSTR(_ean, 7, 1)+SUBSTR(_ean, 9, 1)+SUBSTR(_ean, 11, 1) INTO _odd_sum;
SELECT ( (10-(3*_even_sum + _odd_sum)%10)%10 ) INTO _check_digit;
SELECT SUBSTR(_ean, 13, 1) INTO _check_number;
SELECT IF(_check_number=_check_digit,1,0) INTO _correct_ean;
RETURN _correct_ean;
END$$
DELIMITER ;

 

To use it simply just type into your queries something like this:

SELECT ean, FNC_IS_VALID_EAN13 (ean) as isValid FROM MY_TABLE;

That’s it

Verify EAN 13 with PHP

23 March 2012 4 comments

Here the function to verify a correct EAN13 structure.

function validate_EAN13Barcode($barcode)
{
    // check to see if barcode is 13 digits long
    if (!preg_match("/^[0-9]{13}$/", $barcode)) {
        return false;
    }

    $digits = $barcode;

    // 1. Add the values of the digits in the 
    // even-numbered positions: 2, 4, 6, etc.
    $even_sum = $digits[1] + $digits[3] + $digits[5] +
                $digits[7] + $digits[9] + $digits[11];

    // 2. Multiply this result by 3.
    $even_sum_three = $even_sum * 3;

    // 3. Add the values of the digits in the 
    // odd-numbered positions: 1, 3, 5, etc.
    $odd_sum = $digits[0] + $digits[2] + $digits[4] +
               $digits[6] + $digits[8] + $digits[10];

    // 4. Sum the results of steps 2 and 3.
    $total_sum = $even_sum_three + $odd_sum;

    // 5. The check character is the smallest number which,
    // when added to the result in step 4, produces a multiple of 10.
    $next_ten = (ceil($total_sum / 10)) * 10;
    $check_digit = $next_ten - $total_sum;

    // if the check digit and the last digit of the 
    // barcode are OK return true;
    if ($check_digit == $digits[12]) {
        return true;
    }

    return false;
}
Categories: Functions, PHP

Verify if a table is locked by MySql


Many times you need to understand if a table still locked by mysql.
In this case you can use the following function to understand if it is or not.


/**
* This function will check on the db name pass by the first param
* if one, or more tables, are locked by others processes
*
* Return true if just one of tables is locked
*
* @param string $db_name
* @param array $array_tables_names
* @return boolean
*/
function tablesLocked($db_name, $array_tables_names)
{

//Take the instance of codeigniter
$ci = get_instance();

//Load the default configuration 
//(if your configuration name is different just change it)
$ci->load->database("default",true);

//Check for locked tables
$sql = "SHOW OPEN TABLES FROM `".$db_name."`
WHERE In_use > 0
AND
`Table` IN (";

$tables = count($array_tables_names);
for($i = 0; $i < $tables; $i++):
$sql .= "'".$array_tables_names[$i]."'";
if($i < ($tables-1)) $sql .= ",";
endfor;

$sql .= ")";
$rs = $ci->db->query($sql);
return $rs->num_rows() > 0;
}

Categories: CodeIgniter, Functions, PHP

watermark image with php and ImageMagick


Here a simple function that use ImageMagick command to apply a watermark image as background of another one.

/**
* Direct command from imagemagick
* composite -dissolve 15 -tile watermark.png source.jpg destination.jpg
*
* @param string $watermarkfile
* @param string $sourcefile
* @param string $destfile
* @param int $dissolve
* @return boolean
*/
function watermarkImage($watermarkfile, $sourcefile, $destfile, $dissolve = 5)
{
$cmd = "/usr/bin/composite -dissolve $dissolve -tile $watermarkfile $sourcefile $destfile";

exec($cmd, $output, $return);
return $return === 0;
}

Categories: Bash scripting, Functions, PHP

Javascript right click disabled


Here a simple function to disable the right click and also the key of contextmenu from javascript:

<script type='text/javascript'>
 var isNS = (navigator.appName == "Netscape") ? 1 : 0;
  if(navigator.appName == "Netscape") document.captureEvents(Event.MOUSEDOWN||Event.MOUSEUP);
  function mischandler(){
   return false;
 }
  function mousehandler(e){
 	var myevent = (isNS) ? e : event;
 	var eventbutton = (isNS) ? myevent.which : myevent.button;
    if((eventbutton==2)||(eventbutton==3)) return false;
 }
 document.oncontextmenu = mischandler;
 document.onmousedown = mousehandler;
 document.onmouseup = mousehandler;
</script>
Categories: JavaScript

Parse Sql con PHP


Questa comoda classe statica può essere utilizzata per ricavare l’array di istruzioni sql all’interno di un file escludendone

i relativi commenti dal parsing.

class SqlParser {
    /**
     * @purpose : Parses SQL file
     * @params none
     * @return none
     */
    public static function parse($content) {

        $sqlList = array();

        // Processing the SQL file content
        $lines = explode("\n", $content);

        $query = "";

        // Parsing the SQL file content
        foreach ($lines as $sql_line):
            if (trim($sql_line) != "" &&
                strpos($sql_line, "--") === false &&
                strpos($sql_line, "#") !== 0){

                if(empty($sql_line)) continue;
                $query .= $sql_line;
                // Checking whether the line is a valid statement
                if (preg_match("/(.*);/", $sql_line)) {
                    $query = substr($query, 0, strlen($query) - 1);
                    //store this query
                    $sqlList[] = $query;
                    //reset the variable
                    $query = "";
                }
            }
        endforeach;

        return $sqlList;
    }

}
Categories: PHP

Parsing del sorgente HTML in php


Una delle richieste più frequenti ma al tempo stesso più complicate da effettuare (bene intendo) è
l’analisi del codice sorgente di una pagina html soprattutto se fatta da terzi.
A questo scopo con i metodi abbinati a questo post potrete avere un oggetto che rispecchia la pagina
trasformando ogni elemento in un oggetto DOM in modo da poter essere interrogato con le farie funzioni
già note a php con le elaborazioni dei tags XML.

 

html_parser_functions.pdf

Ecco un esempio di utilizzo con codice e dati inventati e non veritieri
al solo scopo didattico:

//Apro il link di una pagina valida
$dom = file_get_dom($link_ad_indirizzo_valido);

//Prendo, per esempio, un tag div di cui mi interessa prelevarne il contenuto
$divDescrizione = $dom->find("div[id=id_del_div]");

//Inizializzo la variabile che conterrà la descrizione
$descr = ""; //"Descrizione non trovata :(";

//Se il div non è stato trovato per qualche problema la descrizione
//sarà anch'ella vuota
if(!empty($divDescrizione)) {
   //Prelevo la descrizione dal primo div che mi restituisce il metodo
   $descr = $divDescrizione[0]->innertext();

   //Eventualmente posso trasformare il tutto in utf8 qualora ce ne fosse la necessità
   $descr = utf8_encode($descr);
}

//A questo punto posso stampare, restituire o fare quello che più mi aggrada con la mia variabile
 echo $descr;

Come avrete potuto notare in questo modo il parsing e la ricerca di oggetti all’interno di un codice HTML ben formattato e soprattutto
corretto, non è più una cosa così complessa come farlo manualmente.

Attendo i Vs. commenti

Categories: Functions, PHP, XHTML e HTML
%d bloggers like this: