Problema actualizando un registro en MySQL

Iniciado por camdark, 13 Diciembre 2006, 05:51 AM

0 Miembros y 1 Visitante están viendo este tema.

camdark

Hola amigos,

Tengo un problemon, tengo el siguiente codigo:

<?php
require("admin/config.php");
@
mysql_connect("$host""$user""$pass") or die ("Imposible conectar al servidor MySQL.");
@
mysql_select_db("$db");

$query1 mysql_query("SELECT * FROM trucos WHERE id='$_GET[id]'");
$truco mysql_fetch_array($query1);
++
$truco[lecturas];
mysql_query("update trucos set lecturas='$truco[lecturas]' where id='$_GET[id]'");
mysql_close();
?>


Se supone que cada vez que ingreso a esa pagina se deberia actualizar el registro lecturas de la base de datos sumandose 1 al valor actual, pero resulta que aveces se suman 2 o 3 y no tengo idea porque, lo pruebo en localhost y todo PERFECTO, pero luego lo subo a un servidor linux mandrake y me da el error de que le suma 2 o 3 en vez de 1, el error esta muy raro, ojala puedan ayudarme.

Nota del moderador: USAR LAS ETIQUETAS CODE!!

dominioswww

tienes adsense?? porq suele pasar q navegas or tu sitio e igusal akgun bot entra a esa pagina q tu entraste
Dominios al mejor precio desde 2.00 USD solo en
http://dpanel.dominioswww.net
http://www.dominioswww.net

camdark

Hola amigo, tengo puesto tres adsense en la pagina, quizas sea por eso, espero escuchar mas opiniones, pero el problema lo tengo cuando pasa de una lectura a 3 lectura, porque depsues no tengo mas problema, y en localhost no tengo el problema.

Ertai

Prueba esto:

<?php
require("admin/config.php");
@
mysql_connect("$host""$user""$pass") or die ("Imposible conectar al servidor MySQL.");
@
mysql_select_db("$db");

$query1 mysql_query("SELECT * FROM trucos WHERE id='$_GET[id]'");
$truco mysql_fetch_array($query1);
++
$truco[lecturas];
echo 
$truco[lecturas];
mysql_query("update trucos set lecturas='$truco[lecturas]' where id='$_GET[id]'");
mysql_close();
?>


Simplemente hay un echo de las lecturas antes de insertarlas en la base de datos, así puedes "debuggear" y ver que pasa.

Saludos.
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

Hans el Topo

¿Y eso te funciona?

Prueba con ésto...


[code]require("admin/config.php");
$conec=@mysql_connect($host, $user, $pass) or die ("Imposible conectar al servidor MySQL.");
@mysql_select_db($db);

$query1 = mysql_query("SELECT * FROM trucos WHERE id='".$_GET['id']."'",$conec);
$truco = mysql_fetch_array($query1);
$truco['lecturas']++;
mysql_query("update trucos set lecturas='".$truco['lecturas']."' where id='".$_GET['id']."'",$conec);
mysql_close();


por cierto yo lo haría asi...xD


if($id=$_GET['id']){
    $conec=@mysql_connect($host, $user, $pass) or die ("Imposible conectar al servidor MySQL.");
@mysql_select_db($db);

  mysql_query("update trucos set lecturas=lecturas+1  where id='$id'",$conec);
  mysql_close();}



espero te sirva de ayuda, las arrays suelen ser bastante quisquillosas con eso de implementarlas dentro de cadenas a pelo...por eso me extraño que no te diese error

P.D que rápido es Ertai xD[/code]
 

camdark

hola amigos, no me funciono el codigo de hans, y ya habia intentado lo que decia ertai, puse un echo antes y desdes de incrementar el valor y todo se veia bien, pero le daba actualizar y pasaba de 1 a 4 y no pude concluir nada haciendo los echo....

camdark

Hola amigos,

Quite el codigo de todos los adsense google, y subi el sitio y que creen..., problema solucionado, los registros se actualizaban bien, seguramente el robot de adsense tambien ingresa a la pagina y por eso me contabiliza como lecturas, ya tengo reconocido el problema, ahora que puedo hacer?

alone-in-the-chat

verificar que no es el bot :P

function GetBotInfo()
   {
      global $IS_GOOGLE, $IS_MSN, $IS_YAHOO, $IS_OTHER_SE, $IS_ASK;
     
      if (strpos($_SERVER["HTTP_USER_AGENT"],"Googlebot") === false)
         if (strpos($_SERVER["HTTP_USER_AGENT"],"Slurp") === false)
            if (strpos($_SERVER["HTTP_USER_AGENT"],"msnbot") === false)
               if (strpos($_SERVER["HTTP_USER_AGENT"],"Teoma") === false)
                  if (strpos($_SERVER["HTTP_USER_AGENT"],"bot") === false) {}
                  else {
                     $IS_OTHER_SE = true;
                  }
               else {
                  $IS_ASK = true;
            }
            else {
               $IS_MSN = true;
            }
         else {
            $IS_YAHOO = true;
         }
      else {
         $IS_GOOGLE = true;
      }
   }
   
     function IsBot()
   {
      global $IS_GOOGLE, $IS_MSN, $IS_YAHOO, $IS_OTHER_SE, $IS_ASK;

      return $IS_GOOGLE || $IS_MSN || $IS_YAHOO || $IS_OTHER_SE || $IS_ASK;
   }
GetBotInfo();

crea un archivo bot.php has un include y luego llama a isBot() si te devuelve 1 es un Bot si te da 0 no es un bot ;) prueba con eso

has un include
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b

camdark

Hola amigos, me di cuenta que cada vez que me metia a la pagina que contaba y actualizaba el registro lecturas tambien se metia dos veces el robot de google, revise los Logs de accceso y me di cuenta del nombre del bot y escribi la siguiente proteccion y mi vida cambio xD

<?
if (eregi("Mediapartners-Google/2.1", $_SERVER['HTTP_USER_AGENT'])) {}
else {++$truco[lecturas]; mysql_query("update trucos set lecturas='$truco[lecturas]' where id='$_GET[id]'");}
mysql_close();
?>

Si ven alguna posible mejora en el codigo avisenme, saludosssss