Foros del Web » Programando para Internet » PHP »

Generar Ticket Number Aleatorio

Estas en el tema de Generar Ticket Number Aleatorio en el foro de PHP en Foros del Web. Saludos a todos los del foro. Tengo un pequeño problemilla, resulta que a traves de la pagina de la empresa se hacen solicitudes de cotizacion ...
  #1 (permalink)  
Antiguo 22/02/2006, 09:29
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 11 años, 10 meses
Puntos: 0
Exclamación Generar Ticket Number Aleatorio

Saludos a todos los del foro.

Tengo un pequeño problemilla, resulta que a traves de la pagina de la empresa se hacen solicitudes de cotizacion y de informacion, estas por los momentos llegan por mail, pero estoy desarrollando un Help Desk para que todo se centralize por ahi, mi duda es la siguiente

Necesito generar un codigo aleatorio que seria el Ticket Numer de X cotizacion.... mas o menos el formato seria el siguiente

fecha que se envio la solicitud - Hora que se envio la solicitud - TNnumero correlativo, es decir.

22-02-2006/10-23/TN000000001
22-02-2006/10-23/TN000000002
22-02-2006/10-23/TN000000003

No se si me captan la idea.......

Gracias les agradezco ayuda
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #2 (permalink)  
Antiguo 22/02/2006, 09:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Para que generas un "código" con datos que ya gestionas en tu BBDD (o deberías tener) .. No sobraría con ese "correlativo" o n° totalmente aleatorio? (y único)?

Yo soy de la filosofía -anti- códigos de ese estilo ..lo único que hacen es generar un montón de datos redundates. Tu ya gestionas esa información por otro lado y gracias a tu "ID o n° de ticket" vas a verla en todo momento, también generas cierto e-mail o documento informando de tu n° de ticket asignado y ahí es donde puedes colocar esa información extra.

----------------------------------

Volviendo a tu problema ...

Tu como gestionas esa información (esas "cotizaciones") .. las envias sólo por e-mail? no haces ningún registro en una BBDD o similar? (en el servidor).

Bueno .. si usases Base de datos .. el mismisimo y típico "ID" de registro (clave primaria, único y autonumérico) te serviría fielmente como ese "n° correlativo" para que lo uses tal cual o concatenes otros datos y así generes tu campo "n° de ticket" con ese formato (previo realizar el "INSERT" y obtener el último ID generado con mysql_insert_id() si es que usases Msyql)

Un saludo,
  #3 (permalink)  
Antiguo 22/02/2006, 09:51
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 11 años, 10 meses
Puntos: 0
Ok CLuster mira lo que sucede es que tuve que reestructurar todo lo que es lo de las cotizaciones........ yo esto lo mando por correo sin problemas siempre se ha manejado asi, despues lo pase a base de datos y despues me mandaron a hacer el Help Desk...... ahora exite la solucion que necesito? si la sabes please dimela jejeje ya que esto me tiene algo verde y amargado :D

Gracias.
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #4 (permalink)  
Antiguo 22/02/2006, 10:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Sistemas de "Help Desk" tienes un montón hechos .. usa google o visita sitios como www.hotscripts.com

Pero vamos . .no es nada dificil implementar lo que pides. Además dices que ya tus cotizaciones las gestionas en una BBDD (para relacionarlas) y por otro lado también las envias por e-mail (ok .. una funcionalidad más de tu sistema).

Que problema concreto tienes? .. Tienes ya claro como "armar" tu Base de datos (tablas y como relacionar con el otro sistema que ya tienes)?.

Un saludo,
  #5 (permalink)  
Antiguo 22/02/2006, 10:23
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 11 años, 10 meses
Puntos: 0
Si todo eso lo tengo claro, lo que no se es la funcion de generar el codigo aleatorio :D
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #6 (permalink)  
Antiguo 22/02/2006, 10:52
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 11 años, 10 meses
Puntos: 0
Código PHP:




 $NDAY 
=  strtolower(strftime("%d-%m-%y"time()));  

$result1 mysql_query("SELECT MAX(ticketnumber)AS TNUM FROM ".$tblrequests." WHERE (((ticketnumber) LIKE '%" $NDAY "'))"mysql_error());
while (
$row mysql_fetch_array($result1MYSQL_BOTH))
   {
   if(!empty(
$row["TNUM"])){
   
$CurRef $row["TNUM"];
   list(
$start$end) = explode("-"$CurRef);
   
$start =  "00000".($start+1);
   
$start substr($start, -4);
   
$GetRefNumber $start ."-"$NDAY;
   } else{
  
$GetRefNumber "0001-".$NDAY;
   }
}
$ticketnumber $GetRefNumber

estoy intentando esto

$NDAY es mi variable de la fecha

y verifico si el registro existe en la base de datos para que no lo vuelva a insertar .........

y genero la sumatoria si ya existe el primer registro de esa fecha

algo enredado por que lo copie de un codigo ya escrito

mi pregunta es

Con esa base que tengo ahi como logro lo que quiero? no se si estoy pasado de bruto o que la logica no me quiere dar para mas jejejeje grcias
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #7 (permalink)  
Antiguo 22/02/2006, 11:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Para todo ese "juego" que haces con los ceros a la izquierda tienes la función:

str_pad()
http://www.php.net/str_pad

No sé como gestionas (la estructura) de tu tabla de los "tickets" .. pero si usas (como deberías) un campo tipo "ID" y autonumérico .. ahí ya tendrías tu "número correlativo".

Se trata de que cuando hagas tu "INSERT" a tu BBDD generando ese registro de "ticket" .. en el mismo proceso obtienes tu "ID" último generado (no con "MAX()" que no es seguro) sino con:

mysql_insert_id()
http://www.php.net/mysql_insert_id

O su equivalente en SQL (LAST_INSERT_ID())

Y en el mismo proceso haces un "UPDATE" a ese registro para generar tu "código" de tu n° de ticket:

UPDATE tabla SET ticketnumber='$ticketnumber' WHERE id='$id'

Donde "$id" lo habras sacado por la función mysql_insert_id() y el "$ticketnumbre" es todo esa lógica que quieres aplicar (que no comparto .. pero bueno allá los requisitos de cada aplicación ... y de quien las diseña).

De hecho todo esto se debería hacer de una en SQL. Sería algo tipo: (ojo, no es correcto .. revisa la documentación de Mysql):

UPDATE tabla SET ticketnumber=CONCAT(CURDATE(),campo_numero_cotizac ion,funcion_tipo_str_pad_de_PHP(LAST_INSERT_ID())) WHERE id=LAST_INSERT_ID()

(no sé si con un INSERT directo saldría . .habría que probarlo)

Revisa la documentación de Mysql sobre su SQL y mira las funciones de tratamiento de cadenas:
http://dev.mysql.com/doc/refman/5.0/...functions.html

Un saludo,
  #8 (permalink)  
Antiguo 22/02/2006, 11:31
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 11 años, 10 meses
Puntos: 0
Ooooooook Cluster muchas gracias voy a hacerlo :D
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
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 09:15.