Foros del Web » Programando para Internet » PHP »

Actualizar varias noticias a la vez...

Estas en el tema de Actualizar varias noticias a la vez... en el foro de PHP en Foros del Web. Bueno... tengo el siguiente maldito código... Código PHP: $query  =  mysql_query ( "SELECT * FROM news WHERE estado='0' ORDER BY new_id DESC" );         if(isset( $_POST [ 'aceptarNoticia' ]))    {                      $select  =  mysql_query ( ...
  #1 (permalink)  
Antiguo 28/06/2006, 06:55
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Actualizar varias noticias a la vez...

Bueno... tengo el siguiente maldito código...

Código PHP:
$query mysql_query("SELECT * FROM news WHERE estado='0' ORDER BY new_id DESC");

        if(isset(
$_POST['aceptarNoticia']))    {
       
            
$select mysql_query("SELECT * FROM news ORDER BY new_id DESC LIMIT 1");
            
$r mysql_fetch_assoc($select);
           
            for(
$i 1$i <= $r['new_id']; $i++)    {
                
$noticiaId $_POST['noticia_'.$i];
                echo 
$noticiaId;
                
$update mysql_query("UPDATE news SET estado='0'
                                       WHERE new_id='"
.$noticiaId."'") or die(mysql_error());
                 if(
$update)    {
                    echo 
"Bien!";
                    
/*header('Location: '.$_SERVER['REQUEST_URI']); die();*/
                
}
             }
           
        } 
tengo varias noticias con nombre "noticia_$id" y el value es "$id"

luego con el for llamo a esas tonteras para actualizarlas mediante el id, para actualizarlas...

pero nosé porqué no me está resultando... si le pongo el if($update), me escribe bien, queriendo decir que la actualización se hizo, siendo que nunca se hizo!!!... el mysql_error tampoco me tira error... nosé que puede ser :(

si utilizo el "echo $noticiaId", escribe correctamente... pero a la hora de actualizar........................ NADA!...

antes utilizaba el mismo sistema... el mismo código y todo perfecto... nosé porque ahora no me funciona :(...
  #2 (permalink)  
Antiguo 28/06/2006, 07:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El primer $query .. que función tiene? .. (intenta siempre poner todo el código que uses en su contexto .. y si intervienen vários scripts . .pues lo mismo .. todo ayuda).

En "echo $noticiaId; " ¿te arroja correctamente los valores de tus "ID de noticia" como esperas?


Sólo te recomendaría otra forma de trabajar con formularios donde vas a usar o generar vários registros agrupados .. Me refiero a usar en lugar de:
$_POST['noticia_'.$i];

.. tratarlo como array como indica esta FAQ:
http://www.forosdelweb.com/showthrea...710#post518710

Veras que te complica la vida menos y es más natural trabajar así con ese tipo de elementos que son agrupados ...

De hecho para este tipo de casos .. El proceso sería:

Bucle(lee tus valores de tus $_POST['id_variables']){
haces el UPDATE por el ID obtenido ...
}

Se supone que tu en tu formulario anterior ya has obtenido los "Id's" de esos registros a actualizar y los pasas al script que va hacer un proceso con ese grupo de ID's obtenidos ...

Si al generar tus "ID's" en tu formulario .. lo usas tipo:

Código PHP:
<form ....
while ($row=mysql_fetch_array($resultado)){
<input type="el_que_corresponda" name="ids[]" value="<? echo $row['id'?>">
}
botón enviar ....
</form>
En tu scritp PHP de proceso .. tan sólo sería cosa de hacer:

Código PHP:
// conectas a tu BBDD .. seleccionas la BBDD a trabajar ...
// Y sólo recorres tus "Ids" array que contendrá tus valores .. 

foreach ($_POST['ids'] as $noticiaId){
  
mysql_query("UPDATE news SET estado='0' WHERE new_id='".$noticiaId."'") or die(mysql_error()); 

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 28/06/2006, 07:38
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Gracias... el posteo ahora es rapidísimo... pero sigue sin actualizar :(....

otra cosa... el $query, en este caso no tiene nada que ver... este solo muestra las noticias que no han sido aceptadas...

así que no viene al caso :)

así quedó el código ahora...

Código PHP:
            foreach($_POST['noticia'] as $noticiaId)    {
                
$update mysql_query("UPDATE news SET estado='0' 
                                       WHERE new_id='"
.$noticiaId."'") or die(mysql_error());
            }
            if(
$update)    {
                
header('Location: '.$_SERVER['REQUEST_URI']); die();
            } 
  #4 (permalink)  
Antiguo 28/06/2006, 07:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues .. estamos como al principio.

Te preguntaba si "$noticiaId" toma los valores esperados .. (hazle un echo y compruebalo).

Prueba alguna muestra de ese tipo de consultas SQL en algún GUI (phpMyadmin o el que uses) y observa si funciona tu sentencia SQL ..

(por otro lado . .no vemos la estructura de tu tabla "news" .. aunque si tuvieras problemas por ahí ya ubiese saltado la función mysql_error() con algún mensaje característico.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 28/06/2006, 08:00
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Perdón... Jojojo...

esa es la parte importante de la tabla (desde while hasta el cierre de este), la que me muestra las noticias...

y si... $noticiaId me toma los valores esperados... he visto el código que hace phpmyadmin, y es exactamente igual al mio... alguna estupidez debo estar haciendo...

Edición: Pensé que te referías a la tabla que donde pongo las noticias... así que borré el código...

la estructura de la tabla news

Código PHP:
Campo    Tipo    Nulo    Predeterminado
new_id    int
(10)    No    
autor    varchar
(25)    No    
titulo    varchar
(50)    No    
noticia    longtext    No    
nota    varchar
(255)    No    
seccion    varchar
(25)    No    
publi_date    int
(10)    S&#237;    0
show_edit_date    int(1)    No    0
edit_date    int
(10)    No    0
estado    int
(1)    No    0
fecha_aceptado    int
(10)    No    0 
esa es
  #6 (permalink)  
Antiguo 28/06/2006, 08:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Pues el tipo de dato aparentemente está bien para "SET estado='0' " .. (podrías igualmente quitar las comillas del 0 .. por probar ..)

La consulta SQL también parece estar bien ..

No creo que $noticiaId .. tenga algún espacio o algo así que pueda estar entorperciendo, en cualquier caso prueba a limpiar esa variable:

trim($noticiaId)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 28/06/2006, 08:38
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
QUE INCREIBLE!!! NO FUNCIONA!!!... bueno... será... seguiré buscando alguna solución... muchas gracias Cluster por tu ayuda :)
  #8 (permalink)  
Antiguo 28/06/2006, 09:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Supongo que el script donde usas el "UPDATE" tendrá su código correspondiente a la conexión a la BBDD y demás? .. (revisarlo por si a caso .. aunque insisto que en estos casos el "die()" a mysql_Error() debería arrojar algún problema al respecto).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 28/06/2006, 09:22
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Sí... la conexión está... o sino no me mostraría las noticias :/...

te pongo el código entero mejor :/...

Código PHP:
function aceptarNoticias()
{
    
$op $_GET['op'];
    
$do $_GET['do'];
    
    if(
$op == 'Noticias')    {
    
        switch( 
$do )    {
            case 
'aceptarNoticia':
            
$submit "<input type=\"submit\" name=\"aceptarNoticia\" value=\"Aceptar Noticias\">";
            
            
$query mysql_query("SELECT * FROM news WHERE estado='0' ORDER BY new_id DESC");
            break;
            
            case 
'negarNoticia':
            
$submit "<input type=\"submit\" name=\"negarNoticia\" value=\"Negar Noticias\">";
            
            
$query mysql_query("SELECT * FROM news WHERE estado='1' ORDER BY new_id DESC");
            break;
        }
        
        
// ACEPTAMOS O NEGAMOS LAS NOTICIAS
        
if(isset($_POST['aceptarNoticia']))    {
            
            foreach(
$_POST['noticia'] as $noticiaId)    {
                
$noticiaId trim($noticiaId);
                echo 
$noticiaId;
                
$update mysql_query("UPDATE news SET estado='0' WHERE new_id=".$noticiaId."");
                if(!
$update)    {
                    die(
mysql_error());
                }
            }
            
        }    
        
        
/*if(isset($_POST['negarNoticia']))    {
        
            $select = mysql_query("SELECT * FROM news ORDER BY new_id DESC LIMIT 1");
            $r = mysql_fetch_assoc($select);
            
            for($i = 1; $i <= $r['new_id']; $i++)    {
                $update = mysql_query("UPDATE news SET estado='1' 
                                       WHERE new_id='".$_POST['noticia_'.$i]."'")
                                       or die(mysql_error());
             }
             if($update)    {
                 header('Location: '.$_SERVER['REQUEST_URI']); die();
             }
        }*/
        
        // MOSTRAMOS LAS NOTICIAS
        
$titulo "Administrar Noticias";
        
$contenido "
        <br>
        <form method=\"post\" action=\"$_SERVER[REQUEST_URI]\">
        <table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">
            <tr>
            <tbody style='font-weight:bold;font-family:Verdana;font-size:10px;color:#a1a1a1;'>
                <td></td>
                <td>Título Noticia</Td>
                <td align=\"center\">ID Noticia</td>
            </tbody>
            <tbody style=\"font-family:Verdana;font-size:12px;\">        
        "
;
        while(
$row mysql_fetch_assoc($query))    {
            
$id $row['new_id'];
            
$contenido .= "
            <tr>
                <td>
                <input type=\"checkbox\" name=\"noticia[]\" value=\"$id\">
                </td>
                <td>"
.$row['titulo']."</td>
                <td align=\"center\">$id</td>
            </tr>
            "
;
        }
        
$contenido .= "
            </tbody>
        </tr>
        </table>
        <br>
        $submit
        </form>"
;
        
adminBox($titulo$contenido);
        
    }

  #10 (permalink)  
Antiguo 28/06/2006, 09:29
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
aquí está, para que lo veas en vivo y en directo...

http://spiderboy.gratishost.com/web2...aceptarNoticia

céntrate en "Aceptar noticias"... porque negar noticias está con el for($i =...)

:)

a ver si pillas el error :(
  #11 (permalink)  
Antiguo 30/06/2006, 19:06
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Mil perdondes por subir este tema... pero lo encontré necesario para dar a conocer mi estupidez...

yo tenía esta linea...

mysql_query("UPDATE news SET estado='0' WHERE new_id='".$noticiaId."'")

y resulta que era así... la idea era aceptarla... y poniendole cero, la estaba negando... :|

mysql_query("UPDATE news SET estado='1' WHERE new_id='".$noticiaId."'")

:( tanta estupidez por eso... yo sabía que era una estupidez...

ahora, si alguien lo desea... cierre este tema... era para darle a conocer más que nada a Cluster cual era el problema...
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:35.