Foros del Web » Programando para Internet » PHP »

Numerar explode...

Estas en el tema de Numerar explode... en el foro de PHP en Foros del Web. Hola foro, Tengo este pequenyo codigo: Código PHP: <?php  mysql_connect ( $host , $user , $password );  $result  =  mysql_db_query ( "prueba" , "select * from prueba" );  ...
  #1 (permalink)  
Antiguo 03/02/2004, 05:42
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 14 años
Puntos: 0
Numerar explode...

Hola foro,

Tengo este pequenyo codigo:

Código PHP:
<?php 
mysql_connect
($host,$user,$password); 
$result mysql_db_query("prueba","select * from prueba"); 
while(
$row mysql_fetch_array($result)) { 
$explo explode(","$row["contenido"]); 

for(
$i=0$i count($explo); $i++) 

echo (
"$i $explo[$i]<BR>\r"); 

}
?>
Que me devuelvde esto:

0 hola
1 adios
2 pera
3 melocoton
4 manzana
5 naranja
0 casa
1 coche
2 camion
0 flipando

Y lo que necesitaria es que me numere todos de 0 a X items, segun los que hayan, o sea en este caso "hola" seria 0 y flipando seria 10, cada vez que empieza a contar desde cero es una fila distinta dentro de la tabla.
Alguien sabe como lo puedo hacer para que los cuente todos juntos?

Saludos y gracias!!
  #2 (permalink)  
Antiguo 03/02/2004, 06:08
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Tienes 2 opciones:

1.- Usas un contador para el "indice" y otro para el explode():
Código PHP:
<?php 
mysql_connect
($host,$user,$password); 
$result mysql_db_query("prueba","select * from prueba"); 
$cont=0;
while(
$row mysql_fetch_array($result)) { 
$explo explode(","$row["contenido"]); 

for(
$i=0$i count($explo); $i++) 

echo (
"$cont $explo[$i]<BR>\r"); 
$cont++;

}
?>
2.- Juntas todos los registros en una sola cadena y haces el explode() de esa cadena (puede haber problemas si quedan elementos vacios):
Código PHP:
<?php 
mysql_connect
($host,$user,$password); 
$result mysql_db_query("prueba","select * from prueba"); 
$cadena='';
while(
$row mysql_fetch_array($result)) { 
$cadena .= ','.$row["contenido"]; 
}
$exploexplode(","$cadena); 

for(
$i=0$i count($explo); $i++) 

echo (
"$i $explo[$i]<BR>\r"); 


?>
La opcion uno es mas del estilo "usar y tirar" los datos, mientras que con la segunda tienes mas flexibilidad a la hora de manejar esos datos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 03/02/2004 a las 06:12
  #3 (permalink)  
Antiguo 03/02/2004, 06:43
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 14 años
Puntos: 0
Ok josemi, en ambos casos funciona, pero en el segundo ejemplo que posteas al cero no le asigna nada (de hecho 0=0) y empieza bien (hola=1). Pero matizame un par de cosas por favor, que quieres decir con lo de que el primer ejemplo es mas de usar y tirar y luego que quieres decir con lo de que pueden haber problemas si quedan elementos vacios, precisamente esto del 0?

Bueno en todo caso gracias por tu ayuda!!!


Saludos
  #4 (permalink)  
Antiguo 03/02/2004, 07:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Bueno, lo del primer elemento era un "huevo de pascua" dejado a proposito para ver si la gente ve el error y lo corrige, para que el proceso de aprendizaje sea mejor (¿ha colado? ¿no se nota que meti la pata con el codigo? )

El explode() divide por la coma. Y yo añado una coma al comienzo de cada registro, para que sea 'contenido_reg1,contenido_reg2,...' . Pero como tambien se lo añado al primer registro, lo que realmente tenemos es ',contenido_reg1,contenido_reg2,...' (fijate la coma inicial). Y es esa coma inicial la que crea ese elmento "fantasma". La solucion es sacar esa coma:
Código PHP:
<?php 
mysql_connect
($host,$user,$password); 
$result mysql_db_query("prueba","select * from prueba"); 
$cadena='';
while(
$row mysql_fetch_array($result)) { 
$cadena .= ','.$row["contenido"]; 
}

$cadena=substr($cadena,1);
$exploexplode(","$cadena); 

for(
$i=0$i count($explo); $i++) 

echo (
"$i $explo[$i]<BR>\r"); 

?>
Y sobre lo de "usar y tirar". Pues con el primer codigo no alamcenas en ningun sitio los datos. Solo los muestras. Si mas abajo quieres usarlos, tendrias que realizar de nuevo la consulta. Pero con el segundo codigo los alamacenas, y si mas abajo los necesitas, los puedes procesar. Eso si, "gasta" mas memoria (almacena toda la cadena) que el primer codigo. Todo depende para que lo vayas a usar.

Saludos.

PD2: Nunca te fies 100% del codigo que te pongan en las respuestas en el foro. Muchos (al menos yo) escribimos el codigo de cabeza segun respondemos, y se nos cuelan estos bugs. Cuando te den un codigo, intenta entender el porque y el como del codigo, incluso haciendo un seguimiento "a mano" del estado de cada variable, y revisando en el manual como funciona cada funcion.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 03/02/2004, 08:04
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 14 años
Puntos: 0
Oooleee, asi da gusto!!! Y el huevo de pascua...

Gracias MAESTRO!!
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 23:46.