Foros del Web » Programando para Internet » PHP »

Sumar 1 a query....

Estas en el tema de Sumar 1 a query.... en el foro de PHP en Foros del Web. Necesito hacerle un query a un campo en una tabla que tendra un valor númerico, dicho valor se tomaria en una variable y se le ...
  #1 (permalink)  
Antiguo 02/09/2003, 09:51
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Sumar 1 a query....

Necesito hacerle un query a un campo en una tabla que tendra un valor númerico, dicho valor se tomaria en una variable y se le sumaria 1.... estoy pensando algo tipo:

Código PHP:

   ssql 
=  "select campo from tabla";
   
$result mysql_query($ssql);
   ++$
$result;
   
$ssql "update tabla set campo = '$result'";

   
mysql_query($ssql); 

Última edición por hrxnet; 02/09/2003 a las 10:15
  #2 (permalink)  
Antiguo 02/09/2003, 10:06
 
Fecha de Ingreso: julio-2003
Ubicación: Europa
Mensajes: 37
Antigüedad: 20 años, 9 meses
Puntos: 0
Algo así

Código PHP:
("UPDATE tabla SET campo1 = campo1 + 1 WHERE campo2='$campo2'"
tabla (pepito) diamos que tienes 2 campos el primario (campo2) con auto incremetar con el campo2 osea WHERE (Condición)selecionas lo que quieres lo que queremos modificar por ejemplo campo2='1' modificar el contenido numerico de campo1 (Esto es donde subes) carga la cantidad actual del campo1 ( osea lo que hay antes de insertar ) y le sumas + 1. campo1 = campo1 + 1 Creo que es algo así pero no estoy muy seguro

Espero que alguno me eche una mano solo inserte el update no tengo ganas de poner mas por que creo que eso es lo que se pide pero como siempre puedo estas confundido .
__________________
Del Azul Del Cielo Al Negro Del Infierno.

Última edición por arcange|; 02/09/2003 a las 10:18
  #3 (permalink)  
Antiguo 02/09/2003, 20:12
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Ok, lo deje así...

Código PHP:

   $ssql 
"select * from contador";
   
$consulta mysql_db_query("herohat",$ssql);
   
$result mysql_fetch_array($consulta);

   
$visita $result['index'];
   echo  
$visita;
   
//++$visita

   
$ssql "update contador set index = '$visita' +1 where id = 1";

   
//ejecuto la sentencia
   
mysql_db_query("herohat",$ssql) or die(mysql_error()); 

Pero siempre me manda este error:

25You have an error in your SQL syntax near 'index = '25' + 1 where id = 1' at line 1

Última edición por hrxnet; 02/09/2003 a las 20:14
  #4 (permalink)  
Antiguo 03/09/2003, 04:09
 
Fecha de Ingreso: julio-2003
Ubicación: Europa
Mensajes: 37
Antigüedad: 20 años, 9 meses
Puntos: 0
así mejor

Hombre sep pero creo que esto mas + o - esta mas completo es muy simple pero si lo modificas un poco a tu forma añadiendo tus condiciones como tienes la bd etc.. podras hacer lo que quieras.


Código PHP:
<?
/*  Base Mysql
# phpMyAdmin SQL Dump
# version 2.5.4-dev
# [url]www.phpmyadmin.net[/url]
#
# Servidor: localhost
# Tiempo de generación: 03-09-2003 a las 11:10:44
# Versión del servidor: 4.0.14
# Versión de PHP: 4.3.3

# Base de datos : `contador`


# --------------------------------------------------------

#
# Estructura de tabla para la tabla `tabla`
#

CREATE TABLE `tabla` (
  `campo1` int(11) NOT NULL auto_increment,
  `campo2` int(11) NOT NULL default '0',
  PRIMARY KEY  (`campo1`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

#
# Volcar la base de datos para la tabla `tabla`
#

INSERT INTO `tabla` VALUES (1, 9);
INSERT INTO `tabla` VALUES (2, 0);
 */

// Bueno conectamos
mysql_connect("localhost","xxxxxxx","xxxxxxxxxx"); 
mysql_select_db("contador");

/* Cargamos la varible que puedes introducir
como quieras hay un monton de formas, 
carga el dato de una base comparado condiciones etc.... */

$campo1 $_REQUEST['sumar'];
/* beta.php?sumar=2 (Solo tenemos esta tabla si hacer un sistema que añada mas).  */

if(empty($_REQUEST['sumar'])){$campo1 "1";}
/* si no intoduces nada pos cada vez que realizas unas
 visita + 1 en beta.php   */

//Campo = campo2; (Si)

/* Esto te permite añadir por ejmpo un sistema para que cada
vez que pinche en descargas.php?soft=1 y usas esa variable
para derterminar el soft y la visita que esta realizando a
un capo del registro de la aplicación etc.......  */

mysql_query("UPDATE tabla SET campo2 = campo2 + 1 WHERE campo1='$campo1'"); 


/* UPDATE `tabla` SET `campo2` = '1' WHERE `campo1` = '2';
esto seria el resultado Si cargaras otra vez con la variable
2 UPDATE `tabla` SET `campo2` = '2' WHERE `campo1` = '2'; esto
seria el resultado

con esto modificamos un registro expecifico de la tabla campo1='$campo1'
pero podemos hacerlo de otras formas yo añado la condición por que creo
que es lo que te interesa modificar un registro determinado(Simple pero funcional). */

print "<a href='?sumar=2'>Suma 1 al registro 1<a><br>";
print 
"<br><a href='?sumar=2'>Suma 1 al registro 2<a>";

?>
__________________
Del Azul Del Cielo Al Negro Del Infierno.

Última edición por arcange|; 03/09/2003 a las 04:24
  #5 (permalink)  
Antiguo 03/09/2003, 09:12
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Código PHP:
mysql_query("UPDATE tabla SET campo2 = campo2 + 1 WHERE campo1='$campo1'"); 

Código PHP:
$ssql "update contador set index = '$visita' + 1 where id = 1"

No entiendo que esta de malo en mi sentencia de actualización.... es identica a la de vos, tu script esta muy bueno pero como dice ahí seria bueno para llevar registros de descargas.
  #6 (permalink)  
Antiguo 03/09/2003, 10:08
 
Fecha de Ingreso: julio-2003
Ubicación: Europa
Mensajes: 37
Antigüedad: 20 años, 9 meses
Puntos: 0
Información Salu2

El script no es mío si no del manual de php.net (Yo solo uni las partes + o - asta lograr lo que quiero hacer, pero mis conocimientos no dan para mucho ) asta que me invente my lenguaje o mis expresiones nunca me podría emitir la propiedad de algo como esto dado que con mirar un poco hay miles de ejemplos como este (No tiene por que haber ninguna relación unos y otros si nop que estamos limitados por el lenguaje).


Código PHP:
<?
   $ssql 
"select * from contador";
   
$consulta mysql_db_query("herohat",$ssql);
   
//$ssql = "select * from contador"; mysql_db_query("herohat","select * from contador");
   //Pero solo quieres cargar un campo o mas de un campo y sumar el resultado de todos
   
   //Aquí si que estoy perdido esto funciona ?¿?¿?
   
$result mysql_fetch_array($consulta);
  
   
$visita $result['index'];
   echo  
$visita;
   
//++$visita 
   //Final de esto funciona
   
   //mi mania es uniarlos
   
$ssql "update contador set index = '$visita' +1 where id = 1";
   
mysql_db_query("herohat",$ssql) or die(mysql_error());

?>

<?
   
/* Bueno esto ya seria la modificación a my particular 
   estilo que no puede coincidir con el tullo pero
   hace lo mismo*/


   
mysql_connect("localhost","xxxxx","xxxxx");
   
$resultado mysql_db_query("beta2","select * from tabla where campo1='2'");
   while(
$rst mysql_fetch_array($resultado)) {

   
$visita $rst['campo2'] + 1;
   
/* aquí lo que tienes es el total del campo osea si es 200
   así que lo que podrias a ahcer es sumar ya antes + 1
   y poner el resultado total*/

   
mysql_query("UPDATE tabla SET campo2='$visita' WHERE campo1='2'");
   
/* si te fijas campo2='$visita' + 1 si nop 
   que al cargar el dato lo sumo antes */
   
}
?>

Salu2 Espero que alguno con mas experiencia nos eche una manito.
__________________
Del Azul Del Cielo Al Negro Del Infierno.

Última edición por arcange|; 03/09/2003 a las 11:51
  #7 (permalink)  
Antiguo 03/09/2003, 13:00
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Cuando vos haces:

Código PHP:
$rst mysql_fetch_array($resultado
estas haciendo lo mismo que yo cuando hago:

Código PHP:
$result mysql_fetch_array($consulta); 
Cosea, tomando la consulta previa en un array...

Por otra parte, lo que vos haces con un bucle:


Código PHP:
while($rst mysql_fetch_array($resultado)) {



   
$visita $rst['campo2'] + 1
Es lo mismo que yo hago sin bucle



Código PHP:
$result mysql_fetch_array($consulta);
  
   
$visita $result['index'];
   echo  
$visita
para probarlo y provar si se esta incrementando uno por eso puse el "echo"

por otro lado, tu metodo esta muy bueno ese de sumarle uno a la varible, no se me ocurrio, buenisima por vos

Pero igual sigo con dramas, no se que carajo es que tiene la query de actualización.... mira:



Código PHP:
ysql_query ("UPDATE contador SET index = '$visita' WHERE id='1'") or die(mysql_error()); 
y me sigue dando:

26You have an error in your SQL syntax near 'index = '26' WHERE id='1'' at line 1


que conste que me lleve de tu consejo y estoy consultando así:

Código PHP:
$ssql1 "select * from contador where id='1'"

yo creo que el drama mio esta en la estructura de mi tabla.... la tabla es esta:

Código:
#
# Estructura de tabla para la tabla `contador`
#

CREATE TABLE `contador` (
  `index` int(11) default NULL,
  `id` int(11) default NULL,
  `estadistica` int(11) default NULL,
  `gnu` int(11) default NULL
) TYPE=MyISAM;

#
# Volcar la base de datos para la tabla `contador`
#

INSERT INTO `contador` VALUES (25, 1, NULL, NULL);
INSERT INTO `contador` VALUES (NULL, NULL, NULL, NULL);
  #8 (permalink)  
Antiguo 03/09/2003, 22:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo que yo no entiendo es .. para que haces una consulta a esa tabla "contador" .. para obtener el valor del campo 'index' y sumarle una unidad .. cuando lo puedes hacer todo de una en la sentencia SQL del UPDATE:

Código PHP:
   $ssql "update contador set index = index +1 where id = 1";

   
//ejecuto la sentencia
   
mysql_db_query("herohat",$ssql) or die(mysql_error()); 
Así de simple .. index = .. a lo que tenga index + 1 ... (+1 +2 o la operación que requieras .. sea matemática o alfanumérica con otras funciones del própio Mysql ..)


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 04/09/2003, 01:53
 
Fecha de Ingreso: julio-2003
Ubicación: Europa
Mensajes: 37
Antigüedad: 20 años, 9 meses
Puntos: 0
bueno

Bueno, yo creo que estamos poniendo simpre lo mismo, lo que inserte a hora Cluster, creo que es lo mismo que puse yo en el tema 1 y 2 como uno y dos cavios (creo que se podria hacer de otras formas pero es la mas efeciente) que con los campos.

En cuanto por que no carga 1 en la tabla mysql tengo un presentimiento, vacia la tabla.

El el caso de la index = '$visita' por así index='$visita' (Creo que funcionara). si nop tendremos que pensar otra forma.

Salu2 haber si alguno puede aportar algo mas
__________________
Del Azul Del Cielo Al Negro Del Infierno.

Última edición por arcange|; 04/09/2003 a las 02:00
  #10 (permalink)  
Antiguo 04/09/2003, 08:01
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Código PHP:
//Para el contador de la página /index.php
   
$ssql1 "select * from contador where id=1";
   
$consulta mysql_db_query("herohat",$ssql1);
   
$result1 mysql_fetch_array($consulta);

   
$visita $result1['index'];
   
$visita++;
   echo  
$visita;

   
// $ssql1 = "update contador set index = ".($visita + 1)." where id = 1";
   //$ssql1 = "UPDATE contador SET index=".$visita."  WHERE id=1";
   
$ssql1 "update contador set index = index +1 where id = 1";

   
//ejecuto la sentencia
   
mysql_db_query("herohat",$ssql1) or die(mysql_error()); 

Y seguimos con el mismo error:

26You have an error in your SQL syntax near 'index = index +1 where id = 1' at line 1

La verdad que ya esto paso de nivel.... :S y que conste que estoy probando esto en mi hosting y en mi pc local.
  #11 (permalink)  
Antiguo 04/09/2003, 08:13
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Quizas es que se esta investigando en un sentido eqivocado. Prueba esta soloucion: pon en tus consultas index entre backticks (`). Asi:
Código PHP:
$ssql1 "update contador set `index` = `index` +1 where id = 1"
Razon: http://www.mysql.com/doc/en/Reserved_words.html . INDEX es una palabra reservada, y no puedes usar palabras reservadas como nombres de campos o tablas sin indicarle de alguna forma a MySQL que es el nombre del campo y no la palabra reservada.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 04/09/2003, 08:46
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Dios... cuando ya tenia veía el camino todo oscuro Surgio la luz!!!..... cosas de la vida eh? Nos olvidamos por completo de las dichozas palabras reservadas!!!!...


Muchisimas Gracias a todos en especial a Josemi, la cosa funciona JOYA de todas maneras ya.
  #13 (permalink)  
Antiguo 04/09/2003, 10:34
 
Fecha de Ingreso: julio-2003
Ubicación: Europa
Mensajes: 37
Antigüedad: 20 años, 9 meses
Puntos: 0
Ese josemi Gracias ( Y perdona hrxnet por my icnorancia no semepasara eso por la caveza )

Supongo que el tema ya estara zanajado pero a hora me surge a my una duda ?

Es realmete eficiete en caunto a recursos realizar un contador de visitas en mysql ?

Salu2 haber si alguno me puede decir los pros y los contras de esto y una forma mas eficiente ( Lo agracederia mucho ).
__________________
Del Azul Del Cielo Al Negro Del Infierno.
  #14 (permalink)  
Antiguo 04/09/2003, 10:55
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
No tengo que perdonarte nada, vos solo querias ayudar, en dado caso yo también soy culpable por ignorante, je...

Con respecto a tu inquietud, yo este sistema de contador lo tengo echo con archivos de texto plano, he decidido usar mysql para mejorar la eficiencia y profesionalismo ya que con txt plano me es deficiente pues si una persona refresca la página por ejemplo le suma una visita, ahora con mysql pienso almacenar la ip del visitante en una tabla por 24 minutos, luego haciendo query a esa tabla y dependiendo si esta el ip del visitante o no es que ejecutare ese script de arriba para contar una nueva visita a esa página, lo que me gusta es que el sistema que estoy haciendo podre contar las visitas a x páginas independiente mente. De hay a que sea eficiente o no, no lo se, creeria que no abria muchos dramas pero bueno, todo dependera del uso que se le de.
  #15 (permalink)  
Antiguo 23/11/2004, 12:10
 
Fecha de Ingreso: noviembre-2004
Mensajes: 3
Antigüedad: 19 años, 5 meses
Puntos: 0
Sumar

Hola...
Miren mi consulta, es la siguiente...
Yo quiero hacer un link que me sume 1 por cada click, pero que me abra en una ventana nueva en url...
o sea por cada click que haga hits = hits + 1...
a otra cosa el url lo esto tomando desde una base de datos...

la base de datos tiene los siguiente campos.

URL | HITS | ID

Muchas gracias.
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 06:17.