Autor
|
Tema: problemas con Arrays PHP (Leído 4,394 veces)
|
Dreamcacher
|
bueno la cuestion, es que ahora mismo estoy trabajando con un sistema que se encarga de conseguir la columna categoria de una tabla llamada noticias, y comprueba si estas existen , si no es asi, guarda el resultado en un array, sino lo desecha... yo con arrays y php he trabajado muy poco, he trabajado en c++ y delphi y me estoy liando un poco con esto... el problema es que solo me devuelve un valor, el primero, aqui os dejo el codigo... <?php
$resultado=mysql_query('select categoria from noticias', $conexion);
$arrayCat2=array(); $i=0; $r=0;
while($arrayCat=mysql_fetch_array($resultado)) { for ($i2=0; $i2<$i; $i2++) { if ($arrayCat2[$i2] == $arrayCat['categoria']) { $r=1; break; } } if ($r == 0) { $arrayCat2[$i] = $arrayCat['categoria']; } $i++; }
foreach ($arrayCat2 as $categoria) { echo' <p> '.$categoria.' </p>'; } ?>
|
|
|
En línea
|
|
|
|
cassiani
Desconectado
Mensajes: 978
« Anterior | Próximo »
|
$arrayCat2=array(); $i=0; $r=0; for ($i2=0; $i2<$i; $i2++) la variable $i vale 0, el ciclo no se ejecuta ni una sola vez. usa count para contar los elementos de ese array antes de intentar comenzar el ciclo. http://php.net/manual/es/function.count.php
|
|
« Última modificación: 8 Diciembre 2010, 02:30 am por cassiani »
|
En línea
|
|
|
|
Dreamcacher
|
Con esto que esta al final de while, hace que la primera vez, no entre y lo asigne, y luego a partir de ahi, 0 sera inferior a, cuando el while ya se ha ejcutado la primera vez, y hara el for comprobando 1, por lo que entrara y comprobara el array para los huecos ($i - 1)... que no seria del tod correcto pero si fucionaria...
|
|
|
En línea
|
|
|
|
Dreamcacher
|
de hecho para estar perfecto, seria una cosa asi... <?php
$resultado=mysql_query('select categoria from noticias', $conexion);
$arrayCat2=array(); $i=0; $r=0;
while($arrayCat=mysql_fetch_array($resultado)) { for ($i2=0; $i2<$i; $i2++) { if ($arrayCat2[$i2] == $arrayCat['categoria']) { $r=1; break; } } if ($r == 0) { $arrayCat2[$i] = $arrayCat['categoria']; $i++; } }
foreach ($arrayCat2 as $categoria) { echo' <p> '.$categoria.' </p>'; } ?> asi cada vez que alarga el array, el contador del indice sube y luego cuando vuelva a iniciar el while entrara en el for, y lo repetira tantas veces como asignaciones haya hecho y no como respuestas tenga de la base de datos como era antes...
|
|
|
En línea
|
|
|
|
cassiani
Desconectado
Mensajes: 978
« Anterior | Próximo »
|
si vale no vi el contador al final u.u'' Lo que no logro entender es que es lo que quieres hacer.. mostrar las categorías sin repetirlas? fíjate que cuando la variable $r toma la primera vez el valor 1 no lo pierde mas nunca, si los primeros dos resultados de la consulta son iguales, entonces solo te mostrara la primera categoría y las demás no, tendrías que reiniciar esa variable al comienzo del while; de igual forma puedes hacer lo mismo de esta manera: 1.- $resultado = mysql_query('select categoria from noticias', $conex); { if (!in_array($arrayCat['categoria'],$arrayCat2)) $arrayCat2[] = $arrayCat['categoria']; } foreach ($arrayCat2 as $categoria) echo '<p>',$categoria,'</p>';
2.- $resultado = mysql_query('select distinct categoria from noticias', $conex); echo $arrayCat['categoria'],'<br/>';
Eso es lo que entiendo quieres hacer, si no es así deja más detalles
|
|
« Última modificación: 8 Diciembre 2010, 06:59 am por cassiani »
|
En línea
|
|
|
|
Dreamcacher
|
vale, no me fije en lo de la $r, con eso arreglado ya me ha funcionado perfecto ^^
me interesan estos metodos, yo estaba mas familiarizado con el otro porque es el qu uso en clase, con el segundo unicamente selecciona los que son diferentes, no?
pero el primero, que hace?
|
|
|
En línea
|
|
|
|
cassiani
Desconectado
Mensajes: 978
« Anterior | Próximo »
|
1. El primero lo que hace es comparar si el dato arrojado por la consulta se encuentra en el array, si no es así lo asigna, de manera que si ya se agrego X categoría solo se mostrara una vez así este repetida en la tabla Noticias. Eso lo hace usando la función in_array http://ve2.php.net/in_array 2.- En el segundo se usa la instrucción DISTINCT en la consulta SQL para mostrar registros NO duplicados, lo demás es imprimir el resultado. saludos!
|
|
« Última modificación: 9 Diciembre 2010, 01:15 am por cassiani »
|
En línea
|
|
|
|
Dreamcacher
|
ok, muchas gracias!! ^^ la verdad que es un codigo mas sencillo ^^
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problemas con arrays e indices, como volver a 0 el indice?
Programación Visual Basic
|
Fucko
|
3
|
2,124
|
11 Mayo 2010, 07:44 am
por BlackZeroX
|
|
|
Problemas con arrays C++
Programación C/C++
|
#Aitor
|
4
|
2,594
|
26 Marzo 2014, 15:35 pm
por Yoel Alejandro
|
|
|
problemas con comparación de arrays + presentación
Programación C/C++
|
doctore17
|
7
|
3,061
|
5 Diciembre 2014, 11:12 am
por Orubatosu
|
|
|
Problemas con toString en Arrays Bidimensionales
Java
|
n-utz
|
3
|
2,632
|
6 Abril 2017, 00:16 am
por n-utz
|
|
|
Problemas con arrays (unidimensionales y multidimensionales) y operadores
Java
|
kino
|
1
|
2,888
|
1 Junio 2017, 09:40 am
por 3n31ch
|
|