elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  problemas con Arrays PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problemas con Arrays PHP  (Leído 4,143 veces)
Dreamcacher

Desconectado Desconectado

Mensajes: 30



Ver Perfil WWW
problemas con Arrays PHP
« en: 8 Diciembre 2010, 02:05 am »

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...


Código:
<?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



http://galeria.dreamcachersite.es/

...En este mundo existen tres tipos de personas, las que saben contar, y las que no...
[ Homer Simpsion ]
cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: problemas con Arrays PHP
« Respuesta #1 en: 8 Diciembre 2010, 02:26 am »

Código:
$arrayCat2=array();
$i=0;
$r=0;

Código:
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.
Código:
http://php.net/manual/es/function.count.php


« Última modificación: 8 Diciembre 2010, 02:30 am por cassiani » En línea

Dreamcacher

Desconectado Desconectado

Mensajes: 30



Ver Perfil WWW
Re: problemas con Arrays PHP
« Respuesta #2 en: 8 Diciembre 2010, 03:02 am »

Código:
$i++;

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



http://galeria.dreamcachersite.es/

...En este mundo existen tres tipos de personas, las que saben contar, y las que no...
[ Homer Simpsion ]
Dreamcacher

Desconectado Desconectado

Mensajes: 30



Ver Perfil WWW
Re: problemas con Arrays PHP
« Respuesta #3 en: 8 Diciembre 2010, 03:04 am »

de hecho para estar perfecto, seria una cosa asi...

Código:
<?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



http://galeria.dreamcachersite.es/

...En este mundo existen tres tipos de personas, las que saben contar, y las que no...
[ Homer Simpsion ]
cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: problemas con Arrays PHP
« Respuesta #4 en: 8 Diciembre 2010, 06:39 am »

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.-
Código
  1. $resultado = mysql_query('select categoria from noticias', $conex);
  2. $arrayCat2 = array();
  3. while($arrayCat=mysql_fetch_array($resultado))
  4. {
  5. if (!in_array($arrayCat['categoria'],$arrayCat2))
  6. $arrayCat2[] = $arrayCat['categoria'];
  7. }
  8. foreach ($arrayCat2 as $categoria)
  9. echo '<p>',$categoria,'</p>';

2.-
Código
  1. $resultado = mysql_query('select distinct categoria from noticias', $conex);
  2. while($arrayCat=mysql_fetch_array($resultado))
  3. echo $arrayCat['categoria'],'<br/>';
  4.  

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

Desconectado Desconectado

Mensajes: 30



Ver Perfil WWW
Re: problemas con Arrays PHP
« Respuesta #5 en: 8 Diciembre 2010, 22:33 pm »

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



http://galeria.dreamcachersite.es/

...En este mundo existen tres tipos de personas, las que saben contar, y las que no...
[ Homer Simpsion ]
cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: problemas con Arrays PHP
« Respuesta #6 en: 9 Diciembre 2010, 01:10 am »

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
Código:
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.
Código:
http://dev.mysql.com

saludos!
« Última modificación: 9 Diciembre 2010, 01:15 am por cassiani » En línea

Dreamcacher

Desconectado Desconectado

Mensajes: 30



Ver Perfil WWW
Re: problemas con Arrays PHP
« Respuesta #7 en: 9 Diciembre 2010, 10:16 am »

ok, muchas gracias!! ^^ la verdad que es un codigo mas sencillo ^^
En línea



http://galeria.dreamcachersite.es/

...En este mundo existen tres tipos de personas, las que saben contar, y las que no...
[ Homer Simpsion ]
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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 1,972 Último mensaje 11 Mayo 2010, 07:44 am
por BlackZeroX
Problemas con arrays C++
Programación C/C++
#Aitor 4 2,363 Último mensaje 26 Marzo 2014, 15:35 pm
por Yoel Alejandro
problemas con comparación de arrays + presentación
Programación C/C++
doctore17 7 2,712 Último mensaje 5 Diciembre 2014, 11:12 am
por Orubatosu
Problemas con toString en Arrays Bidimensionales
Java
n-utz 3 2,413 Último mensaje 6 Abril 2017, 00:16 am
por n-utz
Problemas con arrays (unidimensionales y multidimensionales) y operadores
Java
kino 1 2,720 Último mensaje 1 Junio 2017, 09:40 am
por 3n31ch
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines