Foros del Web » Programando para Internet » PHP »

Comparaciones

Estas en el tema de Comparaciones en el foro de PHP en Foros del Web. Buenos días: Tengo un problemilla, el cual les voy a plantear, a ver si me pudieran echar una mano. Estoy haciendo una aplicación en php ...
  #1 (permalink)  
Antiguo 10/09/2009, 04:54
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 14 años, 11 meses
Puntos: 0
Comparaciones

Buenos días:

Tengo un problemilla, el cual les voy a plantear, a ver si me pudieran echar una mano.

Estoy haciendo una aplicación en php para almacenar los resultado de una competición de altura o pértiga.
El caso es que los resultados los se almacenan en cadenas de 3 caracteres, representando los 3 intentos que tiene cada atleta en una altura, en los cuales unicamente pueden ir los siguientes caracteres:
x -> nulo
0 -> valido
- -> paso

El caso es que tengo que comprobar que solo se puedan insertar esos tipos de caracteres teniendo en cuenta que:
- despues de un 0 (valido) no puede haber nada más en esa altura
- el resto pueden ir en cualquier posición e intercalados de cualquier manera
- si es la primera tentativa sobre esa altura, o la segunda, en las sucesivas posiciones no habra nada, es decir, puede ser 'x', 'xx', '-', etc.

Se que es un problema bastante específico y que no se si le podra servir este tipo de solución a alguien más, pero agradecería vuestra ayuda.

Seguiré con ello, y si doy con la solución os lo diré

Gracias por todo
  #2 (permalink)  
Antiguo 10/09/2009, 06:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Comparaciones

¿Podrias indicar posibles resultados? Es que estoy tratando de visualizar lo que deseas y se me esta complicando
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 10/09/2009, 06:48
 
Fecha de Ingreso: mayo-2009
Mensajes: 41
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Comparaciones

Para el primer y el segundo caso supongo que podrás jugar con substr, str_pos y strlen.
Con substr podrás sacar un caracter dado en una posicion con una longitud, y comparar que es, si es 0... etc
De distinto modo podrás ver si devuelve false o -1 con str_pos al buscarlo, si devuelve una posicion tendras que no dejar paso.
Con strlen es simplemente para no poner numeros estaticos (digamos que en un futuro, en lugar de 3 intentos quieres tener 4, no tendrías que cambiar todo el codigo.

Espero haberlo entendido bien, y habertelo explicado bien, el tercer punto no me he enterado sinceramente.
Segun he entendido:
Altura 1,50 - Jugador X ("x0")
Altura 1,70 - Jugador Y ("xx0")
Para el primer caso es tan simple como hacer .. por ejemplo..
Código php:
Ver original
  1. <?
  2. for ($i = 0 ; $i <strlen($cadenaAltura) ; $i++)
  3. {
  4. if(substr($cadenaAltura,$i,1)=="0" || $i==strlen($cadenaAltura)-1)
  5. {
  6. return "Escapamos del bucle no dejando al sistema seguir añadiendo.";
  7. }
  8. }
  9. ?>

Yo sinceramente prefiero un "str_comp" o "str_icomp" al == del if pero aun no estoy tan metido en php y no se si existen o se usa de otra manera.
  #4 (permalink)  
Antiguo 10/09/2009, 08:23
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Comparaciones

La verdad es que es un tema que no es facil ni de explicar ni de entender. Voy a intentar aclararlo:

Para cada altura el atleta tiene tres intentos, que son los que almacenamos en la base de datos. Lo unico que vamos almacenando de uno en uno, con lo que cada vez que tenemos que almacenar un resultado tenemos que tener en cuenta lo que llevaba echo para que el total no sea un resultado invalido.

0 : valido. Se marca valido cuando el atleta sobrepasa el listón.
- : paso. El atleta puede pasar cuando quiera dentro de los tres intentos, siempre y cuando no haya saltado correctamente el liston. Ej: -, --, ---, -0, --0
x: nulo. Se marca cuando el atleta falla el intento y derriba el liston. Ej: x, xx, xxx, x0, xx0

Y luego viene cuando se pueden entremezclar:
-x, x-, -x-, x--, --x, -x0, x-0

Gracias por vuestro tiempo
  #5 (permalink)  
Antiguo 10/09/2009, 09:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Comparaciones

Aqui te dejo un ejemplo en javascript. Analizalo y trata de crear tambien una verificación del lado del servidor usando este ejemplo.

Código html:
Ver original
  1. <script language="javascript">
  2. function validar(e){
  3.     tecla = (document.all)?e.keyCode:e.which;
  4.     if (tecla==8) return true;
  5.     patron = /[\-xX0]/;
  6.     patronExtra = /[0]/;
  7.     if(patronExtra.test(document.formulario.campo.value)){
  8.         return false;
  9.     }
  10.     te = String.fromCharCode(tecla);
  11.     return patron.test(te);
  12. }
  13. </head>
  14. <form name="formulario">
  15. <input type="text" name="campo" maxlength="3" onKeyPress="return validar(event)" />
  16. </form>
  17. </body>
  18. </html>
Escribe en el campo para que veas que es lo que hace. Solo te debe permitir escribir caracteres - x 0 y con las restricciones que dijiste.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
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 11:17.