Foros del Web » Programando para Internet » PHP »

Sistema de noticias: Edición de tags (no consigo que funcione)

Estas en el tema de Sistema de noticias: Edición de tags (no consigo que funcione) en el foro de PHP en Foros del Web. ¡Hola a todos! Llevo programando mi blog un par de semanas y estoy actualmente atascado (llevo casi 3 días con ello y no hay narices) ...
  #1 (permalink)  
Antiguo 27/02/2010, 16:30
 
Fecha de Ingreso: febrero-2010
Mensajes: 7
Antigüedad: 11 años, 10 meses
Puntos: 0
Sistema de noticias: Edición de tags (no consigo que funcione)

¡Hola a todos! Llevo programando mi blog un par de semanas y estoy actualmente atascado (llevo casi 3 días con ello y no hay narices) en la edición de TAGS para las noticias. Voy a explicar brevemente el código y si alguien es tan amable de ayudarme, lo agradecería infinitamente !


Tengo 3 BBDD: noticias, tags y cat. La BBDD relacional de las 3 es tags; 'cat' va definiendo las categorías. En principio es un sistema sencillo y cada vez que se añaden y borran no hay problema. El gran problema es cuando entra a la edición de TAGS, de momento respeta la primera norma de que si no se edita algún tag, lo deja como está. Cuando cambias un tag ya pasa a otro if y ahí es donde no consigo que pase, para ello primero tengo que comparar lo insertado con el tag existente, si existe le borra y le vuelve a añadir (un editar sin más). No se si me he explicado adecuadamente ya que soy bastante novel programando y hago lo que puedo, aprovecho para decir que el código seguramente no esté muy depurado y se pueda rehacer algunos detalles más.

$CFG_tagslimite viene del config general, es para limitar los tags. Cada vez que se crea un input, se crea con el nombre de 'cat'+'número de 0 en adelante puesto automáticamente' (por ej.: cat3). ¡Cualquier duda preguntármela!

Código PHP:
$e3 0;
            while(
$e3 $CFtagslimite) {
                                        
                                        
$pcat "cat$e3";
                                        
$rep3 $_POST['cat'.$e3.''];
                                        
                                        if(!empty(
$rep3)){                                
                                        
                                                
// Editando...
                                                
$queryET mysql_query("SELECT * FROM cat where categoria = '$_POST[$pcat]'"$conexion);
                                                while(
$rowET=mysql_fetch_array($queryET)) {
                                                    
$categoriaET $rowET['categoria'];
                                                    
$catET $rowET['id'];
                                                }
                                                
                                                if(
mysql_num_rows($queryET)==0) { 
                                                
// Si no existe se crea...
                                                    
$queryT "INSERT INTO tags (id_noticia, id_cat) values ('$_GET[id]', '$catET')";
                                                    
mysql_query($queryT) or die(mysql_error());    
                                                    
                                                    
$queryT0 "INSERT INTO cat (categoria) values ('$_POST[$pcat]')";
                                                    
mysql_query($queryT0) or die(mysql_error());    
                                                                                                
                                                } else {
                                                
// Si existe se elimina y se vuelve a crear...
                                                    
$queryET2 mysql_query("SELECT * FROM cat where categoria = '$_POST[$pcat]'"$conexion);
                                                    while(
$rowET2=mysql_fetch_array($queryET2)) {
                                                        
$categoriaET2 $rowET2['categoria'];
                                                        
$catET2 $rowET2['id'];
                                                    }
                                                    
                                                    if(
mysql_num_rows($queryET2)==0) {     
                                                    
                                                                    
$queryT1 "DELETE FROM cat WHERE id = '$catET3'";
                                                                    
mysql_query($queryT1) or die(mysql_error());
                                                                            
                                                                    
$queryT2 "DELETE FROM tags WHERE id_noticia = '$_GET[id]' and id_cat = '$catET'";
                                                                    
mysql_query($queryT2) or die(mysql_error());
                                                                                                                            
                                                                    
$queryT3 "INSERT INTO tags (id_noticia, id_cat) values ('$_GET[id]', '$catET')";
                                                                    
mysql_query($queryT3) or die(mysql_error());    
                                                                            
                                                                    
$queryT4 "INSERT INTO cat (categoria) values ('$_POST[$pcat]')";
                                                                    
mysql_query($queryT4) or die(mysql_error());    
                                                    }    
                                                        
                                                }    
                                                         

                                        }
                                        
$e3++;
                            } 
¡Gracias a todos por la ayuda de antemano!
  #2 (permalink)  
Antiguo 27/02/2010, 16:39
Avatar de Nazari  
Fecha de Ingreso: febrero-2010
Ubicación: Canarias - Tenerife
Mensajes: 62
Antigüedad: 11 años, 11 meses
Puntos: 7
Respuesta: Sistema de noticias: Edición de tags (no consigo que funcione)

Buenas, antes de mirar tu a fondo tu codigo, por que no usar la sintaxis UPDATE del sql en ves de borrar y insertar de nuevo un registro?

Saludos
  #3 (permalink)  
Antiguo 27/02/2010, 16:41
 
Fecha de Ingreso: febrero-2010
Mensajes: 7
Antigüedad: 11 años, 10 meses
Puntos: 0
De acuerdo Respuesta: Sistema de noticias: Edición de tags (no consigo que funcione)

Aún no tengo realmente terminado el script y detalles como ese los quería mejorar. De todas formas gracias por el apunte, ¡Se me podría haber olvidado cambiarlo!
  #4 (permalink)  
Antiguo 27/02/2010, 16:47
Avatar de Nazari  
Fecha de Ingreso: febrero-2010
Ubicación: Canarias - Tenerife
Mensajes: 62
Antigüedad: 11 años, 11 meses
Puntos: 7
Respuesta: Sistema de noticias: Edición de tags (no consigo que funcione)

Yo creo que es tarde y que no doy pa mucho mas jaja, es que no entiendo cual es el error :S, podrias explicar que error te tira? o que deberia haser pero no hase?

Un saludo!
  #5 (permalink)  
Antiguo 27/02/2010, 16:50
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 19 años, 11 meses
Puntos: 29
Respuesta: Sistema de noticias: Edición de tags (no consigo que funcione)

Yo hace poco he programado un blog en el que también podías poner múltiples etiquetas. La diferencia es que las etiquetas se almacenan en una cadena dentro del registro de la entrada, con lo que le hago un explode() mediante un patrón y obtengo un array con los identificadores de todas las etiquetas de la entrada, de las que cojo su nombre y color en la tabla etiquetas. El blog es http://unosyceros.aprendeprogramacion.net y puedes echarle un vistazo. El código es algo así:

Código PHP:
Ver original
  1. $etiquetas=$fila['etiqueta'];
  2. if($etiquetas!="0") {
  3. $etiquetas=str_replace("[email protected]","",$etiquetas);
  4.         $etiquets=explode("@-",$etiquetas);
  5.     $etiqueta;  
  6.         $num_et=count($etiquets);
  7.         if($num_et!=0) {
  8.             for($i=0; $i<$num_et ; $i++) {  
  9.                 if($etiquets[$i]) {
  10.                     $jxcquery="SELECT * FROM x_etiquetas WHERE id=".$etiquets[$i];
  11.                     $jre=mysql_query($jxcquery,$cas) or die ("Error: ".mysql_error());
  12.                     $filita=mysql_fetch_array($jre);
  13.                     $nmetk=mysql_num_rows($jre);
  14.                         $coloretiqueta=$filita['color'];
  15.                         $nombreetiqueta=$filita['etiqueta'];
  16.                     mysql_free_result($jre);
  17.                 $etiqueta.="<a href='index.php?etiqueta=".$etiquets[$i]."'>".$nombreetiqueta."</a>&nbsp; <img src='img/transparente.png' border='0' style='border-width:1px;border-color:#444444;border-style:solid;background-color:".$coloretiqueta.";'><br>";
  18.                 }
  19.             }
  20.         } else {
  21.             $etiqueta="Sin etiqueta";
  22.         }
  23.        
  24.         if($nmetk==0) {
  25.             $etiqueta="Sin etiqueta";
  26.         }
  27. } else {
  28.     $etiqueta="Sin etiqueta";
  29. }
  30.  
  31.  
  32.  
  33. echo $etiqueta ;

No te he entendido bien lo que has dicho, así que no sé si es lo que necesita.s
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #6 (permalink)  
Antiguo 27/02/2010, 16:51
 
Fecha de Ingreso: febrero-2010
Mensajes: 7
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Sistema de noticias: Edición de tags (no consigo que funcione)

Tiene que editar los tags REALMENTE editados y no lo hace :( yo creo que el problema está aquí:

Código PHP:
// Si existe se elimina y se vuelve a crear...
                                                    
$queryET2 mysql_query("SELECT * FROM cat where categoria = '$_POST[$pcat]'"$conexion);
                                                    while(
$rowET2=mysql_fetch_array($queryET2)) {
                                                        
$categoriaET2 $rowET2['categoria'];
                                                        
$catET2 $rowET2['id'];
                                                    }
                                                    
                                                    if(
mysql_num_rows($queryET2)==0) {     
// Aquí tiene que editar...

No entra a editar...
  #7 (permalink)  
Antiguo 27/02/2010, 17:03
Avatar de Nazari  
Fecha de Ingreso: febrero-2010
Ubicación: Canarias - Tenerife
Mensajes: 62
Antigüedad: 11 años, 11 meses
Puntos: 7
Respuesta: Sistema de noticias: Edición de tags (no consigo que funcione)

Bueno es que si editas varios tag a la ves solo te modificara uno, puesto que cada ves que se ejecuta el while te sobrescribe las mismas variables, osea tu modificas 2 tag, se ejecuta el bucle dos veses, la priemra le da el valor a las variables que hay dentro del while por ejemplo $catET2 = 1;

y entonses se ejecuta el while de nuevo, y le da a $catET2 el valor del ultimo id que saco de la base de datos, asi que cuando llega el if, el valor de tus variables es el del ultimo tag, editado, mete el if dentro del bucle o mete una sentencia update dentro del while, si no saca datos no se ejecutara, si los saca, pues se editaran los valores.

Espero guiarte, y ver si es eso lo que pasa.
Un Saludo

Edito: veo que en el delete pones Where ID='$catET3' pero $catET3 no esta definido en ninguna parte del script.

Si no es lo de $catET3 puedes poner esto dentro del while

Cita:
$update = mysql_query("UPDATE cat SET id_noticia='".$_GET[id]."', id_Cat='".$catET."'"); //falta el WHERE
Adaptado a tu script claro. Un saludo

Última edición por Nazari; 27/02/2010 a las 17:10
  #8 (permalink)  
Antiguo 27/02/2010, 17:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 7
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Sistema de noticias: Edición de tags (no consigo que funcione)

Muchas gracias por tu ayuda Nazari. Estoy probando todo lo que comentas pero sigue sin pasar por el if que debe pasar.

De todas formas creo que ya voy mejor encaminado ;)!
  #9 (permalink)  
Antiguo 28/02/2010, 11:42
Avatar de Nazari  
Fecha de Ingreso: febrero-2010
Ubicación: Canarias - Tenerife
Mensajes: 62
Antigüedad: 11 años, 11 meses
Puntos: 7
Respuesta: Sistema de noticias: Edición de tags (no consigo que funcione)

Te imprime algun error de php o algo asi? creo que deberias de revisar las variables que usas en los where y que modificas, para ver en que puntos las defines y de que forma.

Saludos

Etiquetas: edición, tags, sitemap
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 20:04.