Foros del Web » Programando para Internet » PHP »

PHP, agregar registro a bd

Estas en el tema de PHP, agregar registro a bd en el foro de PHP en Foros del Web. Buenas a todos, bueno llevo mucho tiempo sin coger nada de PHP, y estoy desarrollando una pequeña aplicacion web para subir un xml a un ...
  #1 (permalink)  
Antiguo 22/04/2012, 09:02
Avatar de kalebra  
Fecha de Ingreso: mayo-2010
Ubicación: Marbella
Mensajes: 44
Antigüedad: 13 años, 10 meses
Puntos: 5
PHP, agregar registro a bd

Buenas a todos, bueno llevo mucho tiempo sin coger nada de PHP, y estoy desarrollando una pequeña aplicacion web para subir un xml a un directorio y escribir el nombre en la base de datos.

La cosa es que subir el archivo lo sube, pero no escribe el nomnre en la base de datos, por mas que he mirado no veo donde esta el fallo.

Este es el formulario, que esta en el mismo archivo PHP, se llama "agregar.php"
Código HTML:
<div align="center">
<form enctype="multipart/form-data" action="agregar.php" method="POST">
<table>
 <tr>
  <td align="right">Referencia:</td><td><input type="text" name="xmlName"></td>
 </tr>
 <tr>
  <td align="right">Ruta:</td><td><input type="file" name="xmlRuta"></td>
 </tr>
 <tr>
  <td></td><td><input type="submit" value="Agregar Archivo"></td>
 </tr>
</table>
</form> 
Y este es el codigo PHP que estoy utilizando.
Código PHP:
<?php
// -------------------------------------------------------------------------------- Conexion a la Base de Datos. 
 
include("./include/conex.php"); 
 
// -------------------------- Indicamos la direccion donde se guardaran los xml.
 
$target "./rutas_xml/"
 
$target $target .basename$_FILES['xmlRuta']['name']); 
// -------------------------- Cogemos los campos del formulario.
 
$xmlName $_POST['xmlName']; 
 
$xmlRuta = ($_FILES['xmlRuta']['name']); 
// -------------------------- Eswcribimos en la base de datos.
 
mysql_query("INSERT INTO `ruta_xml` VALUES ('$xmlName', '$xmlRuta')") ; 
// -------------------------- Guardamos el archivo en el servidor. 
 
if(move_uploaded_file($_FILES['xmlRuta']['tmp_name'], $target)) 
 { 
// -------------------------- Si todo ha salido OK, mostramos el emnsaje.
 
echo "El archivo ".basename$_FILES['xmlRuta']['name']). " se ha subido correctamente al sevidor."
 } 
 else { 
// -------------------------- Si hay algun problema mostramos el mensaje. 
 
echo "Lo sentimos, ha habido un problema con el archivo."
 } 
// -------------------------- Seleccionamos los campos de la BD.
 
$data mysql_query("SELECT * FROM ruta_xml") or die(mysql_error()); 
 while(
$info mysql_fetch_array$data ))
 { 
// -------------------------- Mostramos en pantalla los xml capturados.
 
echo "<a href=./rutas_xml/".$info['xmlRuta']."> <br>"
 echo 
"<b>Referencia: </b> ".$info['xmlName'] . "<br> "
 }
 
?>
Sinceramente no veo el fallo y creo que debe de estar en el INSERT pero no logro hacerlo funcionar, si alguno podeis indicarme el fallo...

Os lo agradesco de antemano, saludos
__________________
- La única causa perdida, es la que se abandona.
  #2 (permalink)  
Antiguo 22/04/2012, 09:13
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 7 meses
Puntos: 139
Respuesta: PHP, agregar registro a bd

La pregunta es la tabla ruta_xml solo contiene dos campos name y ruta ?
  #3 (permalink)  
Antiguo 22/04/2012, 10:43
Avatar de kalebra  
Fecha de Ingreso: mayo-2010
Ubicación: Marbella
Mensajes: 44
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: PHP, agregar registro a bd

Buenass gjx2, la tabla lleva tres campos uno de ellos es el id.

Código:
CREATE TABLE IF NOT EXISTS `ruta_xml` (
  `xml_ID` int(11) NOT NULL AUTO_INCREMENT,
  `xmlName` varchar(15) NOT NULL,
  `xmlRuta` varchar(50) NOT NULL,
  PRIMARY KEY (`xml_ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
Saludos y gracias
__________________
- La única causa perdida, es la que se abandona.
  #4 (permalink)  
Antiguo 22/04/2012, 11:59
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 11 años, 11 meses
Puntos: 97
Respuesta: PHP, agregar registro a bd

$xmlRuta = ($_FILES['xmlRuta']['name']);

va a obtener el nombre del fichero en la máquina cliente. Si esta es windows, será:

c:\imagenes\jjjj.jpg

y \ te puede dar problemas.
Prueba con
$xmlRuta=addslashes($xmlRuta);


Saludos.
  #5 (permalink)  
Antiguo 22/04/2012, 13:04
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 126
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: PHP, agregar registro a bd

Proba poniendo "or die(mysql_error())" Luego de hacer el insert para ver que es lo que sucede...
  #6 (permalink)  
Antiguo 22/04/2012, 13:34
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 7 meses
Puntos: 139
Respuesta: PHP, agregar registro a bd

Cita:
Iniciado por kalebra Ver Mensaje
Buenass gjx2, la tabla lleva tres campos uno de ellos es el id.
Entonces si la tabla contiene tres campos no puedes hacer un insert como lo estas haciendo, para hacer un insert de ese tipo debería solo existir los campos que vas a utilizar.
La forma en que se debe de hacer es especificando los campos.

Código PHP:
Ver original
  1. mysql_query("INSERT INTO `ruta_xml`(xmlName,xmlRuta) VALUES ('$xmlName', '$xmlRuta')") ;

Si estuviera monitoriando el error de mysql te hubiese dado cuenta
"Column count doesn't match value count at row 1 "

Siempre examina los errores mysq_error
mysql_query()or die(mysq_error());

Saludos.
  #7 (permalink)  
Antiguo 22/04/2012, 15:15
Avatar de kalebra  
Fecha de Ingreso: mayo-2010
Ubicación: Marbella
Mensajes: 44
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: PHP, agregar registro a bd

Muchas gracias a todos por las respuestas, en especial a gjx2, ya que ese era el problema, no se como no lo vi, muchas gracias.

Como decia llevaba bastante tiempo sin hacer nada en PHP, y llevaba todo el dia dandole vueltas al asunto.

De nuevo saludos y gracias a todos, sois unos fenomenos.
__________________
- La única causa perdida, es la que se abandona.

Etiquetas: bd, formulario, mysql, registro, sql
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:47.