No puedo añadir registro en una base de datos con PHP

S

Buenas veréis estoy intentando registrar un registro en mi base de datos y me muestra por pantalla el formulario, escribo los datos pulso enviar.Luego voy a la tabla de la base de datos y no me añade el nuevo registro.
Pero tampoco me muestra ningún error. Compruebo con un echo si coge los valores de la consulta y si lo hace.
¿Donde esta el error?

Este es el código:

<?php
require('conexion.txt');
session_start();

echo "<form action='anadir.php'>";
echo "idProducto: <input type='text' name='idProducto'><br>";
echo "origen: <input type='text' name='origen'><br>";
echo "foto: <input type='file' name='foto'><br>";
echo "Marca: <input type='text' name='marca'><br>";
echo "categoria: <input type='text' name='categoria'><br>";
echo "peso: <input type='text' name='peso'><br>";
echo "unidades: <input type='text' name='unidades'><br>";
echo "volumen: <input type='text' name='volumen'><br>";
echo "precio: <input type='text' name='precio'><br>";
echo "<input type='submit' name='enviar' value='Enviar'>";
echo "</form>";

if (isset($_REQUEST['enviar'])) {

$idProducto=$_REQUEST['idProducto'];
$origen=$_REQUEST['origen'];
$foto=$_REQUEST['foto'];
$marca=$_REQUEST['marca'];
$categoria=$_REQUEST['categoria'];
$peso=$_REQUEST['peso'];
$unidades=$_REQUEST['unidades'];
$volumen=$_REQUEST['volumen'];
$precio=$_REQUEST['precio'];


$cond="insert into productos (idProducto,origen,foto,marca,categoria,peso,unidades,volumen,precio) values ('".$idProducto."','".$origen."','".$foto."','".$marca."','".$categoria."','".$peso."','".$unidades."','".$volumen."','".$precio."',)";	

//compruebo que coge los valores de la consulta
echo $cond;

$result= mysqli_query($link,$cond);
}

?>
MrTurbo

y $link donde lo inicializas?. Te sobra una coma justo después de '".$precio."'

1 respuesta
Kr4n3oK

¿Y la conexión a la base de datos?.

Pon en la primera linea esto error_reporting(E_ALL);

1 respuesta
S

#2 #3 Este es el conexion.txt desde donde conecta con la base de datos

<?php
$link = mysqli_connect("localhost", "root", "root");
mysqli_select_db( $link,"virtualmarket");
$tildes = $link->query("SET NAMES 'utf8'");
?>

Edit:
¡Era la coma! Mil gracias

2 respuestas
Kr4n3oK

#4 Utiliza error_reporting(E_ALL); en la primera linea de tus ficheros .php para que te saque todos los errores xD

Saludos,

1 respuesta
Saphyel

#4 Imagino que tu nick tiene alguna referencia con casillas...?
Si usas PHP, por que llamas a los ficheros .txt?
Por que no usas objectos???
Para que inicias una sesion si no la usas?
Por que tienes el Front y el back en un mismo fichero?
Por que no usas tests en lugar de mostrar errores?

1 respuesta
S

#5 Gracias, lo tendré en cuenta!

#6

  • Porque estoy empezando en PHP y no se nada de objectos.
  • La sesión la inicio en una pagina anterior en la cual relleno un formulario que en caso de coincidir con la base de datos al pulsar entrar me deja seguir. Sino no deja continuar.
  • ¿Que son los tests?
1 respuesta
willy_chaos

#7 La programación orientada a objetos es bastante cómoda, pero claro, ¿has programado en otros lenguajes? (no, HTML no sirve), me refiero C, Python (dando por hecho que si no has hecho OOP (Oriented Object Programing) es que no has tocado ni C++ ni Java.

Si no has tocado nunca programacion, entonces deja OOP para mas adelante (cuando sepas hacer bastantes cosas con el lenguaje sin usar OOP).

La conexion no la pongas en un .txt por varias razones. El TXT se puede descargar o visualizar por alguien que pueda conocer el nombre del fichero y la url... y segundo porque si estas usando PHP, ponlo en un php y asi ya tienes las variables cargadas en memoria.

Normalmente un fichero de configuración de base de datos simple suele tener.

Ej: conexion.php

$db_host = "IPoDominioServidorBaseDatos";
$db_name = "NombreBaseDatos";
$db_user = "UsuarioConAcceso";
$db_pass = "PasswordBaseDatos";

$link = mysqli_connect$db_host, $db_user, $db_pass);
mysqli_select_db( $link,$db_name);
$tildes = $link->query("SET NAMES 'utf8'");

En tu código en vez de hacer require("conexion.txt") haz, require_once("conexion.php");

DiferenciaEntre-require-require_once

Edit: Vale no habia visto el contenido del conexion.txt tiene tags PHP, aun así, si alguien conoce la ruta, se lo podrá descargar puesto que no será procesado al no ser un .php y vera en texto plano la configuración a la base de datos. Que si es para practicar en un XAMP o servidor local que no escucha la red de internet no te pasara nada, pero acostumbrate a hacerlo bien desde el principio y asi no iras pillando malos habitos.

2 respuestas
Saphyel

#8 no puedo estar mas en contra. Que empiece por objetos que la programacion imperativa es una mierda y solo sirve para cuando tienes diarrea.

1 respuesta
S

#8 Guau , muchísimas gracias por toda la info. Me será de gran utilidad.
Estoy utilizando un LAMP, pero llevas razón debería de ir acostumbrándome.

willy_chaos

#9 claro porque es mejor para una persona que está comenzando a programar meterse con objetos, herencias, interfaces, tdd. Ya puestos también le pides que se ponga con mutex, threads y etc...

Si no ha programado nunca lo mejor es ir poco a poco y ver que lo que vas haciendo funciona.

1 respuesta
Saphyel

#11 Incluso en las universidades de Espakistan empiezan con objetos... imaginate en un pais de verdad.
Pero bueno si lo quieres es empezar mal adelante.

Hoy por hoy no tiene sentido empezar aprendiendo imperativa, da igual como te pongas.

2 respuestas
Merkury

#12 Saph, aqui en la carrera que hice yo, programacion 101 C...

1 respuesta
xPipOx

#12 TRIPLEEEEEEEEEEEEEEEEEEEEEEEEEEEEE! Desde luego no en las universidades que conozco.

1 respuesta
AikonCWD

Bonito SQLi te puedes comer con ese código no? :( Tienes ese formulario en producción? Es para un trabajo del cole...

1
Saphyel

#13 #14 la palabra clave en lo que habeis dicho es "hice", actualmente empiezan con java/C# por suerte :)

1 respuesta
Fyn4r

#16 en la facultad aun no gracias a Dios xd

1 respuesta
Saphyel

#17 pues que cagada, empezar en este siglo sin OOP es un error

1 respuesta
Fyn4r

#18 y enseñas OOP antes de hacer un for?

1 respuesta
Saphyel

#19 si, aqui parece que todos estais mas preocupados de picar cualquier mierda que hacer buen codigo...

Para eso no os metais en programacion, haced wordpress y ya..?

2 respuestas
Fyn4r

#20 no se, a mi me gusta hacer las cosas desde la base xd

sh31k

#20 Cómo vas a empezar por Objeto en un lenguaje como PHP tío xDD

Si está aprendiendo a programar, no puedes meterle objetos y punto. Da igual lo erudito que quieras parecer, es de cajón, no se empieza la casa por el tejado. Necesita unos conocimientos mínimos y saber que está pasando en tu código.

Yo en la facultad empecé por programación estructurada y ensamblador, no se que universidad empieza por OOP pero vamos, menuda locura.

Saphyel

Y esto es por lo que wordpress aun usa PHP 5.3, no tengo mucho que discutir.

sh31k

Y esto es lo que pasa cuando sabes escribir dos líneas de código juntas y vienes de erudito a un foro a aclarar una duda de una persona que probablemente lleve menos de 1 semana programando, evidentemente no hay mucho que discutir.

willy_chaos

Yo comencé en la carrera tb con ansi C y te puedo asegurar que sirve y mucho, luego cualquier lenguaje te parece un paseo.

Además se sigue usando en microcontroladores (PIC por ejemplo)

Que luego una vez ya sabe se pasa a OOP , pues genial. En fin lo que hay que oír, y como puedes ver no soy el único que te lo dice.

1 respuesta
Saphyel

#25 estas relatando tu experiencia, no puedes valorar lo contrario si nunca has conocido a alguien que empezase con objetos.

Y por ultimo que digo referente a este tema si no vais a trabajar con objetos obviamente os parecera opcional ese paso, pero si te toca comerte uno de esos lenguajes .. la diferencia entre uno que empezo con imperativo y otro que no es simplemente abismal y tarda meses en llegar a su nivel

Ahora si quereis hablamos del tiempo o explicarle a #1 acerca de PHP 5.6 y tal. bss no os enfadeis.

HeXaN

¿Las Universidades más punteras del mundo empiezan con OOP directamente? Ahí tenéis la respuesta.

Usuarios habituales