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