Foros del Web » Programando para Internet » PHP »

Error insert to

Estas en el tema de Error insert to en el foro de PHP en Foros del Web. Hola he leido varios manuales y no entiendo porque no funciona. No envia los datos a la base de datos. formularioinsert.php (El trozo del form) ...
  #1 (permalink)  
Antiguo 23/10/2008, 05:32
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 1
Error insert to

Hola he leido varios manuales y no entiendo porque no funciona.
No envia los datos a la base de datos.

formularioinsert.php (El trozo del form)
Código:
<H1>INSERTAR OBJETO</H1>
<BR>

     <form action="codigoinsert.php" method="POST">
<table border="0" cellpadding="0" cellspacing="0" id="tienda" style="border:0px solid #000000;">
<tr>
	  <td align="right">
	  <div align="left">Id:</div></td>
	  <td align="right"><div align="left">
	  <input type="text" size="25" maxlength="250" name="Id">
	  </div></td>
</tr>
<tr>
	  <td align="right">
	  <div align="left">Level:</div></td>
	  <td align="right"><div align="left">
	  <input type="text" size="25" maxlength="250" name="Level">
	  </div></td>
</tr>
<tr>

<td align="right">
	  <div align="left">Name:</div></td>
	  <td align="right"><div align="left">
	  <input type="text" size="25" maxlength="250" name="Name">
	  </div></td>
</tr>
<tr>

<td align="right">
	  <div align="left">Quantity:</div></td>
	  <td align="right"><div align="left">
	  <input type="text" size="25" maxlength="250" name="Quantity">
	  </div></td>
</tr>
<tr>

<td align="right">
	  <div align="left">UnitePrice:</div></td>
	  <td align="right"><div align="left">
	  <input type="text" size="25" maxlength="250" name="UnitePrice">
	  </div></td>
</tr>

<tr>
<td align="right">
	  <div align="left">Description:</div></td>
	  <td align="right"><div align="left">
	  <input type="text" size="25" maxlength="250" name="Description">
	  </div></td>
</tr>
<tr>
<td align="right">
	  <div align="left">Image:</div></td>
	  <td align="right"><div align="left">
	  <input type="text" size="25" maxlength="250" name="Image">
	  </div></td>
</tr>

<tr>

		<td width="117" align="right">
  				<div align="left">System:  </div></td>

		<td width="276" align="right"><div align="left">
  				<select name="System">
  				  <option>COSTUME</option>
  				  <option>ARMOR</option>
  				  <option>WEAPON</option>
  				  <option>CONSUMPTION/MISC</option>
  				  <option>ACCCESORY</option>
				</select>
					</div></td>
</tr>
<tr>
<td align="right">
	  <div align="left">Type:</div></td>
	  <td align="right"><div align="left">
	  <input type="text" size="25" maxlength="250" name="Type">
	  </div></td>
</tr>



</tr>

<tr>
  <td colspan="2" align="center"><input name="submit" type="submit" value="Insertar objeto"></td>
</tr>
</table>
</form>
codigoinsert.php <- Donde nombre la conexión a la BD etc..
El error está en unir la info del formulario con la que se cita en este fichero.
*Porque si solo dejo el query inserta campo vacio, es decir los datos de la conexión son correctos.

Código:
<?PHP
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='*******';
$dbuserpass='*****';
$dbname='******';

// Conexión a la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die("Cannot select database");

// Preguntaremos si se han enviado ya las variables necesarias
if (isset($_POST["Id"])) {
$Id = $_POST["Id"];
$Level = $_POST["Level"];
$Name = $_POST["Name"];
$Quantity = $_POST["Quantity"];
$UnitePrice = $_POST["UnitePrice"];
$Description = $_POST["Description"];
$Image = $_POST["Image"];
$System= $_POST["System"];
$Type = $_POST["Type"];

// Hay campos en blanco
if (empty($Id) or empty($Level) or empty($Description)){
header("location:http://www.*******/reg_cam_vacio.php");
}else{
//Todo parece correcto procedemos con la inserccion
$query = "INSERT INTO tienda (Id, Level, Name, Quantity, UnitePrice, Description, Image, System, Type) VALUES ('$Id','$Level','$Name', '$Quantity','$UnitePrice', '$Description','$Image', '$System','$Type')";

mysql_query($query) or die(mysql_error());
header("location:http://www.*******/reg_correcto.php");
exit();
}
}
?>
  #2 (permalink)  
Antiguo 23/10/2008, 05:47
 
Fecha de Ingreso: septiembre-2003
Mensajes: 54
Antigüedad: 20 años, 6 meses
Puntos: 2
Respuesta: Error insert to

No envia Datos? Inserta la tabla, pero sin datos?
Trata sacandole las comillas a los Values
o ponelas entre '".$var."'

$query = "INSERT INTO tienda (Id, Level, Name, Quantity, UnitePrice, Description, Image, System, Type) VALUES ($Id,$Level,$Name, $Quantity,$UnitePrice, $Description,$Image, $System,$Type)";
__________________
Kame Kame AH
  #3 (permalink)  
Antiguo 23/10/2008, 06:54
Avatar de Shippo  
Fecha de Ingreso: agosto-2008
Mensajes: 31
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Error insert to

Todo parece estar correcto, algunas sugerencias:

veo que dejas un campo id en manejo del usuario, no sera que estas repitiendo el id?? y esta esta restringido como unique?.

Tu campo imagen como esta definidio en tu DB?, veo que usas un simple text para subir al servidor o estas usando solo las URL de las imagenes.

Este campo $UnitePrice es numerico o solo de texto.y como te dijeron arriba, has el query sin filtrar tanto la información(como pruba claro)...saludos
  #4 (permalink)  
Antiguo 24/10/2008, 01:54
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Error insert to

Gracias por responder.

En la BD lo he puesto así:
Textos completos Field Type Null Key Default Extra
Id int(12) NO PRI NULL auto_increment
Level int(3) YES NULL
Name varchar(100) NO NULL
Quantity varchar(100) NO NULL
UnitePrice int(9) NO NULL
Description varchar(500) NO NULL
Image varchar(500) NO NULL
System varchar(100) NO NULL
Type varchar(200) NO NULL

He probado sin las comillas y con ".$var." y sigue sin funcionar.
En realidad quiero que sea de lo más simple porque no es para algo importante.
Solo quiero un formulario que lo rellene y la info que se va acumulando aparezca en un listado de una web.

Aquí es donde muestro el contenido de la tabla:
http://www.ephramdoyle.net/granadoespada/
Y el supuesto formulario:
http://www.ephramdoyle.net/granadoes...arioinsert.php

En el codigoinsert si se puede simplificar mucho mejor (no me interesa comprobar que este vacío, etc), por ejemplo probé de quitarle los if y entonces me inserta las filas sin datos como se ve en la web. T_T

Y sobre la imagen, pensaba poner una pequeña o texto y con enlace a zoom.



Puesto que ID le puse autoincrement lo he quitado del formulario pero aún así no funciona.
¿Cómo puedo hacerlo más simple?
  #5 (permalink)  
Antiguo 24/10/2008, 04:29
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Error insert to

Llevo toda la mañana probando diferentes códigos pero no funcionan.

¿En mi servidor REgister globals esta en Off puede afectar a eso? (edito esta en ON).


He visto otro hilo mencionando mi problema, he probado con el código del otro usuario y nada.
Incluso he probado con 2 ficheros que en otro server me funcionan y en este no me inserta nada...


¿Algun código de insertar lo más simple que seguro funcione?

Última edición por EphramDoyle; 24/10/2008 a las 04:41
  #6 (permalink)  
Antiguo 24/10/2008, 04:44
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 6 meses
Puntos: 49
Respuesta: Error insert to

si estas pasando los values como POST deberias tomarlos de igual forma digo ....


Código PHP:
$query "INSERT INTO tienda (Level, Name, Quantity, UnitePrice, Description, Image, System, Type) VALUES ($_POST[Level], ....... etc...... 
ahora si tu id es un campo auto_increment como lo defines no deberias estarlo pasando en el VALUE ese dato se crea solo por algo es autoincrementable...


saludos
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #7 (permalink)  
Antiguo 24/10/2008, 05:20
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Error insert to

Acabo de probarlo y no me funciona.
Igual que con otros me lleva codigoinsert.php y la pagina en blanco, no muestra errores pero no inserta.
  #8 (permalink)  
Antiguo 24/10/2008, 05:36
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 6 meses
Puntos: 49
Respuesta: Error insert to

pon tu codigo pues :)
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #9 (permalink)  
Antiguo 24/10/2008, 05:46
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Error insert to

Para hacerlo sencillo un simple insert lo resumo en esto (insertar solo fila con Level y Name):

index (formulario)

Código:
     <form action="codigoinsert.php" method="POST">
<table border="0" cellpadding="0" cellspacing="0" id="tienda" style="border:0px solid #000000;">

<tr>
	  <td align="right">
	  <div align="left">Level:</div></td>
	  <td align="right"><div align="left">
	  <input type="text" size="25" maxlength="250" name="Level">
	  </div></td>
</tr>
<tr>

<td align="right">
	  <div align="left">Name:</div></td>
	  <td align="right"><div align="left">
	  <input type="text" size="25" maxlength="250" name="Name">
	  </div></td>
</tr>
<tr>

</tr>

<tr>
  <td colspan="2" align="center"><input name="submit" type="submit" value="Insertar objeto"></td>
</tr>
</table>
</form>

codigoinsert.php
Código:
<?PHP
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='****';
$dbuserpass='****';
$dbname='*****';

// Conexión a la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die("Cannot select database");

// Preguntaremos si se han enviado ya las variables necesarias
if (isset($_POST[Level])) {
$Level = $_POST[Level];
$Name = $_POST[Name];

// Hay campos en blanco
if (empty($Level) or empty($Name)){
header("location:http://www.gilgo-designs.es/login/reg_cam_vacio.php");
}else{
//Todo parece correcto procedemos con la inserccion
$query = "INSERT INTO tienda (Level, Name) VALUES ($_POST[Level],$_POST[Name])";

mysql_query($query) or die(mysql_error());
header("location:http://www.gilgo-designs.es/login/reg_correcto.php");
exit();
}
}
?>
  #10 (permalink)  
Antiguo 24/10/2008, 11:30
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Error insert to

Aclarar que el código anterior sigue sin funcionar >_<'
  #11 (permalink)  
Antiguo 24/10/2008, 17:15
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 6 meses
Puntos: 49
Respuesta: Error insert to

if (isset($_POST[Level]))

isset es para botones amigo debe cambiar su imput submit por.....

<input name="enviar" type="submit" value="Insertar objeto">


y en el isset poner

if (isset($_POST[enviar]))

ya que de otro modo no se ejecuta nada en ese ciclo :P

y no es necesario hacer

$Level = $_POST[Level];
$Name = $_POST[Name];

ya que estas recibiendo por POST los datos :/ para crear nuevas variables que no ocuparas...
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #12 (permalink)  
Antiguo 25/10/2008, 06:41
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Error insert to

He aplicado tus cambios pero igual que en lo casos anteriore me lleva a la página en blanco de codigoinsert.php y no se inserta nada.

Nosé cómo puede dar tantos problemas... La base de datos funciona porque el mostrar la tabla funciona...
  #13 (permalink)  
Antiguo 25/10/2008, 09:29
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Error insert to

Ya no se cuantas cosas he probado y nada, y encima de lo tutoriales que encuentro por internet todos estan mal escritos por falta de cierres etc

Simplificandolo al máximo:
Nombre de la tabla: tabla (solo tiene 2 columnas: nombre y apellido)

El formulario es:
Código:
<form method="post" action="formu2.php">
Nombre : <input type="text" name="nombre"><br>
Apellido : <input type="text" name="apellido"><br>
<br>
<br><br>
<input type="submit" name="valider" value="Enviar">
</form>
El archivo formu2.php:
Código:
<?php
//Conectar a la base de datos (bd).
mysql_connect('localhost', 'minombreusuario', 'micontraseña');
mysql_select_db("minombrebd");

//Damos nombres a las variables.
$nombre = $_POST['nombre'];
$apellido = $_POST['apellido'];
mysql_query("INSERT INTO tabla (nombre , apellido) VALUES ('$nombre', '$apellido')");
?>
CON ESTE CÓDIGO EN LA BD DE DATOS SE CREAN REGISTROS (LINEAS) PERO NO INSERTA EL TEXTO DEL FORMULARIO, SIMPLEMENTE ESTAN VACIOS.

Con solucionar este código el resto ya estaría.... Pero no encuentro la forma >_<
  #14 (permalink)  
Antiguo 26/10/2008, 14:59
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Error insert to

No consigo insertar ningun tipo de dato en la bd...
¿Alguien puede colocar un ejemplo de su codigo?

Última edición por EphramDoyle; 26/10/2008 a las 15:05
  #15 (permalink)  
Antiguo 26/10/2008, 15:11
(Desactivado)
 
Fecha de Ingreso: mayo-2008
Mensajes: 67
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Error insert to

men ya me di cuenta de tu error lo que esta pasando es que no estas cerrando bioen los if te falta cerrarlos fijase tu es tas poniendo asi :


Código PHP:
<?PHP
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='****';
$dbuserpass='****';
$dbname='*****';

// Conexión a la base de datos
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die("Cannot select database");

// Preguntaremos si se han enviado ya las variables necesarias
if (isset($_POST[Level])) {
$Level $_POST[Level];
$Name $_POST[Name];

// Hay campos en blanco
if (empty($Level) or empty($Name)){
header("location:http://www.gilgo-designs.es/login/reg_cam_vacio.php");
}else{
//Todo parece correcto procedemos con la inserccion
$query "INSERT INTO tienda (Level, Name) VALUES ($_POST[Level],$_POST[Name])";

mysql_query($query) or die(mysql_error());
header("location:http://www.gilgo-designs.es/login/reg_correcto.php");
exit();
}
}
?>
ç

perop el codigo para que funcione seria asi:

Código PHP:
<?PHP
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='****';
$dbuserpass='****';
$dbname='*****';

// Conexión a la base de datos
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die("Cannot select database");

// Preguntaremos si se han enviado ya las variables necesarias
if (isset($_POST[Level])) {
$Level $_POST[Level];
$Name $_POST[Name];[COLOR="Red"]}[/COLOR]

// Hay campos en blanco
if (empty($Level) or empty($Name)){
header("location:http://www.gilgo-designs.es/login/reg_cam_vacio.php");
}else{
//Todo parece correcto procedemos con la inserccion
$query "INSERT INTO tienda (Level, Name) VALUES ($_POST[Level],$_POST[Name])";

mysql_query($query) or die(mysql_error());
header("location:http://www.gilgo-designs.es/login/reg_correcto.php");
exit();
}
}
?>
  #16 (permalink)  
Antiguo 26/10/2008, 16:25
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Error insert to

Hola muchas gracias por responder,
Escribo tu código le quito:
color="Red"]/color] imagino que lo utilizaste para remarcar el cierre (el cierre lo dejo claro).
Y el código da un error en la linea 28.

Parse error: syntax error, unexpected '}' in /home/ephramdy/public_html/granadoespada/codigoinsert.php on line 28

Y esta es:
24 mysql_query($query) or die(mysql_error());
25header("location:http://www.gilgo-designs.es/login/reg_correcto.php");
26exit();
27}
28}
29?>

Es un cierre de más, o almenos no hay ninguno de apertura. Y si lo eliminio el fichero no indica ningun error pero al rellenar el formulario me envia a la página del primer if:

/ Hay campos en blanco
if (empty($Level) or empty($Name)){
header("location:http://www.gilgo-designs.es/login/reg_cam_vacio.php");


Vamos que no inserta nada, obviamente los campos del formulario pone Level, name y estan escritos...

En realidad no me importa que no compruebe que los campos esten vacios o llenos. Simplemente quiero que hago un INSERT

Incluso he probado en el último IF que en ambas opciones la acción sea:
$query = "INSERT INTO tienda (Level, Name) VALUES ($_POST[Level],$_POST[Name])";

Lo único qu hace es dejarme la pagina en blanco , consulto la tabla y no hay ningun campo nuevo.
  #17 (permalink)  
Antiguo 27/10/2008, 04:10
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Error insert to

Lo solucioné porfin! XDD

He utilizado un GET y no un POST.

Todo se inserta perfectamente, dejo el código 100% funcional para algun otro novato como yo xDD

registro.php (pagina formulario)
Código:
<HTML>
<HEAD>
<TITLE>registro.php</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Insertar un registro</h1>
<br>
<FORM METHOD="GET" ACTION="iregistro.php">
Level<br>
<INPUT TYPE="TEXT" NAME="Level"><br>
Name<br>
<INPUT TYPE="TEXT" NAME="Name"><br>
Quantity<br>
<INPUT TYPE="TEXT" NAME="Quantity"><br>
UnitePrice<br>
<INPUT TYPE="TEXT" NAME="UnitePrice"><br>
Description<br>
<INPUT TYPE="TEXT" NAME="Description"><br>
Image<br>
<INPUT TYPE="TEXT" NAME="Image"><br>
System<br>
<INPUT TYPE="TEXT" NAME="System"><br>
Type<br>
<INPUT TYPE="TEXT" NAME="Type"><br>
<INPUT TYPE="SUBMIT" value="Insertar">
</FORM>
</div>
</BODY>
</HTML>

iregistro.php
(donde se realiza la conexion a la bd etc)
Código:
  <HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY>
<?
//Conexion con la base
mysql_connect("localhost","nombreusuarioBD","contraseña");

//selección de la base de datos con la que vamos a trabajar
mysql_select_db("nombreBD");

$Level=$_GET['Level']; 
$Name=$_GET['Name'];
$Quantity=$_GET['Quantity'];    
$UnitePrice=$_GET['UnitePrice'];
$Description=$_GET['Description'];
$Image=$_GET['Image'];
$System=$_GET['System'];
$Type=$_GET['Type'];

//Ejecucion de la sentencia SQL
mysql_query("insert into tienda (Level, Name, Quantity, UnitePrice, Description, Image, System, Type) values ('$Level','$Name','$Quantity','$UnitePrice','$Description','$Image','$System','$Type')");
?>
</div>
</BODY>
</HTML>
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 07:59.