Foros del Web » Programando para Internet » PHP »

Error al introducir datos en la base de datos

Estas en el tema de Error al introducir datos en la base de datos en el foro de PHP en Foros del Web. Mirar forosdelweb , tengo un problema a la hora de guardar la ruta de la imagen en la base de datos, me da error y ...
  #1 (permalink)  
Antiguo 05/06/2012, 08:33
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Error al introducir datos en la base de datos

Mirar forosdelweb , tengo un problema a la hora de guardar la ruta de la imagen en la base de datos, me da error y llevo pensando que es una chorrada, lo bueno de todo esto es que la imagen se guarda enm la carpeta, pero no se guarda la ruta.

sql

create database Videos;
use Videos;
create table imagenes(
id int not null primary key,
imagen varchar(100),
texto varchar(100));

index.php

<form method="post" action="formulario.php" enctype="multipart/form-data">
<label>Elige imagen</label>
<br/>
<input type="file" name="imagen"/>
<br/>
<textarea cols="10" rows="5" name="texto"></textarea>
<br/>
<input type="submit" value="Enviar"/>
</form>

formulario.php
<?php
include("upload.php");
$ruta="imagenes";
$archivo=$_FILES['imagen']['tmp_name'];
$nombreArchivo=$_FILES['imagen']['name'];
move_uploaded_file($archivo,$ruta."/".$nombreArchivo);
$ruta=$ruta.="/".$nombreArchivo;
$texto=$_POST['texto'];
///
$id=rand(1,200);
$insertar=mysql_query("INSERT INTO imagenes VALUES('".$id."','".$ruta."','".$texto."')");
if($insertar)
{
echo "Insercion exitosa";
echo $texto."<br><img src='$ruta'>";
}else
{
echo "Falló la insercion";
}
///
?>

upload.php

<?php
$conexion=mysql_connect("localhost","kfernandez"," hermanos2") or die ("No hay conexión");
$conectBD=mysql_select_db("videos,$conexion");
?>
  #2 (permalink)  
Antiguo 05/06/2012, 08:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error al introducir datos en la base de datos

¿Cual error?

Si esperas que adivinemos el error que te sale como por arte de magia estás equivocado, por favor, no omitas esa información.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 05/06/2012, 08:49
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Error al introducir datos en la base de datos

Es k lo k pone es "Falló la inserción" o sea del formulario,pero es k se graba la imagen en la carpeta así que es algo de la conexion.
  #4 (permalink)  
Antiguo 05/06/2012, 08:55
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: Error al introducir datos en la base de datos

Imprime el valor de mysql_error() así puedes ver la razón del porque fallo tu insert.

Saludos.
  #5 (permalink)  
Antiguo 05/06/2012, 09:01
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: Error al introducir datos en la base de datos

Código PHP:
Ver original
  1. $id=rand(1,200);
  2. $insertar=mysql_query("INSERT INTO imagenes VALUES('".$id."','".$ruta."','".$texto."')");

Porqué usas un random para el id??? ahí está el problema, en algún momento el id se repite y eso evita que la inserción funcione correctamente, en lugar de usar Rand de php, porqué no le asignas el atributo autoincrement al id y con eso no tienes porqué ponerlo en el php

saludos
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #6 (permalink)  
Antiguo 05/06/2012, 17:34
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 10 meses
Puntos: 32
Respuesta: Error al introducir datos en la base de datos

Aca te dejo como deberias crear la tabla corectamente para que no tengas que lidiar con los ID.

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `videos` (
  2.   `id` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `imagen` VARCHAR(100) NOT NULL,
  4.   `texto` VARCHAR(100) NOT NULL,
  5.   PRIMARY KEY  (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Te comente unas cosas para que lo tengas en cuenta, pero en realidad solo con modificar la sentencias SQL como dijo mas arriba p414, tambien funciona.

Código PHP:
Ver original
  1. /* Porque llamas uplodad.php a un archivo que en realidad lo que hace es conectarse a la base de datos */
  2.     /* No seria mejor llamarlo conexion.php o algo asi? */
  3.     include("upload.php");
  4.     $ruta    = "imagenes";
  5.     $archivo       = $_FILES['imagen']['tmp_name'];
  6.    
  7.     /* Te conviene tener cuidado con los nombres de archivo que te pasan.  
  8.     Por ejemplo si tiene un apostrofe ' te va a causar problemas al escribir el query Sql */
  9.    
  10.     $nombreArchivo = $_FILES['imagen']['name'];
  11.     move_uploaded_file($archivo,$ruta."/".$nombreArchivo);
  12.    
  13.     /* Aca supongo que lo que quieres hacer no es esto */
  14.    
  15.     //$ruta = $ruta.= "/".$nombreArchivo;
  16.     /* Sino esto */
  17.     $ruta = $ruta."/".$nombreArchivo;
  18.    
  19.     $texto = $_POST['texto'];
  20.     ///
  21.     /* Esto no va*/
  22.     //$id=rand(1,200);
  23.    
  24.     /* trata la respuesta funciones mysql con las funciones mysql correspondientes */
  25.     $result = mysql_query("INSERT INTO imagenes VALUES('".$ruta."','".$texto."')");
  26.     if(mysql_num_rows($result) > 0)
  27.     {
  28.         echo "Insercion exitosa";
  29.         echo $texto."<br><img src='$ruta'>";
  30.     }else
  31.     {
  32.         echo "Falló la insercion";
  33.     }

Etiquetas: formulario, imagenes, introducir, 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 11:32.