Foros del Web » Programando para Internet » PHP »

Numeros aleatorios, en cuadros

Estas en el tema de Numeros aleatorios, en cuadros en el foro de PHP en Foros del Web. Tengo una base de datos con la siguiente estructura Id----Nombre 1-----Primer dato 2-----Segundo dato ... .. ... n---- Dato N Tengo una tabla de 4x4, ...
  #1 (permalink)  
Antiguo 16/06/2011, 16:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 33
Antigüedad: 13 años, 8 meses
Puntos: 0
Numeros aleatorios, en cuadros

Tengo una base de datos con la siguiente estructura

Id----Nombre
1-----Primer dato
2-----Segundo dato
...
..
...
n---- Dato N


Tengo una tabla de 4x4, necesito que esos N datos se muestren de forma aleatoria y sin repetirse en ninguna otra celda.

No tengo mucha idea de como hacerlo. Agradezco cualquier ayuda
  #2 (permalink)  
Antiguo 16/06/2011, 16:56
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 9 meses
Puntos: 41
Respuesta: Numeros aleatorios, en cuadros

realiza una consulta con SELECT DISTINCT nombre FROM tabla, asi no se te repiten los datos
  #3 (permalink)  
Antiguo 16/06/2011, 22:16
 
Fecha de Ingreso: septiembre-2010
Mensajes: 33
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Numeros aleatorios, en cuadros

He solucionado parcialmente el problema,

la consulta es

Código:
SELECT DISTINCT id
FROM anuncios
WHERE activo=1
ORDER BY RAND()
Sin embargo, si pongo que me muestre los resultados

pongo esto, en cada celda:

Código PHP:
<?php echo $row_Consulta1['id']; ?>
Cada vez que cargo me muestra un numero diferente, pero en todas las celdas el mismo numero.

Intenté creando 16 consultas diferentes y en cada celda, soluciona en parte, pero da la posibilidad que en las 16 celdas haya algunas que se repitan.

Como puedo hacer para que no pase eso?

Gracias
  #4 (permalink)  
Antiguo 16/06/2011, 22:27
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Numeros aleatorios, en cuadros

te imprime todos igual por que lo que estas trayendo es un array, pero no lo imprimes como un array

lo debes recorrer con un while
Código PHP:
Ver original
  1. <?php
  2. while ($row_Consulta1 = mysql_fetch_array($result){
  3.     echo $row_Consulta1['id'];
  4. }
  5. ?>

PD lo de las 16 consultas es un camino totalmente equivocado.
  #5 (permalink)  
Antiguo 16/06/2011, 22:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 33
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Numeros aleatorios, en cuadros

Gracias por tan rápida respuesta.

Me da este error

Parse error: syntax error, unexpected '{' in C:\AppServ\www\insittu\index2.php on line 91

La linea 91 es:

Código PHP:
while ($row_Consulta1 mysql_fetch_array($result){ 
Lo puse tal cual lo enviaste
  #6 (permalink)  
Antiguo 16/06/2011, 22:43
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Numeros aleatorios, en cuadros

me falto cerrar un parentesis,

Código PHP:
Ver original
  1. while ($row_Consulta1 = mysql_fetch_array($result)){

y aparte tienes que adaptarlo a tu código, por que $result es la variable que trae el resultado del query
Código PHP:
Ver original
  1. $con = ('localhost', 'user', 'pass');
  2. $sql = 'SELECT * FROM BLA';
  3. $result = mysql_query($sql, $con);
  4. while ($row_Consulta1 = mysql_fetch_array($result){
  5.     echo $row_Consulta1['id'];
  6. }

pero no se como lo hagas tú, solo lo digo por si acaso

espero que eso ya lo sepas. :)
  #7 (permalink)  
Antiguo 16/06/2011, 22:59
 
Fecha de Ingreso: septiembre-2010
Mensajes: 33
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Numeros aleatorios, en cuadros

Hola, gracias.

Bueno, no soy tan mago en esto del PHP y MYSQL jejeje

Mira, la consulta es la siguiente:

Código:
mysql_select_db($database_AnunciosWeb, $AnunciosWeb);
$query_Consulta1 = "SELECT DISTINCT id FROM anuncios WHERE activo=1 ORDER BY RAND()";
$Consulta1 = mysql_query($query_Consulta1, $AnunciosWeb) or die(mysql_error());
$row_Consulta1 = mysql_fetch_assoc($Consulta1);
$totalRows_Consulta1 = mysql_num_rows($Consulta1);
Y en el codigo html pongo lo siguiente:

Código PHP:
<tr>
        <td width="206"><?php while ($row_Consulta1 mysql_fetch_array($Consulta1)){ echo $row_Consulta1['id'];   } ?></td>
        <td width="206"><?php while ($row_Consulta1 mysql_fetch_array($Consulta1)){ echo $row_Consulta1['id'];   } ?></td>
        <td width="206"><?php while ($row_Consulta1 mysql_fetch_array($Consulta1)){ echo $row_Consulta1['id'];   } ?></td>
        <td width="206"><?php while ($row_Consulta1 mysql_fetch_array($Consulta1)){ echo $row_Consulta1['id'];   } ?></td>
      </tr>
Pero me genera un numero algo asi: 61826225122314517181337284191021241522916, siempre diferente

Y solo lo genera en la primera celda.

Donde esta el error?
  #8 (permalink)  
Antiguo 16/06/2011, 23:13
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Numeros aleatorios, en cuadros

No pues si andas perdido, y yo cansado asi que

Código PHP:
Ver original
  1. $con = mysql_connect('localhost', 'user', 'pass');
  2. $bd = mysql_select_db($database_AnunciosWeb) or die ("Verifique la Base de Datos");
  3. $sql = 'SELECT DISTINCT id FROM anuncios WHERE activo=1 ORDER BY RAND()';
  4. $result = mysql_query($sql, $con);
  5. $i = 1;
  6. echo '<table>';
  7. while ($row_Consulta1 = mysql_fetch_array($result)) {
  8.     if ($i == 1 || ($i - 1) % 4 == 0) {
  9.         echo '<tr>';
  10.     }
  11.     echo '<td>'.$row_Consulta1['id']. '</td>';
  12.     if ($i % 4 == 0) {
  13.         echo '</tr>';
  14.     }
  15.     $i++;
  16. }
  17. echo '</table>';

solo sustituye los valores en mysql_connect y mysql_select_db

te servirá para entender.
  #9 (permalink)  
Antiguo 16/06/2011, 23:28
 
Fecha de Ingreso: septiembre-2010
Mensajes: 33
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Numeros aleatorios, en cuadros

Ohh que grande, muuuchisimas gracias.

Como solo eran 16 celdas, le puse a la consulta lo siguiente


SELECT DISTINCT id FROM anuncios WHERE activo=1 ORDER BY RAND() LIMIT 0,17

Le ponia 16 pero solo me mostraba 15, entonces le puse 17, no se porque pasa, pero ya funciona tal.
  #10 (permalink)  
Antiguo 17/06/2011, 11:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 33
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Numeros aleatorios, en cuadros

Ok, compliquemosla un poco más.

A la base de datos agregemosle 2 campos más, uno que se llame "categoria" y otro que se llame "ciudad" que puede variar entre 1 y n.

Para que en el anuncio.php?ciudad=X&categoria=Y

Siendo X y Y los valores respectivos a ciudad y categoria.

Código PHP:
mysql_select_db($database_AnunciosWeb$AnunciosWeb);
$categoria $_GET['categoria'];
$ciudad $_GET['ciudad'];
$query_Consulta2 "SELECT DISTINCT id FROM anuncios WHERE activo=1 AND categoria='$categoria' AND ciudad='$ciudad'  ORDER BY RAND() LIMIT 0,17";
$Consulta2 mysql_query($query_Consulta2$AnunciosWeb) or die(mysql_error());
$row_Consulta2 mysql_fetch_assoc($Consulta2);
$totalRows_Consulta2 mysql_num_rows($Consulta2); 
Código HTML:
<?php echo '<table width="834" border="0" cellspacing="2" cellpadding="0">';
while ($row_Consulta2 = mysql_fetch_array($Consulta2)) {
    if ($i == 1 || ($i - 1) % 4 == 0) {
        echo '<tr>';
    }
    echo '<td width="206"><a href="anuncio.php?id='.$row_Consulta2['id']. '"><img src="anuncios/'.$row_Consulta2['id'].'.jpg" width="206" height="160" border="0" /></a></td>';
    if ($i % 4 == 0) {
        echo '</tr>';
    }
    $i++;
}
echo '</table>'; ?> 
Cuando filtro por URL en ciudad o categoria, si me filtra y me ordena, pero por ejemplo en una categoria que tiene 5 datos, solo me muestra 4, en la que tiene 2 datos solo me muestra 1. Es decir 1 menos de los que realmente hay.

Última edición por EduardoP737; 17/06/2011 a las 14:45 Razón: Correccción en mensaje

Etiquetas: cuadros, numeros, aleatoria
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 06:55.