Foros del Web » Programando para Internet » PHP »

como utilizar SUBSTR en dato de tabla

Estas en el tema de como utilizar SUBSTR en dato de tabla en el foro de PHP en Foros del Web. suecede que tengo una tabla llamada socios, esta tabla contiene el numero de socio compuesto por numeros y letras "a02540cx" yo quiero lograr que ingresando ...
  #1 (permalink)  
Antiguo 03/02/2005, 14:00
Avatar de Sagat  
Fecha de Ingreso: febrero-2002
Ubicación: Viña del Mar
Mensajes: 164
Antigüedad: 22 años, 8 meses
Puntos: 0
como utilizar SUBSTR en dato de tabla

suecede que tengo una tabla llamada socios, esta tabla contiene el numero de socio compuesto por numeros y letras "a02540cx" yo quiero lograr que ingresando sólo el número se pueda obtener algunos datos de la tabla.

Estoy probando con esto pero me da error o no muestra nada :

$cCodi = "numero que yo ingreso" / 02540
$res = mysql_query("SELECT nro,nom,ape FROM socios WHERE substr(nro,1,5) = '$cCodi'");
$row = mysql_fetch_row($res);

y despues muestro con :
echo $row[0];
echo $row[1];
echo $row[2];


alguien me podria decir si esto se puede hacer, o si debo usar otra sentencia ??...
__________________
-:::[ Saludos ]:::- :adios:
  #2 (permalink)  
Antiguo 03/02/2005, 16:21
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 20 años
Puntos: 0
Hola que tal quiero hacerte una pregunta el numero de socio se ira incrementando? que pasara si tienes mas de 5 digitos? si todo esto que te digo es cierto entonces el sbstr no te servira. Debes crear una funcion para que te tome la longitud de la cadena y luego recorrerla comparando cada uno de sus caracteres.

Suerte y Salu2.

Bye
__________________
Atte. Mohamed :aplauso:
  #3 (permalink)  
Antiguo 04/02/2005, 05:58
Avatar de Sagat  
Fecha de Ingreso: febrero-2002
Ubicación: Viña del Mar
Mensajes: 164
Antigüedad: 22 años, 8 meses
Puntos: 0
Baklao, creo que omití ese detalle, de todas formas el numeo de socio va en 4230 y de momento no creo que aumente a una suma tan considerable como "90000".

de todas formas, sabes como se podria hacer la funcion que compara los registros ??
__________________
-:::[ Saludos ]:::- :adios:
  #4 (permalink)  
Antiguo 04/02/2005, 06:20
Avatar de H0m3r0J4y  
Fecha de Ingreso: abril-2002
Mensajes: 123
Antigüedad: 22 años, 7 meses
Puntos: 0
Yo probaría algo como

SELECT nro,nom,ape FROM socios WHERE nro LIKE '%$cCodi%'

Salutes!
  #5 (permalink)  
Antiguo 04/02/2005, 06:35
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Una preguntita, ¿de donde has sacado que la funcion que realiza esa accion en MySQL se llama substr()? En http://dev.mysql.com/doc/mysql/en/string-functions.html no esta substr(). Si esta substring().

Una cosa son las funciones de php.net que son para usar en el codigo PHP,y otra distinta son las funciones de mysql.com que son para usar en las consultas a MySQL. Son independientes, no tienen porque coincidir ni existir las mismas ni tener los mismos parametros ni orden de los parametros.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 04/02/2005, 07:40
Avatar de Sagat  
Fecha de Ingreso: febrero-2002
Ubicación: Viña del Mar
Mensajes: 164
Antigüedad: 22 años, 8 meses
Puntos: 0
Josemi, como es eso de substring() ??
yo siempre he utilizado Substr() para obtener cadena de caracteres, de todas formas, no soy un experto en PHP solo utilizo las funiones que me han servido en su momento.

Gracias por la aclaración, pero aun así sigue sin funcionar.
cambié el codigo :

$res = mysql_query("SELECT nro,nom,ape FROM socios WHERE substring(nro,1,5) = '$cCodi'");

ahora no me arroja el error de linea, pero no muestra los campos del arreglo.

__________________
-:::[ Saludos ]:::- :adios:

Última edición por Sagat; 04/02/2005 a las 07:42
  #7 (permalink)  
Antiguo 04/02/2005, 07:47
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 20 años
Puntos: 0
Hola que tal bueno si es asi como lo planteas puedes hacerlo de esta manera con el sbstr si sabemos que al principio tienes una letra y al final dos letras mas:

Código PHP:
$cadena="a02540cx"
$cadena_original substr ($cadena1); //de esta manera te devuelve 02540cx
// tomamos la longitud de la cadena ahora como sabemos que tiene dos caracteres al final hacemos lo sigguiente.
$longitud_cadena_original strlen ($cadena_original);
$resto $longitud_cadena_original 2;
$cadena_original substr ($cadena, -2$resto); // de esta manera obtienes el 02540 
Suerte y Salu2.

Bye
__________________
Atte. Mohamed :aplauso:
  #8 (permalink)  
Antiguo 04/02/2005, 07:53
Avatar de Sagat  
Fecha de Ingreso: febrero-2002
Ubicación: Viña del Mar
Mensajes: 164
Antigüedad: 22 años, 8 meses
Puntos: 0
Gracias H0m3r0J4y !!!!

Estimado, me había pasado por alto tu Post.
Esa función me sirvió !!

mil gracias.....sólo tendre que acortar el campo "codigo" a 4 numeros en vez de 5 para que la coincidencia de LIKE %cCodi% no se repita...


GRACIAS...tambien a Josemi y Baklao...
__________________
-:::[ Saludos ]:::- :adios:

Última edición por Sagat; 04/02/2005 a las 07:55
  #9 (permalink)  
Antiguo 04/02/2005, 07:55
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Cita:
yo siempre he utilizado Substr() para obtener cadena de caracteres, de todas formas, no soy un experto en PHP solo utilizo las funiones que me han servido en su momento.
Veamos, substr() es un a funcion de PHP (www.php.net/substr), y substring() es una funcion de MySQL (www.mysql.com/substring). La consulta es codigo MySQL, asi que tienes que usar funciones MySQL. Fuera de la consulta debes usar funciones PHP.
Cita:
ahora no me arroja el error de linea, pero no muestra los campos del arreglo.
Consejo importante: no metas la consulta directamente en el mysql_query(), usa una variable temporal, asi:
Código PHP:
$sql="SELECT nro,nom,ape FROM socios WHERE substring(nro,1,5) = '$cCodi'";
$res=mysql_query($res); 
¿Por que? Porque asi puedes hacer facilmente un:
Código PHP:
echo $sql
para ver realmente la consulta que itentas ejecutar.

De todas formas, el fallo aqui todavia es debido a que te fijas en substr() (www.php.net/substr), y no en substring() (www.mysql.com/substring). Si miras esos manuales, veras que en substr() (PHP), el primer caracter tiene el indice 0 (para hacerlo compatible con los arrays), pero si te fijas en substring() (MySQL), veras que el primer caracter tiene el indice 1.

Asi que no te devuelve ningun registro porque esta comparando los 5 primeros caracteres del campo de la base de datos, es decir, 'a0254' con '02540'.

asi que tienes que cambiar la posicion de comienzo en substring()

substring(nro, 2, 5)

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 04/02/2005, 14:57
Avatar de Sagat  
Fecha de Ingreso: febrero-2002
Ubicación: Viña del Mar
Mensajes: 164
Antigüedad: 22 años, 8 meses
Puntos: 0
Josemi, por eso te agradecía la aclaración...
Lo que sí, no me fijé que en la posicion de comienzo, cuando cambié el 1 por el 2 en substring() funcionó sin problemas...

GRACIAS !!
__________________
-:::[ Saludos ]:::- :adios:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:07.