Ver Mensaje Individual
  #13 (permalink)  
Antiguo 08/10/2010, 22:38
Avatar de eits
eits
 
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Ayuda con bucle

le hice unos cambios para reducir la posibilidad de que se demore pero todavia le falta
Código PHP:
Ver original
  1. class EjemplarNombre {
  2.  
  3.     // Atributos //
  4.  
  5.     private $nombre; //Nombre generado
  6.  
  7.     private $palabras; //Cantidad de palabras a generar
  8.  
  9.     //private $cantidad; // Cantidad de letras del nombre generado (no se necesita)
  10.  
  11.     ////////////////   Metodos   ////////////////
  12.  
  13.     // Constructor //
  14.  
  15.     function __construct($palabras=1,$texto='') {
  16.  
  17.         $this->palabras = $palabras;
  18.  
  19.         $this->nombre = $texto;
  20.  
  21.     }
  22.  
  23.     // Obtiene un nombre aleatorio combinando las silabas //
  24.  
  25.     private function getNombre() {
  26.  
  27.         $silabas = array ("a", "e", "i", "o", "u", "wa", "we", "wi", "wo", "wu", "sa", "se", "si", "so", "su", "za", "ze", "ax", "ex", "ca", "ce", "ci", "co", "cu", "da", "de", "di", "do", "du", "fa", "fe", "fi", "fo", "fu", "ra", "re", "ri", "ro", "ru", "va", "ve", "vi", "vo", "vu", "ba", "be", "bi", "bo", "bu", "na", "ne", "ni", "no", "nu", "ma", "me", "mi", "mo", "mu", "ha", "he", "hi", "ho", "hu", "yo", "ja", "je", "ji", "jo", "ju", "la", "le", "li", "lo", "lu", "pa", "pe", "pi", "po", "pu", "al", "el", "tha", "l", "l", "l", "l", "r", "r", "r", "s", "s", "s", "a", "e", "i", "o", "a", "e", "i", "o");
  28.  
  29.         $var = ($this->palabras > 3 ) ? 2 : 4; //para mas de 3 palabras se busca entr2 2 y 3
  30.  
  31.         for($j = 1; $j <= $this->palabras; $j ++) {
  32.  
  33.             $vueltas = rand (2,$var);
  34.  
  35.             for($i = 1; $i <= $vueltas; $i ++) {
  36.  
  37.                 $this->nombre .= $silabas[rand (0, 100)];
  38.  
  39.             }
  40.  
  41.             if ($this->palabras > 1) // Mas de 1 palabra agrego espacio //
  42.  
  43.             $this->nombre .= " ";
  44.  
  45.         }
  46.  
  47.         $this->nombre;
  48.  
  49.     }
  50.  
  51.     // Muestra el nombre Final filtrado y revisado en base de datos hasta 20 caracteres//
  52.  
  53.     public function MostrarNombre() {
  54.  
  55.         $i = true;
  56.  
  57.         while($i){
  58.  
  59.             $this->getNombre();
  60.  
  61.             $rs = mysql_query ('SELECT nombre from publeje where nombre ="'.$this->nombre.'"');
  62.  
  63.             if (mysql_num_rows($rs) == 0 && $this->CantidadLetras() < 21) //
  64.  
  65.                 $i = false;
  66.  
  67.         }
  68.  
  69.         return $this->nombre;
  70.  
  71.     }
  72.  
  73.     // Cantidad de Letras Mostradas //
  74.  
  75.     public function CantidadLetras(){
  76.  
  77.        return strlen($this->nombre);
  78.  
  79.     }
  80.  
  81.      
  82.  
  83. }
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 10/10/2010 a las 22:38