Foros del Web » Programando para Internet » PHP »

problema al cambiar datos en tabla

Estas en el tema de problema al cambiar datos en tabla en el foro de PHP en Foros del Web. buen dia, tengo un formulario el cual envia los campos a una base de datos "guestbook". pero solamente los que esten revisados y aprobados por ...
  #1 (permalink)  
Antiguo 03/05/2010, 13:24
 
Fecha de Ingreso: septiembre-2009
Ubicación: San José, Costa Rica
Mensajes: 34
Antigüedad: 14 años, 6 meses
Puntos: 0
problema al cambiar datos en tabla

buen dia, tengo un formulario el cual envia los campos a una base de datos "guestbook". pero solamente los que esten revisados y aprobados por alguien, lo cual lo hice por medio de una fila "show" dentro de la misma tabla, lo cual me funciona bien.
El problema es con la subpagina para revision de los mensajes, en la cual aparecen los mensajes que no tienen en la fila show la palabra "ver", la cual es enviada por el formulario inicial vacia con ese mismo fin
Aqui envio parte del codigo y ya la conexion a la base de datos esta hecha
Código PHP:
<?
$rows
=mysql_query("select * from guestbook where show = ''");
$total=mysql_num_rows($rows);
?>
<form name="form1" id="form1" action="agregar.php" method="post" onsubmit="return selectedVals();">
    <table>
        <tr>
            <th>
                <div align="center">
                  <input type="checkbox" name="selectall" id="selectall" onclick="CheckUncheck(<? echo $total;?>,this);" />
                   </div></th>
          <th>
                Seleccionar todos
          </th>
        </tr>
     <?
    $contador
=0;
    while(
$row=mysql_fetch_array($rows)){
    
$contador=$contador+1;
    
?>       
        <tr>
            <td><div align="center">
              <input onclick="contadorVals(this);" type="checkbox" name="idmes[]" id="idmes<? echo $contador;?>" value="<? echo $row['id'];?>" />
            </div></td>
            <td><? echo $row['name'];?>,</td>
            <td><? echo $row['message'];?></td>
        </tr>
    <?
    
}
    
?>
    <tr>
        <td colspan="2">
            <input type="submit" value="Agregar" /><input type="hidden" name="selectedchecks" value="0"/>
me da el error "Warning: mysql_num_rows()://al igual que con mysql_fetch_array(): //
supplied argument is not a valid MySQL result resource in C:\AppServ\www\pruebagb\index.php on line 52". Esto me ocurre solamente si le incluyo el "where show = ...." lo cual me es indispensable para la revision.

Luego esto me lleva a una subpagina "agregar.php"
Código PHP:
<?
mysql_connect
("localhost","usuario","password");
mysql_select_db("mibasededatos");

$idmess=$_POST['idmes'];

if(
is_array($idmess)){
    
?>
    <p>Esta seguro de agregar los siguientes registros?</p>
    <form action="agregarconfirmar.php" method="post">
        <table>
        <?
        
for($i=0;$i<count($idmess);$i++){
            
$rows=mysql_query("select * from guestbook where id=".$idmess[$i]);
            if(
mysql_num_rows($rows)){
                
$row=mysql_fetch_array($rows);
        
?>       
            <tr>
                <td><input  type="hidden" name="idmes[]" id="idmes" value="<? echo $row['id'];?>" /></td>
                <td><? echo $row['name'];?>;</td>
                <td><? echo $row['message'];?></td>
            </tr>
        <?
            
}
        }
        
?>
        <tr>
            <td colspan="2">
                <input type="submit" value="Agregar" />            </td>
        </tr>
        </table>
    </form>
    <?
}else{
    echo 
"Debe seleccionar al menos un registro";
}

?>
en esta no me da ningun problema y me anuncia los mensajes que fueron seleccionados en la pagina anterior
El problema me lo da en la pagina de confirmacion con la cual intento incluir el "ver" en la fila 'show' para que asi aparezca en el guestbook original.
Código PHP:
<?
mysql_connect
("localhost","usuario","password");
mysql_select_db("mibasededatos");

$idmess=$_POST['idmes'];
$contador=0;
$show="ver";
if(
is_array($idmess)){
        for(
$i=0;$i<count($idmess);$i++){
            
$rows=mysql_query("UPDATE guestbook SET show='$show' where id=".$idmess[$i]);
            
$contador++;
        }
        echo 
"Se han agregado $contador mensajes al guestbook";
}else{
    echo 
"No se enviaron registros para agregar";
}

?>
aunque me imprime la leyenda "Se han agregado...." bien, no me cambia la fila en la base de datos.
no se que hacer, espero haberme dado a entender y disculpen si me extendi demasiado pero preferi incluir todos los datos ya que no logro encontrar el error
Agradezco desde ya su tiempo y colaboracion, Saludos
  #2 (permalink)  
Antiguo 03/05/2010, 15:27
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: problema al cambiar datos en tabla

me parece q cuando haces las consultas a la bd no le pasas el parámetro de conexión o lo otro puede ser que no encuentre ningun registro donde show no tenga valor

el mensaje de que se han agregado con exito te lo da pq no estas preguntando si se ejecuto la sentencia de update, deberia ser
if($rows=mysql_query("UPDATE guestbook SET show='$show' where id=".$idmess[$i]) ){echo "Se han agregado $contador mensajes al guestbook"; }

lo que tu estas haciendo es preguntando si $idmess es un array en caso de serlo mandar mensaje que se actualizo la bd

Etiquetas: tablas
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 11:38.