Foros del Web » Programando para Internet » PHP »

Sobre el "do" y el "while"

Estas en el tema de Sobre el "do" y el "while" en el foro de PHP en Foros del Web. Buenas noches, Tengo un problema con el do y el while, y paso ahora a describiroslo con detalle a ver si alguien me puede echar ...
  #1 (permalink)  
Antiguo 12/03/2010, 17:44
 
Fecha de Ingreso: enero-2007
Mensajes: 160
Antigüedad: 12 años, 10 meses
Puntos: 2
Sobre el "do" y el "while"

Buenas noches,

Tengo un problema con el do y el while, y paso ahora a describiroslo con detalle a ver si alguien me puede echar una mano.

Tengo una base de datos en la que guardo los datos: palabra y url. Queda algo así:
Cita:
ID: 1 | PALABRA: buscador | URL: http://www.google.es
ID: 2 | PALABRA: chistes | URL: http://www.yahoo.es
ID: 3 | PALABRA: humor | URL: http://www.ozu.es
Bien, ahora tengo un texto, en el que salen esas mismas palabras, pero que las quiero sustituir por su respectivo enlace. Por ejemplo, sustituyo las palabras "buscador" del texto por "<a href="URL">buscador</a>". Por ejemplo:

Cita:
ORIGINAL: Hola, me llamo Antonio y cada día uso un buscador potente para encontrar un montón de chistes y humor.

MODIFICADO: Hola, me llamo Antonio y cada día uso un <a href="http://www.google.es">buscador</a> potente para encontrar un montón de <a href="http://www.yahoo.es">chistes</a> y <a href="http://www.ozu.es">humor</a>.
Para ello tengo este código php, el cuál no consigo hacer que me funcione:

Código PHP:
$sql "SELECT * FROM enlaces"
$resultado mysql_query($sql) or die("Error");
$array mysql_fetch_assoc($resultado);

do
{
    
$texto str_replace($array->texto,"<a href='".$array->url."'>".$array->texto."</a>","Hola, me llamo Antonio y cada día uso un buscador potente para encontrar un montón de chistes y humor.");    
}
while(
$array mysql_fetch_assoc($resultado));

echo 
$texto
A ver si alguien me puede decir que es lo que me falla o que me faciliten alguna otra forma de hacerlo. Gracias de antemano compañeros
  #2 (permalink)  
Antiguo 12/03/2010, 17:56
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.654
Antigüedad: 14 años, 5 meses
Puntos: 88
Respuesta: Sobre el "do" y el "while"

el mysql_fetch_assoc($resultado) lo debes de hacer una sola ves y deberías de poner $array['texto'] porque es un arreglo associativo o de lo contrario debes usarlo así
Código PHP:
Ver original
  1. $sql = "SELECT * FROM enlaces"; //consulta
  2. $resultado = mysql_query($sql) or die("Error");//ejecutar consulta
  3. while($array = mysql_fetch_object($resultado)){//mientras se forma el objeto
  4.     $texto = str_replace($array->texto,"<a href='".$array->url."'>".$array->texto."</a>","Hola, me llamo Antonio y cada día uso un buscador potente para encontrar un montón de chistes y humor.");    
  5. }
  6. echo $texto; //mostramos el resultado
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 12/03/2010, 19:34
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.978
Antigüedad: 11 años, 4 meses
Puntos: 2192
Respuesta: Sobre el "do" y el "while"

Cita:
Iniciado por eits
el mysql_fetch_assoc($resultado) lo debes de hacer una sola ves
No, esta bien como lee la consulta, recuerda que el do { ... } while(condicion); evalua si la condicion es verdadera al final de cada iteracion, en todo caso, para colocar solamente una vez el mysql_fetch_assoc() seria con while(condicion) { ... }, donde la evaluacion se hace antes de cada iteracion.

Por lo otro, tienes toda la razon, esta tratando de manejar un objeto cuando lo que obtiene es una matriz asociativa.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 13/03/2010, 08:04
 
Fecha de Ingreso: enero-2007
Mensajes: 160
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Sobre el "do" y el "while"

Hola, antes de nada, gracias por contestar.

He probado lo que me decís, pero solo consigo que me muestre el último enlace con la palabra humor.

He hecho un seguimiento del bucle y lo que hace es repetir tantas veces el proceso como palabras o filas haya en la base de datos, y al final muestra el enlace que existe en la última fila del mysql o mejor dicho, en la última repetición del bucle.

Me podéis indicar cómo puedo hacerlo para que no solo me muestre el enlace de la última repetición del bucle, sino que además me muestre todas los demás?

Gracias de antemano.

Etiquetas: Ninguno
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 02:14.