Foros del Web » Programando para Internet » PHP »

Duda con mi código para cargar imagen con datos

Estas en el tema de Duda con mi código para cargar imagen con datos en el foro de PHP en Foros del Web. Saludos, Mi duda es como puedo hacer para guardar la ruta de mi imagen en la base de datos y no como binario que es ...
  #1 (permalink)  
Antiguo 08/08/2013, 09:58
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Pregunta Duda con mi código para cargar imagen con datos

Saludos,
Mi duda es como puedo hacer para guardar la ruta de mi imagen en la base de datos y no como binario que es como lo e estado haciendo, lo quiero hacer así por que es mas fácil hacer mi archivo que va a mostrar los resultados.
O en su defecto como puedo hacer para que mi archivo muestre los resultados en una tabla con sus respectivos datos e imagen en este caso.
Mi código que captura los datos es el siguiente:

Código PHP:
<?php 
session_start
(); 
include_once 
"conexion.php";
include_once (
"seguridad.php");        
?> 
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Agregar::Productos</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/jquery.min.js">
</script>
<script type="text/javascript" src="js/tabs.js">
</script>
<script type="text/jscript" src="js/funciones.js">
</script>
</head>

<body>
<div class="cabecera">
<div class="logo"><img src="imagenes/logo.png"></div>
<p class="saludo">Bienvenido: <?php echo $_SESSION['usuario']; ?><br><a href="logout.php" style="float:right;">Cerrar</a></p>
   
   <div id="menu">
           <ul class="tabs">
    <li><a href="#tab1">Cargar Producto</a></li>
    <li><a href="#tab2">Editar Producto</a></li>
    <li><a href="#tab3">Borrar Producto</a></li>
     <li><a href="javascript:window.history.back();">&laquo; Ir al inici&oacute;</a></li>
        </ul>
       </div>
    <div class="tab_container">
       <div id="tab1" class="tab_content">
        <!--registro de datos-->
        
    <form name="registrar" enctype="multipart/form-data" accept-charset="iso-8859-1" action=" " method="POST" onsubmit="return formulario(this)" class="cargabd">
    <div><label>Nombre de Producto:</label><input name="producto" type="text" size="50" ></div>
    <div><label>Marca de Producto:</label><input name="marca" type="text" size="50"></div>
       <div><label>Descripci&oacute;n de Producto:</label><textarea name="descripcion" class="textarea" rows="5" cols="39"></textarea></div>
    <div><label>Precio de Producto:</label><input name="precio" type="text" size="50" onkeydown="return decimales(this, event)"></div>
    <div><label>Cantidad de Productos:</label><input name="cantidad" type="text" size="50"></div>
    <div><label></label><input name="imagen" type="file" class="cargar-imagen"></div>
    <div> <input type="submit" name="guardar" value="Registrar Producto"/></div>    
      </form>
    <?php
    
if (isset($_POST['guardar'])) {  
    if(
is_uploaded_file($_FILES['imagen']['tmp_name'])) {
     
     
      
// me verifica haya sido cargado el archivo  
        
$ruta_destino "imagenes-productos/";
        
$namefinaltrim ($_FILES['imagen']['name']); //linea nueva devuelve la cadena sin espacios al principio o al final
        
$namefinalereg_replace (" """$namefinal);// linea nueva devuelve la cadena sin espacios entre palabtas
        
$uploadfile$ruta_destino $namefinal;  
   if(
move_uploaded_file($_FILES['imagen']['tmp_name'], $uploadfile)) { // se coloca en su lugar final  
       
echo "<b>Carga del Producto exitosa!</b><br>";  
       
//conectamos a la base de datos para almacenar los datos y la ruta del archivo
           
include_once("conexion.php");
                   
$producto=$_POST['producto'];
                   
$marca=$_POST['marca'];
                   
$descripcion=$_POST['descripcion'];
                   
$precio=$_POST['precio'];
                   
$cantidad=$_POST['cantidad'];
                   
$nombre_archivo=$POST['imagen'];
                   
$query "INSERT INTO productos (nombre,marca,descripcion,precio,cantidad,imagen)VALUES('$producto','$marca','$descripcion','$precio','$cantidad','".$_FILES['imagen']         ['size']."')";
       
mysql_query($query) or die(mysql_error());
       echo 
"El archivo '".$FILES['imagen']."' ha sido registrado de manera satisfactoria.<br />";
        }
            }  
 }
?>
      </div>
    <div id="tab2" class="tab_content">
    <!--actualizar datos-->
    </div>
    <div id="tab3" class="tab_content">
       
    </div>
   </div> 
</div>
</body>
</html>
aquí hago la carga de datos para mi base de datos y tambien agrego mi codigo para mostrar los datos cargados anteriormente:

Código PHP:
<?php 
session_start
(); 
include_once 
"conexion.php";
include_once (
"seguridad.php");        
?> 

<!doctype html>
<html>
<head>
<meta charset="iso-8859-1">
<title>Consulta::Productos</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/jquery.min.js">
</script>
<script type="text/javascript" src="js/tabs.js">
</script>
</head>

<body>
<div class="cabecera">
<div class="logo"><img src="imagenes/logo.png"></div>
<p class="saludo">Bienvenido: <?php echo $_SESSION['usuario']; ?><br><a href="logout.php" style="float:right;">Cerrar</a></p>
   
   <div id="menu">
           <ul class="tabs">
    <li><a href="#tab1">Cargar Producto</a></li>
    <li><a href="#tab2">Editar Producto</a></li>
    <li><a href="#tab2">Borrar Producto</a></li>
        </ul>
       </div>
    <div class="tab_container">
       <div id="tab1" class="tab_content">
       <?php
include_once("conexion.php");
//consulta todos los empleados
$sql=mysql_query("SELECT * FROM productos");
?>
<table cellpadding="10" cellspacing="10em" style="color:#000099;width:400px;">
    <tr style="background:#9BB;">
        <td>Producto</td>
        <td>Marca</td>
        <td>Descripcion</td>
        <td>Precio</td>
        <td>Cantidad</td>
        <td>Imagen</td>
    </tr>
<?php
  
while($row mysql_fetch_array($sql)){
  echo 
"<tr>";
      echo 
"<td>".$row['nombre']."</td>";
      echo 
"<td>".$row['marca']."</td>";
      echo 
"<td>".$row['descripcion']."</td>";
    echo 
"<td>$".$row['precio']."</td>";
    echo 
"<td>".$row['cantidad']."</td>";
    echo 
"<td><img src='imagenes-productos/".$row['imagen']."'/></td>";
    echo 
"</tr>";
  }
?>
</table>
    </div>
    </div>
    <div id="tab2" class="tab_content">
       
    </div>
</div> 
</div>
</body>
</html>
Espero me puedan ayudar con mi problema y de ante mano Gracias
  #2 (permalink)  
Antiguo 08/08/2013, 12:46
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Duda con mi código para cargar imagen con datos

hola en lugar de guardar en la base de datos esto ".$_FILES['imagen'] ['size']."'
debes guardar la URL en donde colocas la imagen; tu variable "$uploadfile" contiene la url y el nombre.

Debes filtar el archivo a subir al servidor, ya que es un problema severo de seguridad.

Hay ejemplos en el manual de Php.
http://php.net/manual/es/reserved.variables.files.php
http://www.php.net/manual/es/function.move-uploaded-file.php

Espero te sea de ayuda.
  #3 (permalink)  
Antiguo 08/08/2013, 15:13
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Duda con mi código para cargar imagen con datos

Gracias por responder, tome en cuenta tu comentario y hice algunas modificaciones y al parecer me funciono te comparto mi código el código, igual acepto cualquier comentario para una posible correccion.

Código PHP:
Ver original
  1. <?php
  2. include_once "conexion.php";
  3. include_once ("seguridad.php");        
  4. ?>
  5. <!doctype html>
  6. <html>
  7. <head>
  8. <meta charset="utf-8">
  9. <title>Agregar::Productos</title>
  10. <link href="style.css" rel="stylesheet" type="text/css">
  11. <script type="text/javascript" src="js/jquery.min.js">
  12. </script>
  13. <script type="text/javascript" src="js/tabs.js">
  14. </script>
  15. <script type="text/jscript" src="js/funciones.js">
  16. </script>
  17. </head>
  18.  
  19. <body>
  20. <div class="cabecera">
  21. <div class="logo"><img src="imagenes/logo.png"></div>
  22. <p class="saludo">Bienvenido: <?php echo $_SESSION['usuario']; ?><br><a href="logout.php" style="float:right;">Cerrar</a></p>
  23.    
  24.    <div id="menu">
  25.         <ul class="tabs">
  26.     <li><a href="#tab1">Cargar Producto</a></li>
  27.     <li><a href="#tab2">Editar Producto</a></li>
  28.     <li><a href="#tab3">Borrar Producto</a></li>
  29.      <li><a href="javascript:window.history.back();">&laquo; Ir al inici&oacute;</a></li>
  30.         </ul>
  31.     </div>
  32.     <div class="tab_container">
  33.        <div id="tab1" class="tab_content">
  34.         <!--registro de datos-->
  35.        
  36.     <form name="registrar" enctype="multipart/form-data" accept-charset="iso-8859-1" action=" " method="POST" onsubmit="return formulario(this)" class="cargabd">
  37.     <div><label>Nombre de Producto:</label><input name="producto" type="text" size="50" ></div>
  38.     <div><label>Marca de Producto:</label><input name="marca" type="text" size="50"></div>
  39.     <div><label>Descripci&oacute;n de Producto:</label><textarea name="descripcion" class="textarea" rows="5" cols="39"></textarea></div>
  40.     <div><label>Precio de Producto:</label><input name="precio" type="text" size="50" onkeydown="return decimales(this, event)"></div>
  41.     <div><label>Cantidad de Productos:</label><input name="cantidad" type="text" size="50"></div>
  42.     <div><label></label><input name="imagen" type="file" class="cargar-imagen"></div>
  43.     <div> <input type="submit" name="guardar" value="Registrar Producto"/></div>    
  44.     </form>
  45.     <?php
  46.     if (isset($_POST['guardar'])) {
  47.         $permitidos = array("image/jpg", "image/jpeg", "image/gif", "image/png");
  48.         $limite_kb = 100;  
  49.         $carpeta = "imagenes-productos/";
  50.         opendir($carpeta);
  51.         if (in_array($_FILES['imagen']['type'], $permitidos) && $_FILES['imagen']['size'] <= $limite_kb * 1024){
  52.         $destino = $carpeta.$_FILES['imagen']['name'];
  53.         copy($_FILES['imagen']['tmp_name'],$destino);
  54.         $nombre = $_FILES['imagen']['name'];
  55.         $tamaño = $_FILES['imagen']['size'];
  56.            include_once("conexion.php");
  57.                    $producto=$_POST['producto'];
  58.                    $marca=$_POST['marca'];
  59.                    $descripcion=$_POST['descripcion'];
  60.                    $precio=$_POST['precio'];
  61.                    $cantidad=$_POST['cantidad'];
  62.                   // $nombre_archivo=$POST['imagen'];
  63.                    $query = "INSERT INTO productos (nombre,marca,descripcion,precio,cantidad,imagen)VALUES('$producto','$marca','$descripcion','$precio','$cantidad','$nombre')";       mysql_query($query) or die(mysql_error());
  64.        echo "El archivo ha sido registrado de manera satisfactoria.<br />";
  65.         }
  66. else{
  67. echo"La imagen supera el tamaño permitido a (".$limite_kb."kb)</br> o no es uno de los formatos no permitidos</br>intente nuevamente";}}
  68. ?>
  69.       </div>
  70.     <div id="tab2" class="tab_content">
  71.     <!--actualizar datos-->
  72.     </div>
  73.     <div id="tab3" class="tab_content">
  74.        
  75.     </div>
  76.    </div>
  77. </div>
  78. </body>
  79. </html>
  #4 (permalink)  
Antiguo 08/08/2013, 15:30
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Duda con mi código para cargar imagen con datos

Si te funciona, es más que suficiente.

Una última sugerencia, deberias considerar migrar a mysqli, ya que mysql esta obsoleto.
  #5 (permalink)  
Antiguo 08/08/2013, 15:44
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Duda con mi código para cargar imagen con datos

Ok, si avía escuchado el uso de mysqli pero la vrd apenas estoy aprendiendo a programar en php, solo que en realidad eso no se como hacerlo :P seria solo cambiar mi base de datos o seria cambiar algo en los codigos?

Etiquetas: formulario, html, mysql, registro, select, sql, tabla
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 12:06.