Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/02/2016, 03:01
bennykrovert
 
Fecha de Ingreso: febrero-2016
Mensajes: 2
Antigüedad: 9 años
Puntos: 0
Busqueda Condiciones dependiendo de los primeros dígitos de teléfono.

Muy buenas, hace poco que estoy metido en el mundo de PHP y ahora necesito crear un apartado un tanto peculiar en mi proyecto.

La cuestión es que yo cojo un número de teléfono en mi base de datos y basándome en la siguiente tabla tiene que aparecer de que tipo es:

Red Inteli. Premium 80Z*,90[3-7]*
Internacionales 00*
Acce. a Internet 908*,909*
Servicios 118XX 118*
Red Inteli. Básica 901*,902*
Num. Personales 70[0,4,707,757,770]
M2M y Nomada 590*,511*
Móviles Nacionales 6*,7*
Datáfonos e Info. 1XXX
Fijos Nacionales 9Z*,8Z*
Red Inteli. Gratuita 900*,800*
Emergencias 112,091,061,...

Z= Numero entre 1 y 9
X= Numero entre 0 y 9
* = Numeros restantes entre 0 y 9

La idea es plasmar la tabla anterior en if elses, a partir de los primeros dígitos de cada teléfono que obtengo de la base de datos.

Tengo medio creado el código con los teléfonos internacionales, nacionales y móviles, pero ya se me acaban las ideas para acabar de plasmarlo todo:

Código PHP:
Ver original
  1. $TrucadesUsuari = mysql_query ( "SELECT * FROM cdr,users WHERE cdr.src=users.phone AND (users.id='" . $q ['id'] . "')
  2.     ORDER BY cdr.calldate"  ) or die        ( mysql_error () );
  3.     $expresioMoviles = '/^[6|7][0-9]{8}$/';
  4.    
  5.        
  6.         while ( $cdruser = mysql_fetch_array ( $TrucadesUsuari) ) {
  7.            
  8.              //Internacionales
  9.              if ( $phoneINT = substr($cdruser['dst'],0,2) == "00" ){
  10.                  $totalsegundosInt = $cdruser['billsec'] + $totalsegundosInt;
  11.                  echo '- int- ';  
  12.                     //NOM PAIS EN UN FUTUR
  13.                     /*$Paisos =  mysql_query ( "SELECT * FROM paises"  ) or die ( mysql_error () );
  14.                     while ( $pais = mysql_fetch_array ($Paisos) ) {
  15.                     }*/
  16.              }
  17.            
  18.              
  19.               //Móviles Nacionales
  20.              else if(preg_match($expresioMoviles,$cdruser['dst'])){
  21.                  echo '- movil -';  
  22.              }
  23.              
  24.            
  25.              //Fijos Nacionales  
  26.              else if ($phoneNAC = substr($cdruser['dst'],0,2) == "91" or "92" or "93" or "94" or "95" or "96" or "97" or "98"
  27.              or "99" or"81" or "82" or "83" or "84" or "85" or "86" or "87" or "88" or "89")
  28.              {
  29.                   echo '-NACIONAL- ';  
  30.              }
  31. }

El problema es que el orden altera el factor, y al poner otras condiciones, los dígitos se ven afectados y no me marcan la opción telefónica que es. Creo que el orden de las condiciones es esencial y el tipo de condición también, pero no me sale el planteamiento correctamente.

A ver si me podéis ayudar. Muchas gracias de antemano.