Foros del Web » Programando para Internet » PHP »

Array para sacar las palabras de un campo

Estas en el tema de Array para sacar las palabras de un campo en el foro de PHP en Foros del Web. Un saludo a todos los del foro,quiero introducir las palabras de un campo de la base de datos (comentarios) en un array y no se ...
  #1 (permalink)  
Antiguo 27/06/2003, 10:08
 
Fecha de Ingreso: junio-2003
Mensajes: 102
Antigüedad: 20 años, 10 meses
Puntos: 0
Array para sacar las palabras de un campo

Un saludo a todos los del foro,quiero introducir las palabras de un campo de la base de datos (comentarios) en un array y no se si no funciona porque no se hace asi, o porque no se como leer bien del array.Si por ejemplo saco la primera palabra con echo "<br>$palabras=".$palabras[0]; =Resource luego sale id, luego #3 y luego en blanco los demas.
-sacarpalabras.php:
<HTML>
<HEAD>
<TITLE>Sacar palabras de un campo de tipo longtext de para introducirlas en un array</TITLE>
</HEAD>
<BODY> <h1><div align="center">Sacar palabras de un campo de tipo longtext de para introducirlas en un array</div></h1>
<br> <br>
Código PHP:
 <? //Conexion con la base 
mysql_connect("localhost","Pepe","Hola");  //Ejecutamos la sentencia SQL 
$result=mysql_db_query("mydb","select comentarios from empleados where codigo=21"); 
$palabras explode (" ",$result);  //array con todas palabras
echo "<br>$palabras=".$palabras[0]; //Resource
//next($palabras);
/*echo "<br>current($palabras)= ".current($palabras); //id
next($palabras);
echo "<br>current($palabras)= ".current($palabras); //#3
next($palabras);
echo "<br>current($palabras)= ".current($palabras);
next($palabras);
echo "<br>current($palabras)= ".current($palabras);*/
?>
<table align="center" border=1> <tr> <th>Comentarios</th> </tr>
<? //Mostramos los registros
while ($row=mysql_fetch_array($result)) { echo '<tr><td>'.$row["comentarios"].'</td></tr>'; } mysql_free_result($result) ?>
</table> <div align="center">
</BODY>
</HTML>
  #2 (permalink)  
Antiguo 27/06/2003, 10:59
 
Fecha de Ingreso: junio-2003
Mensajes: 102
Antigüedad: 20 años, 10 meses
Puntos: 0
Ya lo tengo pero ahora me da un error cuando se pasa del contenido del array Notice: Undefined offset: 35 in C:\asp\php\mysql\sacarpalabras.php on line 14

<HTML>
<HEAD>
<TITLE>Sacar palabras de un campo de tipo longtext de para introducirlas en un array</TITLE>
</HEAD>
<BODY> <h1><div align="center">Sacar palabras de un campo de tipo longtext de para introducirlas en un array</div></h1>
<br> <br> <? //Conexion con la base
mysql_connect("localhost","Pepe","Hola"); //Ejecutamos la sentencia SQL
$result=mysql_db_query("mydb","select comentarios from empleados where codigo=21");
$row=mysql_fetch_array($result);
$comentarios=$row["comentarios"];
echo $comentarios;
$palabras[] = explode (" ",$comentarios); //array con las palabras del campo comentarios

for($i=0;$palabras[0][$i];$i++)
{

echo "<br>palabra$i=".$palabras[0][$i];

}

?>
</BODY>
</HTML>
  #3 (permalink)  
Antiguo 27/06/2003, 13:50
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Tu problema esta en:
Código PHP:
for($i=0;$palabras[0][$i];$i++)

y no es un error, es un simple aviso. Tu codigo funciona, pero no es del todo correcto. Lo que pasa es que se basa en una caracteristica de PHP de que si intentas acceder a una variable que no esta definida (o el indice de un array), devuelve NULL (y dependiendo de la configuracion de mostrar los errores, muestra el notice). Y como NULL se evalua a false, finaliza el bucle como deseas.

La forma correcta de hacerla es:
Código PHP:
for($i=0;$i<count($palabras[0]);$i++)

count() devuelve el numero de elementos del array, y entonces sales del bucle cuando $i valga ese numero de elementos. Si tiene 10 elementos, los indices iran de 0 a 9 y cuando $i valga 10 saldra del bucle.

Otra forma de hacerlo seria con el foreach para recorrer el array. Miralo en el manual.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 27/06/2003, 14:19
 
Fecha de Ingreso: junio-2003
Mensajes: 102
Antigüedad: 20 años, 10 meses
Puntos: 0
Gracias Josemi soys unos cracks
  #5 (permalink)  
Antiguo 27/06/2003, 16:22
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Tal como dice josemi...

Sería mucho mas sencillo con foreach...

Código PHP:
foreach($palabras[0] as $clave => $palabra)
{
echo 
"<br>palabra".$clave."=".$palabra;

Saludos!
__________________
Manoloweb
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 01:04.