Foros del Web » Programando para Internet » PHP »

Dudas consulta MySQL

Estas en el tema de Dudas consulta MySQL en el foro de PHP en Foros del Web. Bueno, hace un tiempo tuve el mismo problema, pero se "solucionó", esta vez no. Este es el código que me produce el problema (lo pongo ...
  #1 (permalink)  
Antiguo 23/09/2009, 05:30
 
Fecha de Ingreso: abril-2008
Mensajes: 43
Antigüedad: 16 años
Puntos: 3
Dudas consulta MySQL

Bueno, hace un tiempo tuve el mismo problema, pero se "solucionó", esta vez no. Este es el código que me produce el problema (lo pongo todo como si estuviera en el mismo fichero, en realidad las funciones están repartidas en distintos ficheros):

Código PHP:
<?php

// Esta función ejecuta la consulta SQL
function query($query)
{
    
    
$link mysql_connect('localhost','user','pass');
    
mysql_select_db('db'$link);
    
    
mysql_query("SET NAMES utf8");
    
mysql_query("SET CHARACTER_SET utf8");
    
    
$query mysql_query($query$link) or die("DB error: ".mysql_error());
    
    return 
$query;
    
    
mysql_close($link);
}

// Esta función es la encargada de purgar las variables antes de entrarlas en la DB.
function escape($string)
{
    
$link mysql_connect('localhost','user','pass');
    
mysql_select_db('db'$link);
    
    
mysql_query("SET NAMES utf8");
    
mysql_query("SET CHARACTER_SET utf8");
    
    
$string mysql_real_escape_string($string);
    
    return 
$string;
    
    
mysql_close($link);    
}

// Esta es la función que se encarga de realizar el proceso para insertar la categoría en la base de datos.
function add_category($cat_name)
{
    
$cat_name escape($cat_name);
    
$cat "INSERT INTO categorias (category_name) VALUES ('".$cat_name."');";
    
query($cat);
    
?>
    <div class="done">
        Completado
    </div>
    <?php
}

// Este es un fragmento de código del formulario, si lo pegara todo sería muy extenso.
?>
<form method="post" action="test.php">
    <div class="new_cat">                
        Añadir categoria: <input type="text" name="category_name" size="30" maxlength="64" /> <input type="submit" value="añadir" />
    </div>
    <?php
    
if (!empty($_POST["category_name"]))
    {
        
add_category($_POST["category_name"]);
    }
    
?>
</form>
Al cargar esta página en el navegador, ha de mostrar un campo para introducir texto y un botón, al escribir algo y pulsar el botón, debería insertar una fila nueva en la base de datos con el valor que se ha introducido en el campo de texto.
El problema, es que se inserta dos veces el mismo código y, lo peor de todo es que una vez insertado, cuando abandono la página, inserta una tercera línea con el mismo texto.

¿Qué estoy haciendo mal?

Saludos y muchas gracias
  #2 (permalink)  
Antiguo 23/09/2009, 07:58
 
Fecha de Ingreso: junio-2008
Mensajes: 53
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Dudas consulta MySQL

si no hay mas codigo que afecte , lo he probado y me ha funcionado bien
  #3 (permalink)  
Antiguo 23/09/2009, 08:08
 
Fecha de Ingreso: abril-2008
Mensajes: 43
Antigüedad: 16 años
Puntos: 3
Respuesta: Dudas consulta MySQL

Hola, primer de todo, gracias por responder y tomarte la molestia de probar el código.

Lo he estado volviendo a probar y me inserta 2 veces la misma fila y cuando abandono la página, una tercera vez. Pero SOLO me pasa con Firefox, no me sucede con ningún otro navegador de los que tengo instalados. No tengo ni idea de por que puede ser.

Por si sirve de ayuda, mi servidor usa PHP 5.2.6, Apache 2.2.9 y MySQL 5.0.51.

Realizaríais la consulta de otra forma? Igual si realizo la consulta de una forma distinta desaparece el problema... la verdad es que estoy alucinando, no se que relación puede tener el navegador con la consulta que ejecuta PHP en la base de datos.

Saludos y gracias.
  #4 (permalink)  
Antiguo 23/09/2009, 08:21
 
Fecha de Ingreso: junio-2008
Mensajes: 53
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Dudas consulta MySQL

curisos , porque yo lo he probado con el firefox 3.5.2 y me ha ido bien , si dices que el error se produce solo con el mozilla esta claro que el error no es de php , asi que tiene que ser de html , prueba a ver si cuela (es que no se me ocurre que puede pasar) a poner en vez de
Código PHP:
if (!empty($_POST["category_name"]))
    {
        
add_category($_POST["category_name"]);
    } 
usa isset
Código PHP:
if (isset($_POST["category_name"]))
    {
        
add_category($_POST["category_name"]);
    } 
pero ya te digo que a mi no me pasa , no sera que estas refrescando o algo y reenvia la info?
  #5 (permalink)  
Antiguo 23/09/2009, 08:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Dudas consulta MySQL

Deberías de checar que version de Firefox usas, y si esta tiene pre-fetching activada ya que esa puede causar ese problema.

Saludos.
  #6 (permalink)  
Antiguo 23/09/2009, 15:06
 
Fecha de Ingreso: abril-2008
Mensajes: 43
Antigüedad: 16 años
Puntos: 3
Respuesta: Dudas consulta MySQL

Hola, estoy usando la versión 3.5.3 de Firefox y si con el prefetch te refieres a la opción "network.prefetch-next" del about:config, sí, el valor está en true.

Ahora mismo acabo de llegar a casa y no puedo reproducir el error, ahora me funciona bien solo lo inserta una vez, no me pasa siempre... Es muy extraño :S

En caso de que sea el prefetch, que puedo hacer? No se muy bien qué relación guarda una cosa con la otra.

Saludos y muchas gracias a los dos.

Última edición por snoz; 23/09/2009 a las 15:25
  #7 (permalink)  
Antiguo 23/09/2009, 15:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Dudas consulta MySQL

El pre-fetch lo que hace es navega a las paginas linkeadas para que cuando las cargues aparezcan mucho más rápido.

Eso causa que si no tienes un buen control de flujo en tus paginas se ejecuten y pueden causar problemas como los que expones.

Saludos.
  #8 (permalink)  
Antiguo 23/09/2009, 15:25
 
Fecha de Ingreso: abril-2008
Mensajes: 43
Antigüedad: 16 años
Puntos: 3
Respuesta: Dudas consulta MySQL

Vale, ya he averiguado que era, es por el addon Web Developer, cuando tengo activada la opción de la validación de normas HTML/CSS supongo que ejecuta la página en el validador y de ahí las otras veces que lo ejecutan... Pero bien que yo cuando pongo un post en este mismo foro, o una entrada en un blog wordpress, o me registro en cualquier página con este addon activado, no me registro 5 veces, ni respondo 3 veces, ni hago 2 entradas identicas en el blog... Yo puedo desactivar mi addon, pero puede venir otra persona con el plugin activado, dejar un comentario en mi página y que ese comentario se convierta en 10 comentarios...

Ha de haber alguna forma de evitarlo, no?

Saludos
  #9 (permalink)  
Antiguo 23/09/2009, 15:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Dudas consulta MySQL

Sí la hay, cuando hace pre-fetch mozilla envia una cabecera extra que puedes leer en $_SERVER. Revisa en el foro ya es un tema que ha sido expuesto antes y la solución esta puesta.

Saludos.
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 00:54.