Foros del Web » Programando para Internet » PHP »

codigo para enviar archibo a remoto y a base de datos ????

Estas en el tema de codigo para enviar archibo a remoto y a base de datos ???? en el foro de PHP en Foros del Web. hay algun script para poder subir archibo ( el usuario ) pero se dirigan por un lado a una carpeta remota y tambien a la ...
  #1 (permalink)  
Antiguo 19/06/2008, 09:48
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
codigo para enviar archibo a remoto y a base de datos ????

hay algun script para poder subir archibo ( el usuario ) pero se dirigan por un lado a una carpeta remota y tambien a la Base de Datos a un campo especifica ?????
  #2 (permalink)  
Antiguo 19/06/2008, 10:28
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años
Puntos: 7
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

tendrias que hacer algo como

archivo que recibe post:

Cita:
<?php
//como te conectas a la BBDD
include("conexion.php");
//aqui es extraes algo del formulario
$enBBDD=$_POST["el_tuyo"];
//obtienes los datos del archivo
$nombre_archivo = $HTTP_POST_FILES['file']['name'];
$tipo_archivo = $HTTP_POST_FILES['file']['type'];
$tmp_nombre=$HTTP_POST_FILES['file']['tmp_name'];

$arch=$nombre_archivo;
//aqui carpeta es la ruta donde quedará el archivo
$destino="../carpeta/$arch";
//deves poner condiciones para el tipo de archivo el peso etc..
//luego
if (move_uploaded_file($tmp_nombre,$destino))
{
//generas consulta si se sube archivo
//guardas el enBBDD como comentario y el nombre del archivo
//aqui puedes incluir medidas de seguridad para que no los guarde si ya se encuentra en la BBDD etc..
$cons="INSERT INTO Tabla (comentario,archivo) Values('$enBBDD','$arch')";
mysql_query($cons) ;
mysql_close(conexion);
}
else
{
echo"No se pudo subir el archivo";
}
?>
*Este es solo un ejemplo, deves perfeccionarlo un poco para que ande sin problemas.
*Espero te sirva de guia al menos...
  #3 (permalink)  
Antiguo 19/06/2008, 10:36
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

tengo este codigo para enviar nombre de foto a la Base de Datos, y me sube el archibo a la DB, pero quiero que me suba a una Tabla y Campo determinado ya que el usuarioa habia enviado un formulario anteriormente:

<?php
$conexion = mysql_connect("localhost","root","") or die('Error mysql: '.mysql_error());
mysql_select_db("mi sitio");
$nombre = time() . strtr($_FILES['archivo']['name'], "ñ'ÁÉÍÓÚÀÈÌÒÙáéíóúäëïöüàèìòù123456789012345678 90", "n-AEIOUAEIOUaeiouaeiouaeiou");
if(mysql_query("INSERT INTO fotos (foto) VALUES ('$nombre')")){
echo 'Se ha subido la imagen a la base de datos';
}else{
echo 'Error al subir el nombre de imagen a la base de datos: '.mysql_error();
} ?>




Como puedo hacerlo ???
  #4 (permalink)  
Antiguo 19/06/2008, 12:13
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años
Puntos: 7
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

NO te entiendo bien .
Acado quieres Modificar (actualizar) una registro de la tabla que ya a sigo creado
  #5 (permalink)  
Antiguo 19/06/2008, 14:35
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

asi es , mas o menos, de un registro ya creado( ya existente) , poder colocar automáticamente el nombre de la fotos enviada mediante el POST .
  #6 (permalink)  
Antiguo 19/06/2008, 14:51
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

Hola

Mirate este post a ver si te sirve.

http://www.forosdelweb.com/f18/aport...te-1-a-561439/
  #7 (permalink)  
Antiguo 19/06/2008, 15:19
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

es un aporte muy interesante y bueno, pero, no hace lo que yo quiero, en el aporte, lo que hace es ingresar datos ( nombre de la foto enviada ) a un campo de la Base de Datospero en un registro nuebo, pero yo quiero que lo haga en un campo especifico de un registro ya creado anteriormente donde un campo esta vacio" nulo" .

No se si me explico bien...
  #8 (permalink)  
Antiguo 19/06/2008, 15:41
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

pues se hace con con un UPDATE a la BBDD idicando el campo a actualizar.

Un saludo
  #9 (permalink)  
Antiguo 19/06/2008, 15:54
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

como se hace eso ???

yo lo coloco asi

if(mysql_query("INSERT INTO fotos (foto) VALUES ('$nombre')")){
echo 'Se ha subido la imagen a la base de datos';
}else{
echo 'Error al subir el nombre de imagen a la base de datos: '.mysql_error();
} ?>


, pero no se como especificar que registro es el que tiene que colocar el archibo:
  #10 (permalink)  
Antiguo 19/06/2008, 15:57
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

Dame mas info, y el proceso completo, has cer hacer un UPDATE a la BBDD pero diciendole donde lo ha de insertar, en que campo de quien o de que id donde estan insertados los datos del user.

Un saludo
  #11 (permalink)  
Antiguo 19/06/2008, 16:09
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

este es el codigo del proceso que mi web guia al usuario para enviar archibo(foto):

este es el form( formulario)
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO fotos (nombre, usuario, lugarfoto, descripcion, foto) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString($_POST['nombre'], "text"),
GetSQLValueString($_POST['usuario'], "text"),
GetSQLValueString($_POST['lugarfoto'], "text"),
GetSQLValueString($_POST['descripcion'], "text"),
GetSQLValueString($_POST['foto'], "text"));

mysql_select_db($database_misitio, $misitio);
$Result1 = mysql_query($insertSQL, $misitio) or die(mysql_error());

$insertGoTo = "enviar-fotos-paso2_personal_restringido.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
--------------------------------------------------etc------

<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
<table align="center">
<tr valign="baseline">
<td nowrap align="right">Nombre:</td>
<td><input type="text" name="nombre" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Usuario:</td>
<td><input type="text" name="usuario" value="<?php echo $_SESSION['MM_Username']; ?>" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Lugarfoto:</td>
<td><input type="text" name="lugarfoto" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Descripcion:</td>
<td><input type="text" name="descripcion" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">&nbsp;</td>
<td><input type="submit" value="Insertar registro"></td>
</tr>
</table>
<input type="hidden" name="foto" value="">
<input type="hidden" name="MM_insert" value="form1">
</form>

este es la carga del archibo:


<form action="subir_archivo_personal-restringido.php" method="POST" enctype="multipart/form-data" name="form1">
<p align="center">
<input name="archivo" type="file" id="archivo" onMouseOver="MM_showHideLayers('Layer11','','show' );MM_showHideLayers('Layer11','','show')" value="" size="32" />
<input type="submit" name="Submit" value="Enviar" />
</p>
<div class="Estilo83" id="Layer11" onfocus="MM_showHideLayers('Layer11','','show')">< span class="Estilo85">Los nombres de los archivos deben constar de letras y numero tansolo.</span> <span class="Estilo73 Estilo84">El archibo o foto que vas a enviar no puede tener caracteres especiales ( no reconoce los signos &quot;()!?&iquest;_-&amp;%$ entre otros, ) </span></div>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">
<label>nombre
<input type="text" name="textfield" />
</label>
</p>
<p align="center" class="Estilo79">LAS FOTOS NO PUEDEN SER DE MAS DE 1 MEGA DE PESO Y DIMENSIONES DE 1000*800 maximo </p>
<p align="center" class="Estilo79"> (si quereis enviar fotos con mas capacidad, enviarmela por e-mail, yo me ocupare de colocarla en la web)</p>
<p align="center">&nbsp; </p>
<p align="center">
<input name="radiobutton" type="radio" value="radiobutton" checked>
Enviando la foto nos das permiso para que podamos publicar la imagen<em><strong> en nuestra web</strong></em>. </p>
<p align="center">
<label></label>
<label></label>
&nbsp;</p>
</form>

este es el codigo de subir archibo:

<?php
// Configurar las dos lineas siguientes
mysql_connect("localhost","root","");
mysql_select_db("mibase");
$nombre = time() . strtr($_FILES['archivo']['name'], "ñ'ÁÉÍÓÚÀÈÌÒÙáéíóúäëïöüàèìòù123456789012345678 90", "n-AEIOUAEIOUaeiouaeiouaeiou");
mysql_query("UPDATE fotos SET foto = '$nombre' WHERE nombre_user = '$user')");
?>
Se ha subido la imagen a la base de datos
<?php
$directorio_archivo = "./subir-fotos-personal/"; // tipo /home/user/public_html/archivos/
$nombre = time() . strtr($_FILES['archivo']['name'], "ñ'ÁÉÍÓÚÀÈÌÒÙáéíóúäëïöüàèìòù123456789012345678 90", "n-AEIOUAEIOUaeiouaeiouaeiou");
$tamanio = $_FILES['archivo']['size'];
$tipo = $_FILES['archivo']['type'];
if(!is_file($directorio_archivo.$nombre)) {
copy($_FILES['archivo']['tmp_name'], $directorio_archivo.$nombre);
echo "Click en el siguiente enlace para finalizar el envio de tu foto <br>";
}
else echo "Este nombre de archibo ya existe.Ya existe una foto con ese nombre.Cambia el nombre del archibo para poder enviar la foto.Gracias.";
?>


La composicion de la Base de Datos es:

Nombre Base de datos: mibase
Tabla: fotos
Campos: fotosid(integro, autoincrement, not nul)
nombre(vanchar, not nul)
usuario(vanchar, not nul)
lugarfoto(vanchar, not nul)
descripcion(vanchar, noto nul)
foto(vanchar,nul)
  #12 (permalink)  
Antiguo 19/06/2008, 16:19
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

si te estas por aqui te miro el code y lo intentamos
  #13 (permalink)  
Antiguo 19/06/2008, 16:33
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

Intentalo a si, fijate en las cosas que cambie o agregue de tu code, estan comentadas.



<?php
session_start ();//abrimos una sesion

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO fotos (nombre, usuario, lugarfoto, descripcion, foto) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString($_POST['nombre'], "text"),
GetSQLValueString($_POST['usuario'], "text"),
GetSQLValueString($_POST['lugarfoto'], "text"),
GetSQLValueString($_POST['descripcion'], "text"),
GetSQLValueString($_POST['foto'], "text"));

mysql_select_db($database_misitio, $misitio);
$Result1 = mysql_query($insertSQL, $misitio) or die(mysql_error());

$id_ultimo = mysql_insert_id(); //recogemos la id del ultimo insert, el de arriba
$_SESSION['id'] = $id_ultimo; // guardamos la variable id en una variable de sesion

$insertGoTo = "enviar-fotos-paso2_personal_restringido.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
--------------------------------------------------etc------

<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
<table align="center">
<tr valign="baseline">
<td nowrap align="right">Nombre:</td>
<td><input type="text" name="nombre" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Usuario:</td>
<td><input type="text" name="usuario" value="<?php echo $_SESSION['MM_Username']; ?>" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Lugarfoto:</td>
<td><input type="text" name="lugarfoto" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Descripcion:</td>
<td><input type="text" name="descripcion" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">&nbsp;</td>
<td><input type="submit" value="Insertar registro"></td>
</tr>
</table>
<input type="hidden" name="foto" value="">
<input type="hidden" name="MM_insert" value="form1">
</form>

este es la carga del archibo:


<form action="subir_archivo_personal-restringido.php" method="POST" enctype="multipart/form-data" name="form1">
<p align="center">
<input name="archivo" type="file" id="archivo" onMouseOver="MM_showHideLayers('Layer11','','show' );MM_showHideLayers('Layer11','','show')" value="" size="32" />
<input type="submit" name="Submit" value="Enviar" />
</p>
<div class="Estilo83" id="Layer11" onfocus="MM_showHideLayers('Layer11','','show')">< span class="Estilo85">Los nombres de los archivos deben constar de letras y numero tansolo.</span> <span class="Estilo73 Estilo84">El archibo o foto que vas a enviar no puede tener caracteres especiales ( no reconoce los signos &quot;()!?&iquest;_-&amp;%$ entre otros, ) </span></div>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">
<label>nombre
<input type="text" name="textfield" />
</label>
</p>
<p align="center" class="Estilo79">LAS FOTOS NO PUEDEN SER DE MAS DE 1 MEGA DE PESO Y DIMENSIONES DE 1000*800 maximo </p>
<p align="center" class="Estilo79"> (si quereis enviar fotos con mas capacidad, enviarmela por e-mail, yo me ocupare de colocarla en la web)</p>
<p align="center">&nbsp; </p>
<p align="center">
<input name="radiobutton" type="radio" value="radiobutton" checked>
Enviando la foto nos das permiso para que podamos publicar la imagen<em><strong> en nuestra web</strong></em>. </p>
<p align="center">
<label></label>
<label></label>
&nbsp;</p>
</form>

este es el codigo de subir archibo:

<?php
// Configurar las dos lineas siguientes
mysql_connect("localhost","root","");
mysql_select_db("mibase");
$nombre = time() . strtr($_FILES['archivo']['name'], "ñ'ÁÉÍÓÚÀÈÌÒÙáéíóúäëïöüàèìòù123456789012345678 90", "n-AEIOUAEIOUaeiouaeiouaeiou");


?>

Se ha subido la imagen a la base de datos


<?php
session_start();//abrimos sesion

$directorio_archivo = "./subir-fotos-personal/"; // tipo /home/user/public_html/archivos/
$nombre = time() . strtr($_FILES['archivo']['name'], "ñ'ÁÉÍÓÚÀÈÌÒÙáéíóúäëïöüàèìòù123456789012345678 90", "n-AEIOUAEIOUaeiouaeiouaeiou");
$tamanio = $_FILES['archivo']['size'];
$tipo = $_FILES['archivo']['type'];
if(!is_file($directorio_archivo.$nombre)) {
copy($_FILES['archivo']['tmp_name'], $directorio_archivo.$nombre);

//hacemos el update a la BBDD
//recuperamos la variable de sesion
$id = $_SESSION['id'];
$res = mysql_query("UPDATE fotos SET foto = '$nombre' WHERE fotosid = '$id')");
$Res = mysql_query($res, $misitio) or die(mysql_error());


echo "Click en el siguiente enlace para finalizar el envio de tu foto <br>";
}
else echo "Este nombre de archibo ya existe.Ya existe una foto con ese nombre.Cambia el nombre del archibo para poder enviar la foto.Gracias.";
?>


La composicion de la Base de Datos es:

Nombre Base de datos: mibase
Tabla: fotos
Campos: fotosid(integro, autoincrement, not nul)
nombre(vanchar, not nul)
usuario(vanchar, not nul)
lugarfoto(vanchar, not nul)
descripcion(vanchar, noto nul)
foto(vanchar,nul)
  #14 (permalink)  
Antiguo 20/06/2008, 02:02
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

Me sale el siguiente error:

Se ha subido la imagen a la base de datos You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

De todas formas, me sube la informacion del form a la Base de Datos a un registro y la foto a otro registro, no me la coloca en el registro del formulario.

Última edición por jonysi_d; 20/06/2008 a las 02:08
  #15 (permalink)  
Antiguo 20/06/2008, 10:55
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: codigo para enviar archibo a remoto y a base de datos ????

jaronu, ya esta solucionado, con el tuyo, me salia error, pero ya lo he encontrado, era en la sintaxi de una de tus aportaciones:

$res = mysql_query("UPDATE fotos SET foto = '$nombre' WHERE fotoid = $id");

sin las ' '

muchas gracias, mne has sido de gran ayuda, sin ti no lo hubiera conseguido
Muchas gracias....
teneis un magnifico foro con buenos profesionales.
Gracias...
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 09:56.