Foros del Web » Programando para Internet » PHP »

Se repite un solo registro en cada fila

Estas en el tema de Se repite un solo registro en cada fila en el foro de PHP en Foros del Web. Hola a todos: Tengo un problema con un código de php. Se trata de una tabla que recoge las respuestas de un foro, y clickeando ...
  #1 (permalink)  
Antiguo 15/01/2004, 12:40
Avatar de ABAROA  
Fecha de Ingreso: junio-2002
Ubicación: Euskal Herria
Mensajes: 141
Antigüedad: 21 años, 10 meses
Puntos: 0
Se repite un solo registro en cada fila

Hola a todos:

Tengo un problema con un código de php. Se trata de una tabla que recoge las respuestas de un foro, y clickeando en los checkbox de cada mensajes, se pueden borrar.

El problema es que solo me coge un mensaje y lo repite en cada fila, en vez de mostrar todos los mensajes. ¿ Cual es la solución?

Les remito mi código:

<?
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
?>
<html>

<head>
<?include ('f_bd.inc')?>
<link href="Themes/MailBox/Style.css" rel="stylesheet" type="text/css">


</head>

<body topmargin="0" rightmargin="0" leftmargin="0">
<!--Formulario para borrar o actualizar-->

<p>&nbsp;</p>
<p>&nbsp;</p>
<form name="frmborrar" method="POST" action="ezabatu.php?message_id=<?echo $message_id?>">
<?
$sSql .= "select message_id, message_id_parent, message_title, author, message_desc, date_add";
$sSql .= " from forum_messages";

$consulta = f_leer($sSql);
$fila=mysql_fetch_array($consulta);
$numFilas=mysql_num_rows($consulta);
//f_error();
?>
<table width="700" border=1 align="center">
<tr>
<td bgcolor="#ccccff" class="baltza">id</td>
<td bgcolor="#ccccff" class="baltza">id parent</td>
<td bgcolor="#ccccff" class="baltza">izenburua</td>
<td bgcolor="#ccccff" class="baltza">egilea</td>
<td bgcolor="#ccccff" class="baltza">Deskribapena</td>
<td bgcolor="#ccccff" class="baltza">Data</td>
<td bgcolor="#ccccff" class="baltza">Ezabatu</td>
</tr>
<?

for($i=0;$i<$numFilas;$i++){
?>
<tr>
<td><?echo($fila[message_id]);?></td>
<td><?echo($fila[message_id_parent]);?></td>
<td><?echo($fila[message_title]);?></td>
<td><?echo($fila[author]);?></td>
<td><?echo($fila[message_desc]);?> </td>
<td><?echo($fila[date_add]);?></td>

<td width="73"><input type="checkbox" name="chkborrar[]" value="<?echo $fila[message_id]?>"></td>
<?}?> </tr>
<?$fila= mysql_fetch_array($consulta);?>

<tr>

<td colspan="7" align="right"><input type="submit" name="Submit" value="Ezabatu"></td>
</tr>
</table>
</form>
</body>
</html>



Necesito la respuesta para hoy si es posible, gracias.
__________________
Cobrar por ver publicidad :arriba:
  #2 (permalink)  
Antiguo 15/01/2004, 13:26
 
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona - España
Mensajes: 270
Antigüedad: 21 años, 5 meses
Puntos: 0
yo pondría la condición WHERE en el select y recorrería todas las filas con un while
  #3 (permalink)  
Antiguo 15/01/2004, 14:18
Avatar de ABAROA  
Fecha de Ingreso: junio-2002
Ubicación: Euskal Herria
Mensajes: 141
Antigüedad: 21 años, 10 meses
Puntos: 0
Gracias por tu respuesta, pero soy novata en esto, y no se cómo realizar la solución que me planteas. Algun ejemplo?

Gracias
__________________
Cobrar por ver publicidad :arriba:
  #4 (permalink)  
Antiguo 15/01/2004, 14:35
Avatar de Barraca  
Fecha de Ingreso: octubre-2001
Ubicación: Dénia
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 2
$sSql .= " from forum_messages";

pues sería si mal no me equivoco

$sSql .= " from forum_messages WHERE NOMBRE nombre (Suponiendo que tengas un campo llamado nombre y sea el que quieres comparar) = 'Variable'"; y variable puedes ser cualquier cosa que quieras comprar por ejemeplo
$nombre = barraca;
pues
$sSql .= " from forum_messages Where Nombre = '$barraca'";

Un saludo!
__________________
último proyecto:
Empresa SEO
  #5 (permalink)  
Antiguo 15/01/2004, 14:38
Avatar de Barraca  
Fecha de Ingreso: octubre-2001
Ubicación: Dénia
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 2
Perdona, soy gilipollas.
$nombre = Barraca;
$sSql .= " from forum_messages Where Nombre = '$nombre'";

Ahora si, es que estaba pensando en la mona de pascua.
  #6 (permalink)  
Antiguo 15/01/2004, 14:50
Avatar de ABAROA  
Fecha de Ingreso: junio-2002
Ubicación: Euskal Herria
Mensajes: 141
Antigüedad: 21 años, 10 meses
Puntos: 0
De acuerdo

Gracias

ahora voy a probar.
__________________
Cobrar por ver publicidad :arriba:
  #7 (permalink)  
Antiguo 15/01/2004, 16:17
Avatar de ABAROA  
Fecha de Ingreso: junio-2002
Ubicación: Euskal Herria
Mensajes: 141
Antigüedad: 21 años, 10 meses
Puntos: 0
Lo intento, lo intento, pero no sale.

cómo incorporo el while?

Gracias.

A alguien se le ocurre alguna otra solución?
__________________
Cobrar por ver publicidad :arriba:
  #8 (permalink)  
Antiguo 15/01/2004, 16:52
Avatar de Barraca  
Fecha de Ingreso: octubre-2001
Ubicación: Dénia
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 2
Como se llaman los checkbox de la página anteior???
Suponiendo que se llame "checkbox1" deberás hacer:

$variable = $http_post_vars['checkbox'];

luego haces el while, mira, mejor aun, si nos explicas las variables que recibes te hagó el while.
un saludo
__________________
último proyecto:
Empresa SEO
  #9 (permalink)  
Antiguo 15/01/2004, 18:25
Avatar de ABAROA  
Fecha de Ingreso: junio-2002
Ubicación: Euskal Herria
Mensajes: 141
Antigüedad: 21 años, 10 meses
Puntos: 0
Perdonad por voveros loc@s pero sé muy poco de esto, y tengo que hacerlo para mañana:


Las variables son las siguientes:

message_id
message_id_parent
message_title
author
message_desc
date_add
__________________
Cobrar por ver publicidad :arriba:
  #10 (permalink)  
Antiguo 15/01/2004, 18:47
Avatar de Barraca  
Fecha de Ingreso: octubre-2001
Ubicación: Dénia
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 2
coño ABAROA no duermes, eh?! jeje
anda agregame q te ayudo q esto va para largo
barracaspain[arroba][email protected]
__________________
último proyecto:
Empresa SEO
  #11 (permalink)  
Antiguo 15/01/2004, 18:49
Avatar de Barraca  
Fecha de Ingreso: octubre-2001
Ubicación: Dénia
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 2
eso sí!, date prisa que mañana madrugo
__________________
último proyecto:
Empresa SEO
  #12 (permalink)  
Antiguo 15/01/2004, 19:24
Avatar de Barraca  
Fecha de Ingreso: octubre-2001
Ubicación: Dénia
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 2
se paso tu tiempo.
Bona nit
__________________
último proyecto:
Empresa SEO
  #13 (permalink)  
Antiguo 15/01/2004, 21:24
Avatar de ABAROA  
Fecha de Ingreso: junio-2002
Ubicación: Euskal Herria
Mensajes: 141
Antigüedad: 21 años, 10 meses
Puntos: 0
Son las 3:25 y sigo por aqui.

Sí, se me pasó el tiempo, estaba liada con el diseño.

No lo he conseguido, pero ya me buscaré alguna excusa mañana para explicarle al cliente.

MUCHAS GRACIAS!!!!!
__________________
Cobrar por ver publicidad :arriba:
  #14 (permalink)  
Antiguo 15/01/2004, 21:33
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
El problema está en que estás leyendo un sólo registro...
$fila=mysql_fetch_array($consulta) lee solamente el primer registro del resultado de la consulta y mueve el puntero al siguiente...por eso hay que ejecutar esta misma línea tantas veces como registros tenga el resultado de la consulta.

Debes utilizar un bucle tipo WHILE así:
Código PHP:
while($fila=mysql_fetch_array($consulta)){
   
//Cada pasada de este bucle, va leyendo un registro nuevo.

Saludos

Última edición por jpinedo; 15/01/2004 a las 22:21
  #15 (permalink)  
Antiguo 15/01/2004, 21:37
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Debes hacer el bucle de esta forma:
Código PHP:
$consulta = f_leer($sSql);
?>
<table width="700" border=1 align="center">
<tr> 
<td bgcolor="#ccccff" class="baltza">id</td>
<td bgcolor="#ccccff" class="baltza">id parent</td>
<td bgcolor="#ccccff" class="baltza">izenburua</td>
<td bgcolor="#ccccff" class="baltza">egilea</td>
<td bgcolor="#ccccff" class="baltza">Deskribapena</td>
<td bgcolor="#ccccff" class="baltza">Data</td>
<td bgcolor="#ccccff" class="baltza">Ezabatu</td>
</tr>
<?

while($fila=mysql_fetch_array($consulta)){
?>
<tr> 
<td><?echo($fila[message_id]);?></td>
<td><?echo($fila[message_id_parent]);?></td>
<td><?echo($fila[message_title]);?></td>
<td><?echo($fila[author]);?></td> 
<td><?echo($fila[message_desc]);?> </td> 
<td><?echo($fila[date_add]);?></td> 

<td width="73"><input type="checkbox" name="chkborrar[]" value="<?echo $fila[message_id]?>"></td>
<?}?> </tr>
Como ves.. ya no es necesario que cuentes los registros... el while se ejecuta mientras hayan registros y se mueve el puntero al siguiente automáticamente...
Saludos
  #16 (permalink)  
Antiguo 19/01/2004, 08:46
Avatar de ABAROA  
Fecha de Ingreso: junio-2002
Ubicación: Euskal Herria
Mensajes: 141
Antigüedad: 21 años, 10 meses
Puntos: 0
Gracias Barraca y JPinedo. Lo he conseguido. Gracias
__________________
Cobrar por ver publicidad :arriba:
  #17 (permalink)  
Antiguo 20/01/2004, 06:07
Avatar de Barraca  
Fecha de Ingreso: octubre-2001
Ubicación: Dénia
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 2
Felicidades!
Quien la sigue la consigue, espero poder ayudarte más activamente en tu próximo post.

Un saludo
Barraca
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 17:09.