Ver Mensaje Individual
  #12 (permalink)  
Antiguo 08/10/2010, 10:24
diegomel
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Ayuda con bucle

Buen,despues de luchar logre arreglar el problema y ajustar algunas cosas y aparetentemente anda todo bien. el problema era que yo estaba usando la misma variable para el textbox y para generar nombre entonces lo concatenaba cada ves que el bucle do while era mas de 1 entonces se pasaba de vueltas.

Para aquellos que les sirva ya que quedo bastante bien y para quien quiera modificarla, mejorarla etc, les dejo la clase que arme con cosas de este post para quien la necesite.

Código PHP:
class EjemplarNombre {
    
    
// Atributos //
    
private $nombre//Nombre generado
    
private $palabras//Cantidad de palabras a generar
    
private $cantidad// Cantidad de letras del nombre generado
    
private $texto// Texto del textbox //
    
    
    ////////////////   Metodos   ////////////////
    // Constructor //
    
function __construct($palabras=1,$texto=NULL) {
    
$this->palabras $palabras;
    
$this->texto $texto;
    }

    
    
// Obtiene un nombre aleatorio combinando las silabas //
    
private function getNombre() {
        
$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");
            
        
$var = ($this->palabras ) ? 4//para mas de 3 palabras se busca entra 2 y 3    
        
for($j 1$j <= $this->palabras$j ++) {
            if (
$j ==1// a la primera palabra se agrega el textbox $this->texto //
            
$this->nombre $this->texto;
            for(
$i 0$i <= rand (2,$var); $i ++) {
            
$this->nombre $this->nombre.$silabas [rand (0100)];
            }
            if (
$this->palabras 1// Mas de 1 palabra agrego espacio entre palabras //
            
$this->nombre $this->nombre." ";
        }
        return 
$this->nombre;
    }

    
    
// Muestra el nombre Final filtrado y revisado en base de datos hasta 20 caracteres//
    
public function MostrarNombre() {
        
$i true;
        do {
               
$this->nombre $this->getNombre();
            
$sql "SELECT nombre from publeje where nombre ='$this->nombre'";
            
$rs mysql_query ($sql);
            if (
mysql_num_rows($rs) == && strlen($this->nombre)<21)
                
$i false;
            
        } while (
$i);
    
        return 
$this->nombre;
    }
    
    
    
// Cantidad de Letras Mostradas //
    
public function CantidadLetras(){
        
$this->cantidad strlen($this->nombre);
        return 
$this->cantidad;
    }
    

para usarla es facil.

Código PHP:
$a = new EjemplarNombre(2,"Diego"); //variables opcionales, 1era cantidad de paginas / 2da texto al comienzo.
echo "Nombre Generado: ".$a->MostrarNombre();
echo 
"Cantidad de Caracteres: ".$a->CantidadLetras(); 
en la clase esta limitado a 20 letras maximo, eso lo pueden poner variable o sacarlo directamente.

Buen espero que le sirva a alguien y o puedan mejorarla.

Saludos y gracias a todos por la ayuda..