Foros del Web » Programando para Internet » PHP »

Ayuda con un pequeño script con mysql

Estas en el tema de Ayuda con un pequeño script con mysql en el foro de PHP en Foros del Web. Hola gente estoy haciendo un script pero me he quedado trabado, funciona de la siguiente manera, es una funcion a la que se le pasa ...
  #1 (permalink)  
Antiguo 05/09/2005, 08:34
 
Fecha de Ingreso: mayo-2003
Ubicación: Mar del Plata
Mensajes: 373
Antigüedad: 20 años, 11 meses
Puntos: 0
Ayuda con un pequeño script con mysql

Hola gente estoy haciendo un script pero me he quedado trabado, funciona de la siguiente manera, es una funcion a la que se le pasa un dato, comprueba si una fila existe en una tabla a partir de los datos que se le pasa a la funcion y otros mas .. si esta tabla tiene una fila con los datos existentes modifica los datos de no existir esta tabla .. crea una nueva con valor inicial de uno de sus campos en 1, al terminar de ejecutarse esto borra los registros de hace dos semanas atras o mayores de dos semanas
aca les pongo el code fijense aver si me pueden echar una mano :)

Código PHP:
function agregar_visita($pid)
{
        global 
$CONFIG;
        
$semana=date("W"); //Saber cual es el numero de semana actual
        
$semana_inserv=date("W")-2//dos semanas atras
        //comprobar si el campo del a semana actual del usuario esta creado sino
        //es asi crear uno nuevo
         
$result mysql_query("SELECT * FROM `visitas_semana` WHERE semana=$semana AND pid=$pid");
         
         if (!
$result){
             
mysql_query("INSERT INTO `visitas_semana` VALUES ($semana, $pid, 1)");
         }else{
            
mysql_query("UPDATE `visitas_semana` SET visitas=visitas+1 WHERE pid=$pid AND semana=$semana");
         }
         
//Borrar campos inservibles para no llenar la base de datos de basura
         
mysql_query("DELETE * FROM `visitas_semana` WHERE semana<=$semana_inserv AND pid=$pid");
         } 
  #2 (permalink)  
Antiguo 05/09/2005, 09:02
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Veo un error en el delete y un posible error en el insert...
En el delete no es DELETE * FROM sino que es DELETE FROM
En el insert es conveniente poner el nombre de los campos
En el select agrego un limit 1 porque te interesa saber si es vacío o no... si tiene 1.000 registros, con uno alcanza, además de que traer todos los campos tampoco tiene ninguna finalidad
Para el if uso la funcion mysql_num_rows, http://ar.php.net/manual/es/function.mysql-num-rows.php para saber si recibe datos

Para ver los error de mysql es conveniente poner que los muestre. Generalmente, después de una consulta se pone algo como "or die(mysql_error())" para ver los posibles errores de mysql.

Código PHP:
function agregar_visita($pid)
{
        global 
$CONFIG;
        
$semana=date("W"); //Saber cual es el numero de semana actual
        
$semana_inserv=date("W")-2//dos semanas atras
        //comprobar si el campo del a semana actual del usuario esta creado sino
        //es asi crear uno nuevo
         
$result mysql_query("SELECT visitas FROM `visitas_semana` WHERE semana=$semana AND pid=$pid LIMIT 1") or die(mysql_error()) ;
        
         if (
mysql_num_rows($result) == 0){
             
mysql_query("INSERT INTO `visitas_semana` (semana, pid, visitas) VALUES ($semana, $pid, 1)") or die(mysql_error()) ;;
         }else{
            
mysql_query("UPDATE `visitas_semana` SET visitas=visitas+1 WHERE pid=$pid AND semana=$semana") or die(mysql_error()) ;;
         }
         
//Borrar campos inservibles para no llenar la base de datos de basura
         
mysql_query("DELETE FROM `visitas_semana` WHERE semana<=$semana_inserv AND pid=$pid") or die(mysql_error()) ;;
         } 
Espero haberte ayudado
  #3 (permalink)  
Antiguo 05/09/2005, 09:20
 
Fecha de Ingreso: mayo-2003
Ubicación: Mar del Plata
Mensajes: 373
Antigüedad: 20 años, 11 meses
Puntos: 0
Muchiismas gracias Seppo ... completamente util tu post.. solucione todo :) adios y tks !
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 16:43.