Foros del Web » Programando para Internet » PHP »

funcion explode - problema

Estas en el tema de funcion explode - problema en el foro de PHP en Foros del Web. realizo una consulta a la base de datos, pero digamos que en un campo de la base de datos estan todos los datos que quiero ...
  #1 (permalink)  
Antiguo 11/11/2009, 13:31
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
funcion explode - problema

realizo una consulta a la base de datos, pero digamos que en un campo de la base de datos estan todos los datos que quiero mostrar, entonces es cuando utilizo la funcion explode para ir separando cada dato, ya que estos vienen separados por comillas.
aqui dejo el codigo.

//bd consulta
mysql_select_db($database_cnx, $cnx);
$query_registros = "SELECT registros.texto FROM registros WHERE id =1";
$registros = mysql_query($query_registros, $cnx) or die(mysql_error());
$row_registros = mysql_fetch_assoc($registros);
$totalRows_registros = mysql_num_rows($registros);

//funcion explode
$registro = $registros;
$elemento = explode(';',$registro);

//aqui lo muestro por pantalla
<?php echo $elemento[0]; ?>
<?php echo $elemento[1]; ?>
<?php echo $elemento[2]; ?>

haber si alguien me puede ayudar, gracias de antemano.
  #2 (permalink)  
Antiguo 11/11/2009, 13:58
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 6 meses
Puntos: 50
Respuesta: funcion explode - problema

Si estan separados por comillas porque en el parametro del explode coloca un punto y coma. Revise depronto es eso lo que esta impidiendo que pueda ver los registros.

Código PHP:
//bd consulta
mysql_select_db($database_cnx, $cnx);
$query_registros = "SELECT registros.texto FROM registros WHERE id =1";
$registros = mysql_query($query_registros, $cnx) or die(mysql_error());
$row_registros = mysql_fetch_result($registros,0,texto);

//funcion explode
$registro = $row_registros;
$elemento = explode(';',$registro);

//aqui lo muestro por pantalla
<?php echo $elemento[0]; ?>
<?php 
echo $elemento[1]; ?>
<?php 
echo $elemento[2]; ?>
  #3 (permalink)  
Antiguo 12/11/2009, 00:37
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

los registros estan separados por un punto y coma, x eso lo pongo en el parametro
  #4 (permalink)  
Antiguo 12/11/2009, 10:37
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 6 meses
Puntos: 50
Respuesta: funcion explode - problema

pero si se fijo en el codigo que le puse tmbien le arregle la forma en que recorria el array ya lo probo y no le funnciono?
  #5 (permalink)  
Antiguo 12/11/2009, 10:48
 
Fecha de Ingreso: noviembre-2009
Mensajes: 16
Antigüedad: 15 años
Puntos: 1
Respuesta: funcion explode - problema

Hola, la respuesta de helacer está bien, lo que le falta es una cosita que quería complementar.

$row_registros es un array, por lo que tienes que cambiar.

Código:
$registro = $row_registros["texto"];
Si el campo texto está con el formato correcto, no veo por qué vayas a tener problemas.

Saludos Coordiales.
Ing. Criatian Avila Montalvo
Microsoft Certified Professional
Zend Certified Engineer
Senior Developer Metamorf
Senior Developer Vivatravelguides.
  #6 (permalink)  
Antiguo 12/11/2009, 11:12
 
Fecha de Ingreso: septiembre-2009
Ubicación: México
Mensajes: 102
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: funcion explode - problema

Estuvo bien la respuesta que te dieron, trata de implementarla....
  #7 (permalink)  
Antiguo 14/11/2009, 16:05
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

no entiendo muy bien lo de poner "texto", pero funciona:-> $registro = $row_registros["texto"];
muchas gracias
  #8 (permalink)  
Antiguo 14/11/2009, 16:09
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

ya lo entiendo jejej
ahora lo unico es q solo muestra el primer registro de la base de datos, y necesito q los muestres todos, es decir todas las filas de la tabla,no solo la primera
  #9 (permalink)  
Antiguo 14/11/2009, 16:21
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

no doy con la tecla, siempre me repite la primera fila de la base de datos
  #10 (permalink)  
Antiguo 14/11/2009, 18:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: funcion explode - problema

Cita:
Iniciado por bolt87 Ver Mensaje
no doy con la tecla, siempre me repite la primera fila de la base de datos
por favor, se coherente... estas haciendo un WHERE id=1

por ende, siempre te va a mostrar los datos del ID = 1


si quieres que muestre todos, pues simplemente omite la comparación WHERE....
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 15/11/2009, 05:30
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

eso ya me di cuenta,lo quite de la consulta, y sigue así, lo q me pasa es q siempre repite el mismo resultado, es decir si tengo tres filas, se repite 3 veces la primera fila
  #12 (permalink)  
Antiguo 15/11/2009, 09:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: funcion explode - problema

bueno, lo que sucede es que debes iterar los resultados con un ciclo...

quizá es lo único que te hace falta...
Código PHP:
$sql 'SELECT * FROM tabla';
$res mysql_query($sql);

while (
$row mysql_fetch_array($res))
{
  
// ...

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 15/11/2009, 13:47
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

sigue sin salir....
aqui dejo cmo tengo el codigo

$query_registros = "SELECT registros.texto FROM registros";
$registros = mysql_query($query_limit_registros, $cnx) or die(mysql_error());
$row_registros = mysql_fetch_assoc($registros);
$registro = $row_registros["texto"];
$elemento = explode(';',$registro);

muestro resultado

<?php { while ($row = mysql_fetch_array($registros)); ?>

<tr>
<td><?php echo $elemento[0]; ?></td>
<td><?php echo $elemento[1]; ?></td>
<td><?php echo $elemento[2]; ?></td>
<td><?php echo $elemento[3]; ?></td>
<td><?php echo $elemento[4]; ?></td>
<td><?php echo $elemento[5]; ?></td>
<td><?php echo $elemento[6]; ?></td>
<td><?php echo $elemento[7]; ?></td>
<td><?php echo $elemento[8]; ?></td>
<td><?php echo $elemento[9]; ?></td>
</tr>
<?php } ?>
  #14 (permalink)  
Antiguo 15/11/2009, 13:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: funcion explode - problema

eso es porque debes hacer el explode() con cada elemento dentro del while(), osea... el tratamiento por cada elemento debe ir en su momento y lugar...

así, lo único que consigues es ir imprimiendo el miso valor viejo varias veces

también debes evitar hacer el fetching antes del ciclo, porque así avanzas una posición en el puntero de los resultados...

piensa eso un poco, ¿para que lo haces así??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 15/11/2009, 14:36
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

<?php do {
$registro = $row_registros["texto"];
$elemento = explode(';',$registro);
?>
<tr>
<td class="fila"><?php echo $elemento[0]; ?></td>
<td class="fila"><?php echo $elemento[1]; ?></td>
<td class="fila"><?php echo $elemento[2]; ?></td>
<td class="fila"><?php echo $elemento[3]; ?></td>
<td class="fila"><?php echo $elemento[4]; ?></td>
<td class="fila"><?php echo $elemento[5]; ?></td>
<td class="fila"><?php echo $elemento[6]; ?></td>
<td class="fila"><?php echo $elemento[7]; ?></td>
<td class="fila"><?php echo $elemento[8]; ?></td>
<td class="fila"><?php echo $elemento[9]; ?></td>
</tr>
<?php } while ($row = mysql_fetch_array($registros)); ?>

lo he puesto asi y sigue sin funcionar...

es q quiero mostrar los resultados en un tabla
  #16 (permalink)  
Antiguo 15/11/2009, 14:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: funcion explode - problema

entiende, estas usando $row_registros y esa variable no corresponde a los elementos actuales del ciclo...

necesitas usar $row ya que ese es el resultado real de cada elemento...

osea, en el ciclo asignas $row por cada vuelta... ¿porque sigues usando $row_registros??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #17 (permalink)  
Antiguo 15/11/2009, 15:08
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

gracias, la verdad es q llevo poco tiempo con esto y no se me da mui bien
bueno ya se lo he quitado, pero no me sale el primer registro, xq?
q debo hacer?
gracias y perdona las molestias

<?php do {
$registro = $row["texto"];
$elemento = explode(';',$registro);
?>
<tr>
<td class="fila"><?php echo $elemento[0]; ?></td>
<td class="fila"><?php echo $elemento[1]; ?></td>
<td class="fila"><?php echo $elemento[2]; ?></td>
<td class="fila"><?php echo $elemento[3]; ?></td>
<td class="fila"><?php echo $elemento[4]; ?></td>
<td class="fila"><?php echo $elemento[5]; ?></td>
<td class="fila"><?php echo $elemento[6]; ?></td>
<td class="fila"><?php echo $elemento[7]; ?></td>
<td class="fila"><?php echo $elemento[8]; ?></td>
<td class="fila"><?php echo $elemento[9]; ?></td>
</tr>
<?php } while ($row = mysql_fetch_array($registros)); ?>
  #18 (permalink)  
Antiguo 15/11/2009, 15:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: funcion explode - problema

Cita:
Iniciado por bolt87 Ver Mensaje
gracias, la verdad es q llevo poco tiempo con esto y no se me da mui bien
bueno ya se lo he quitado, pero no me sale el primer registro, xq?
q debo hacer? [...]
Cita:
Iniciado por pateketrueke Ver Mensaje
[...] también debes evitar hacer el fetching antes del ciclo, porque así avanzas una posición en el puntero de los resultados... [...]
me refiero a que, antes de entrar al ciclo ya estas usando mysql_fetch_assoc() para asignar $row_registros

eso hace que avance el puntero de los resultados una fila... por eso es que en tu ciclo ya no se muestra el primero...

¿se entiende??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #19 (permalink)  
Antiguo 15/11/2009, 15:38
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

si lo entendí, ya se muestran todos, pero antes d mostarme los datos, me muestra una fila d error :S
  #20 (permalink)  
Antiguo 15/11/2009, 15:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: funcion explode - problema

Cita:
Iniciado por bolt87 Ver Mensaje
si lo entendí, ya se muestran todos, pero antes d mostarme los datos, me muestra una fila d error :S
pues depende mucho que estés haciendo... recuerda que no somos adivinos de código!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #21 (permalink)  
Antiguo 15/11/2009, 15:47
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

bd
mysql_select_db($database_cnx, $cnx);
$query_registros = "SELECT registros.texto FROM registros";
$registros = mysql_query($query_limit_registros, $cnx) or die(mysql_error());
<table>
....

<?php do {
$registro = $row["texto"];
$elemento = explode(';',$registro);
?>
<tr>
<td class="fila"><?php echo $elemento[0]; ?></td>
<td class="fila"><?php echo $elemento[1]; ?></td>
<td class="fila"><?php echo $elemento[2]; ?></td>
<td class="fila"><?php echo $elemento[3]; ?></td>
<td class="fila"><?php echo $elemento[4]; ?></td>
<td class="fila"><?php echo $elemento[5]; ?></td>
<td class="fila"><?php echo $elemento[6]; ?></td>
<td class="fila"><?php echo $elemento[7]; ?></td>
<td class="fila"><?php echo $elemento[8]; ?></td>
<td class="fila"><?php echo $elemento[9]; ?></td>
</tr>
<?php } while ($row = mysql_fetch_array($registros)); ?>

intento mostrar todos los datos d una bd en una tabla
  #22 (permalink)  
Antiguo 15/11/2009, 16:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: funcion explode - problema

¿y el error es??

NOTA que estas usando variables diferentes para tu consulta $query_registros y ejecutas otra con $query_limit_registros
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #23 (permalink)  
Antiguo 15/11/2009, 16:05
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

aún asi sigue igual...

Notice: undefined offset 1 in c:/..... on line 86...
  #24 (permalink)  
Antiguo 15/11/2009, 16:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: funcion explode - problema

Cita:
Iniciado por bolt87 Ver Mensaje
[...] Notice: undefined offset 1 in c:/..... on line 86...
¿que habrá en esa linea??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #25 (permalink)  
Antiguo 15/11/2009, 16:26
 
Fecha de Ingreso: mayo-2009
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: funcion explode - problema

eso es q no tiene valores, xq en una d las filas no tiene todos los valores, y donde no tiene pone eso, pero xq me sale en la primera fila?
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 13:05.