Buenas,
Bueno, Tengo que arrojar todas las combinaciones posibles sin repetir. segun un conjuto X de numeros.
Yo quise hacerlo estatico, con 10 numeros -> {0,1,2,3,4,5,6,7,8,9}
sacar todas las combinaciones posibles sin repetir y de menor a mayor.
Osea la forma para lograrlo es a travez de un ciclo for
<?
for($a=0;$a<=7;$a++)
{
for($b=$a+1;$b<=8;$b++)
{
for($c=$b+1;$c<=9;$c++)
{
print("$a-$b-$c<br>\n");
}
}
}?>
--> Bien con ello arrojo todas las combinaciones posibles y en orden MENOR a MAYOR.
( es solo cosa de agregarle un printf ("$a -$b-$c"); )
AHORA, como hago para que se me guarden todas las combinaciones arrojadas (120) , en la base de datos ?
PD: tambien lo podria hacer mas Didactico, que el usuario me diga las combinaciones totales .. segun el string que el me diga, pero priemro hacerlo con este .
gracias...
Esto porque , pense hacerlo estatico total, preguntando en este tema, pero me causa mucho comflicot de esperas, y hay que actualizar a ratos, y con metodo de condicionales tengo que actualizar mucho porque se repiten "121",
gracias por leer
http://foro.elhacker.net/php/asesoria_iquest_quiero_que_me_arroje_3_numeros_aleatorios_pero-t296442.0.html (http://foro.elhacker.net/php/asesoria_iquest_quiero_que_me_arroje_3_numeros_aleatorios_pero-t296442.0.html)
Hola,
El proceso sería mas o menos el siguiente:
1. Reemplace print("$a-$b-$c<br>\n"); por $resultado = "$a-$b-$c<br>\n";
2. Busque en google como crear una base de datos y la creas.
3. Busque en google como crear una tabla y la creas.
4. Busque en google como crear un campo y lo creas.
5. Busque en google como establecer una conexión a la base de datos creada en 1. y lo codificas
6. Busque en google como hacer un INSERT y lo codificas, luego la variable a guardar es $resultado.
7. Busque en google como hacer un SELECT para traerte la información almacenada y lo codificas.
8. Haces un echo del resultado obtenido de la consulta del SELECT y te debería mostrar lo mismo que te está mostrando con el print("$a-$b-$c<br>\n");
Saludos.
EDITO:
Eh, una duda,
si yo pruebo remplazando el "printf", por --> $resultado
pues el ciclo for " MUERE" ,porque esto ?
ya que decidi probar y mostrar en pantalla con echo.
y solo me muestra los valores ultimos que estan por defecto --> 7 -8-9
for($a=0;$a<=7;$a++)
{
for($b=$a+1;$b<=8;$b++)
{
for($c=$b+1;$c<=9;$c++)
{
$resultado = ("$a-$b-$c<br>\n");
}
}
}
echo "$resultado";
Entonces al momento de ingresar a la Base de datos, , solo me ingresa 1 fila, con el 7-8-9.
Cita de: ~V en 15 Junio 2010, 04:09 AM
EDITO:
Eh, una duda,
si yo pruebo remplazando el "printf", por --> $resultado
pues el ciclo for " MUERE" ,porque esto ?
No muere, error mío :P
debe ser así: $resultado
.= $a-$b-$c."<br />";
Debes observar el punto antes del signo igual, con ello indicas que concatenas lo que tenía almacenado la variable $resultado con $a-$b-$c."<br />";
Saludos!
Ahh, mira Haciendo eso que me dices, claro me las ingresa, pero en una sola fila.
ID
--- |-------|-------|-
160| 0-1-2
0-1-3
0-1-4
etc.....
Entonces lo que hice fue, Incluir el
mysql_query("insert into prueba (Nombre) values ('$resultado')",$link);
dentro del ciclo for, considerando el echo de ir guardando cada registro, y a la vez ir almacenando.
Y en ese caso, cumple con lo que se queria.
EDITO
Listo ahora ya me arroja las combinaciones aleatorias.
gracias
les dejare el codigo, quizás mas de alguien lo necesite.
<?php
// pretendemos mostrar una sola combinación que ya esta ingresada.
include("conex.php");
$link=Conectarse();
$sql = "SELECT * FROM prueba"; //colocasla base de datos
if ($result = mysql_query($sql)) {
$randval = rand(0, mysql_num_rows($result) - 1);
$link = mysql_result($result, $randval, "Nombre");//colocas el nombre del campo donde se almaceno los datos
mysql_close();
echo $link;
}
?>
Buenas,
Claro, pensé que querías todo en un solo campo, y es correcta la solución, si necesitabas los resultados en campos distintos el INSERT puede ir dentro del for anidado.
Me alegro que te sirva mi colaboración, mucha suerte.