Foros del Web » Programando para Internet » PHP »

Añadir uno a string con caracteres no numericos

Estas en el tema de Añadir uno a string con caracteres no numericos en el foro de PHP en Foros del Web. Hola chicos/as, Quiero incrementar secuencialmente un string del tipo 2012#003. Se trata de una referencia donde # puede ser cualquier caracter. La respuesta correcta debe ...
  #1 (permalink)  
Antiguo 16/04/2012, 10:57
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 4 meses
Puntos: 1
Añadir uno a string con caracteres no numericos

Hola chicos/as,

Quiero incrementar secuencialmente un string del tipo 2012#003. Se trata de una referencia donde # puede ser cualquier caracter. La respuesta correcta debe ser 2012#004.

El tema es que en un formulario de alta de articulos quiero proponer la siguiente referencia, para ello consulto a la base de datos la máxima referencia y le debo añadir 1.

En mySQL me devuelve 2013 si hago "SELECT max(referencia) + 1", lo que no sirve.

Gracias.
  #2 (permalink)  
Antiguo 16/04/2012, 11:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Añadir uno a string con caracteres no numericos

Entonces estás haciendo cosas que sólo tu mente cree, ya que no es posible tratar como numérico una cadena.

Obviamente no va a servir lo que haces.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/04/2012, 11:26
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 4 meses
Puntos: 1
Respuesta: Añadir uno a string con caracteres no numericos

Gracias por tu aporte pateketrueke.

Alguien que me pueda ayudar?.
  #4 (permalink)  
Antiguo 16/04/2012, 11:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Añadir uno a string con caracteres no numericos

Pues sí sabes la estructura de la referencia puedes usar substr para obtener una parte del string, pasarlo a un int, e incrementarlo y después volver a armar la referencia.

Saludos.
  #5 (permalink)  
Antiguo 16/04/2012, 11:40
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 4 meses
Puntos: 1
Respuesta: Añadir uno a string con caracteres no numericos

Gracias GatorV.

Pensaba que había una función que hiciera el trabajo sucio.
  #6 (permalink)  
Antiguo 16/04/2012, 11:42
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 9 meses
Puntos: 66
Respuesta: Añadir uno a string con caracteres no numericos

Cita:
Iniciado por carlos123 Ver Mensaje
Gracias GatorV.

Pensaba que había una función que hiciera el trabajo sucio.
Hay una se llama forosdelweb();

saludos,
__________________
Tu álbum de cromos online!!

Última edición por santris; 16/04/2012 a las 11:48
  #7 (permalink)  
Antiguo 16/04/2012, 13:30
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 4 meses
Puntos: 1
Respuesta: Añadir uno a string con caracteres no numericos

Bueno chicos,

He hecho el trabajo sucio y lo publico para que alguien lo use:

Código:
<?php
	//Calculo de la siguiente referencia
	$mySQL = "SELECT max(referencia) FROM articulos";
	$ultimaReferencia = $db->get_var($mySQL);
	//Probado tambien con :
	//$ultimaReferencia = "20120#001";
	//$ultimaReferencia = "20120#";
	$lenString = strlen($ultimaReferencia);
	for ($i = $lenString - 1; $i >= 0; $i--) {
		if (!is_numeric($ultimaReferencia[$i])) { break; }
	}
	$lenPrefijo = $i + 1 ;
	if($lenString == $lenPrefijo){
		$lenContador = "3";
		$prefijo = $ultimaReferencia;
		$contador = 0;
	}else{
		$lenContador = $lenString - $lenPrefijo;
		$prefijo = substr($ultimaReferencia,0,$lenPrefijo);
		$contador = intval(substr($ultimaReferencia,$lenPrefijo));
	}
	echo " lenContador(".$lenContador.")";
	echo "prefijo (".$prefijo.")";
	echo " contador (".$contador.")";
	$contador = $contador + 1;
	for ($j=0; $j <= $lenContador - strlen($contador); $j++) {
		$contador = "0".$contador;
	}
	echo " nuevo contador (".$contador.")";
	$nuevaReferencia = $prefijo.$contador;
?>
Funciona incluso con referencia que acaban en un digito no numérico.

Un saludo a todos.

Tambien disponible la funcion forosdeweb().....

Gracias GatorV, has sido una vez más una inspiración.
  #8 (permalink)  
Antiguo 16/04/2012, 13:57
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 9 meses
Puntos: 66
Respuesta: Añadir uno a string con caracteres no numericos

Cita:
Iniciado por carlos123 Ver Mensaje

Tambien disponible la funcion forosdeweb().....
Tu lo has dicho!! y hecho!!
__________________
Tu álbum de cromos online!!
  #9 (permalink)  
Antiguo 16/04/2012, 14:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Añadir uno a string con caracteres no numericos

En fin, una solución para un problema trivial que además está mal pensado.

Entiendo si en un futuro tu aplicación no escala.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 17/04/2012, 01:06
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 4 meses
Puntos: 1
Respuesta: Añadir uno a string con caracteres no numericos

Estimado GatorV,

¿Puedes eliminar los mensajes del usuario pateketrueke del tema que he creado?.

Creo que lo ensucia y no aporta nada ni a este ni al foro en general.

Gracias.
  #11 (permalink)  
Antiguo 17/04/2012, 10:27
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 4 meses
Puntos: 1
Respuesta: Añadir uno a string con caracteres no numericos

Cita de pateketrueke en PM:

Hola de nuevo
Creo que ya te estás tomando las cosas muy personalmente, las normas del foro no prohíben de dar opinión ya sea acertada o no.

No te insulté ni nada por el estilo, simplemente estoy diciendo la verdad sobre algo que veo mal implementado.

¿Eso te molesta?
  #12 (permalink)  
Antiguo 17/04/2012, 10:35
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 4 meses
Puntos: 1
Respuesta: Añadir uno a string con caracteres no numericos

La verdad es que es insultante recibir una critica sin fundamentar. Se le suele llamar demagogia y a mi personalmente me parece que en un foro donde nos intentamos ayudar unos a otros, que no dar simples opiniones, sobran.

Las normas del foro están por encima de las más básicas reglas de buena educación.

Por supuesto que me lo tomo personalmente, me has dicho a mi que he resuelto un problema trivial con una solución mal pensada, mal implementada y que mi aplicación no tiene en cuenta la escalabilidad.

¿que sabrás tú de lo que estoy haciendo o dejando de hacer?.

Mi opinión es que la gente que hace lo que me has hecho a mi en un tema abierto por mi no tiene lugar en un sitio como este.

Este es el último vistazo que voy a darle a esto. Por lo de la perdida de tiempo en sandeces.
  #13 (permalink)  
Antiguo 17/04/2012, 10:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Añadir uno a string con caracteres no numericos

Si, pero también es molesto tener que leer argumentos que no son ciertos.

Cita:
No aporta solución, sólo link a su página.
De ahí mi punto que no estás viendo con claridad, ya que incluso no soy el único que ha comentado sarcásticamente y encima me atañes un enlace que ni es mío.

¿Si te lo comente por MP verdad?

Te pido una disculpa por tener criterio.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: caracteres, formulario, mysql, numericos, string
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 20:32.