Foros del Web » Programando para Internet » PHP »

Ayuda Urgente con PHP UPLOAD.

Estas en el tema de Ayuda Urgente con PHP UPLOAD. en el foro de PHP en Foros del Web. Ayudar Urgente con PHP UPLOAD. Buenas tardes Estoy utilizando los archivos que coloco Cluster hace tiempo para realizar un upload a las base de datos ...
  #1 (permalink)  
Antiguo 05/04/2005, 18:33
 
Fecha de Ingreso: agosto-2003
Ubicación: Venezuela
Mensajes: 82
Antigüedad: 20 años, 7 meses
Puntos: 0
Ayuda Urgente con PHP UPLOAD.

Ayudar Urgente con PHP UPLOAD.

Buenas tardes Estoy utilizando los archivos que coloco Cluster hace tiempo para realizar un upload a las base de datos y me va de pelos.

Mi problema es el siguiente.

Estoy trabajando en un sitio web que consta de las siguientes tablas en una base de datos MySql.
1. Una tabla administrador para guardar información de los administradores del sitio.
2. Una tabla archivos donde estan almacenadas las imágenes. (la tabla del tutorial de CLUSTER.)
3. Una tabla llamada usuarios donde estan los datos de los usuarios que utilizarán los servicios del sitio Web.
4. Una tabla llamada venta_vehiculo donde los usuarios registrados pueden insertar datos de vehiculos que podrán ofertar en la página.

Bien lo que estoy haciendo actualmente es lo siguiente.

Inicialmente inserto los datos de los vehiculos que los usuarios desean vender

Código PHP:
<?php require_once('../../Connections/taxi.php'); ?>
<?php
//initialize the session
session_start();

function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $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 venta_vehiculo (titulo_venta, vendedor, Id_vendedor, detalles, foto, modelo, estatus) VALUES (%s, %s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['titulo_venta'], "text"),
                       
GetSQLValueString($_POST['vendedor'], "text"),
                       
GetSQLValueString($_POST['Id_vendedor'], "text"),
                       
GetSQLValueString($_POST['detalles'], "text"),
                       
GetSQLValueString($_POST['foto'], "text"),
                       
GetSQLValueString($_POST['modelo'], "text"),
                       
GetSQLValueString($_POST['estatus'], "text"));

  
mysql_select_db($database_taxi$taxi);
  
$Result1 mysql_query($insertSQL$taxi) or die(mysql_error());

  
$insertGoTo "insert_data_vehicle_ok.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));
}

$colname_taxi "1";
if (isset(
$_GET['Id'])) {
  
$colname_taxi = (get_magic_quotes_gpc()) ? $_GET['Id'] : addslashes($_GET['Id']);
}
mysql_select_db($database_taxi$taxi);
$query_taxi sprintf("SELECT * FROM usuarios WHERE Id = %s"$colname_taxi);
$taxi mysql_query($query_taxi$taxi) or die(mysql_error());
$row_taxi mysql_fetch_assoc($taxi);
$totalRows_taxi mysql_num_rows($taxi);
?>
Luego después de insertar caigo en una página donde la persona puede ver los datos insertados y agregar una imagen para el vehiculo si asi lo desea. (los datos del vehiculo estan insertados en una tabla y la imagen en otra)

Codigo Página verificar datos. (inserta_data_vehicle_ok.php)

Código PHP:
<?php require_once('../../Connections/taxi.php'); ?>
<?php
mysql_select_db
($database_taxi$taxi);
$query_taxi "SELECT * FROM venta_vehiculo ORDER BY id DESC";
$taxi mysql_query($query_taxi$taxi) or die(mysql_error());
$row_taxi mysql_fetch_assoc($taxi);
$totalRows_taxi mysql_num_rows($taxi);
?>
Aca empiezo a utilizar las páginas del Tutorial de Cluster

Pagina que recoge la imagen para insertar imagen al vehiculo. (formulario.php)

Código PHP:
<?php require_once('../Connections/taxi.php'); ?>
<?php
//initialize the session
session_start();

$colname_taxi "1";
if (isset(
$_SESSION['milogin'])) {
  
$colname_taxi = (get_magic_quotes_gpc()) ? $_SESSION['milogin'] : addslashes($_SESSION['milogin']);
}
mysql_select_db($database_taxi$taxi);
$query_taxi sprintf("SELECT * FROM usuarios WHERE usuario = '%s'"$colname_taxi);
$taxi mysql_query($query_taxi$taxi) or die(mysql_error());
$row_taxi mysql_fetch_assoc($taxi);
$totalRows_taxi mysql_num_rows($taxi);
?>
<HTML> 
<HEAD> 
<TITLE>Binario a BD</TITLE> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.Estilo1 {color: #FF0000}
-->
</style>
</HEAD>
<BODY>
<FORM enctype="multipart/form-data" method="post" action="insertar.php">
  <br>
  <br>
  <br>
  <br>
  <br>
  <br>
  <table width="400"  border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td>
        <?php 
if (isset($_GET['proceso'])){ 
echo 
$_GET['proceso']."<br>"

?>      </td>
      <td><span class="Estilo1"><?php echo $row_taxi['usuario']; ?></span></td>
    </tr>
    <tr>
      <td class="formularios1"><div align="right">Archivo:
            
    </div></td>
      <td width="279" class="formularios1"><input name="archivo" type="file" class="formularios" size="30"></td>
    </tr>
    <tr>
      <td colspan="2" class="formularios1"><div align="center">
        <INPUT name="submit" type="submit" class="formularios" value="Subir archivo">
      </div></td>
    </tr>
  </table>
</FORM>
</BODY> 
</HTML>
<?php
mysql_free_result
($taxi);
?>
Seguidamente el codigo de la pagina que inserta la informacion en la tabla archivos.
Codigo de la página Insertar.php
Código PHP:
<?php require_once('../Connections/taxi.php'); ?>
<?php
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre.  Si no fue asi, te remite de nuevo al formulario de inserción: 
// No se comprueba aqui si se ha subido correctamente. 
if (empty($_FILES['archivo']['name'])){ 
header("location: formulario.php?proceso=falta_indicar_fichero"); //o como se llame el formulario .. 
exit; 


//establece una conexión con la base de datos. 
$conexion mysql_connect("localhost","root","") or die("No se pudo realizar la conexion con el servidor."); 
mysql_select_db($database_taxi,$taxi) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca. 

// archivo temporal (ruta y nombre). 
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ; 

// leer del archvio temporal .. el binario subido. 
// "rb" para Windows .. Linux parece q con "r" sobra ... 
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"rb"), filesize($binario_nombre_temporal))); 

// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo. 
$binario_nombre=$_FILES['archivo']['name']; 
$binario_peso=$_FILES['archivo']['size']; 
$binario_tipo=$_FILES['archivo']['type']; 
 
//insertamos los datos en la BD. 
$consulta_insertar "INSERT INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')"
mysql_query($consulta_insertar,$taxi) or die("No se pudo insertar los datos en la base de datos."); 
header("location: listar_imagenes.php");  // si ha ido todo bien 
exit; 
?> 
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
</body>
</html>
<?php
mysql_free_result
($taxi);
?>
Ok ahora bien que es lo que realmente quiero hacer?

1. Necesito pirmordialmente recuperar el ID del usuario que está insertando los datos del vehiculo, datos que estan almacenado en la tabla llamada venta_vehiculo
2. Una vez recuperado este ID de “vendedor”, necesito insertarlo de alguna forma en la tabla archivos de la base de datos, puede ser en un campo llamado Id_vendedor, no importa.

Agradezco cualquier ayuda tengo casi 2 semanas pega´o con esto no tengo mucho conocimiento de código PHP y logicamente no domino mucho esto y necesito entregar el sitio pronto.
__________________
Stand Tall and Shake the Heavens!!
http://www.sprache-language-venezuela.c-f-h.net
  #2 (permalink)  
Antiguo 06/04/2005, 11:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
1) Podrías aislar el código que corresponde a lo que mencionas. También ayudaría la estructuras de tus tablas implicadas (no sólo el "código" SQL que usas para consultarlas donde no se ven nombres de campos ni relaciones que puedan tener estos .. Es importante que las describas para comprender algo mejor que intentas hacer).


2) Así debe ser .. necesitas un campo que relacione esas imagenes con lo que corresponda . .Yo diría que es sobre el "id" de tu tabla de "venta_vehiculo" .. ya que son las imagenes de ese vehiculo .. Pero bueno, eso lo conoceras tu mejor que nosotros a quien relacionar el dato.

Si creo que lo que quieres hacer es que despues de un INSERT .. obtener ese ID de la tabla generado (del campo autonumérico que destines para tal fin) .. entonces te haría falta usar la función:

mysql_insert_id()
www.php.net/mysql_insert_id

Por otro lado .. si tienes una situación tipo:

formulario1 -> script1 (obtiene un dato) de este saltas a -> script2 .. aquí necesitas el dato del formulario 1 .. pero lo "perdistes" por el camino.

En este caso tienes que propagar el dato que requieras como una variable más .. no sé si por el URL o en un campo hidden de un formulario. Parece que en tu caso usas un formulario (en formulario.php) .. de ahí llegas por otro formulario y proceso donde tenías un tal "$_POST['Id_vendedor']" .. si es eso .. podrías propagar en tu formulario.php el dato hacia donde tenga que ir posteriormente como una variable más pero "hidden" (oculta) en tu formulario:

Código PHP:
<input type="hidden" name="Id_vendedor" value="<? echo $_POST['id_vendedor'?>">
También podrías usar sesiones o cookies .. más seguro esto (sobre todo sesiones) que propagarlo por el URL donde puede ser "alterado" el dato "maliciosamente" y probocar errores o inconsistencias en tu BD.

Un saludo,
  #3 (permalink)  
Antiguo 11/04/2005, 16:41
 
Fecha de Ingreso: agosto-2003
Ubicación: Venezuela
Mensajes: 82
Antigüedad: 20 años, 7 meses
Puntos: 0
Cluster, no me di mala vida,simplemente modifique mi pagina insertar.php y agregue los campos que necesitaba insertar en la base de datos. Fuanciona a la perfeccion

ahora ne gustaria saber como hago para recuperar estos datos de la base de datos y actualizarlos, sabes he aprendido con esta experiencia que dreamweaver apesta a la hora de trabajar con codigo brother.

Bueno la cuestion es asi. Necesito recuperar los registros pero no todos solo necesito recuperar uno solo de todos los que estan, pero si me pones dreamweaver lo puedo hacer pero como tu tutorial se basa en puro codigo me raspas, no tengo problema.
Bueno espero me puedas ayudar
__________________
Stand Tall and Shake the Heavens!!
http://www.sprache-language-venezuela.c-f-h.net
  #4 (permalink)  
Antiguo 12/04/2005, 08:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno, en mi mensaje anterior te hacía algunas peticiones de cosas y aclarar otras para llegar a dar alguna respuesta algo más acertada ..

De momento sólo te puedo recomendar que visites el manual oficial de PHP sobre "funciones para trabajar con Mysql" para que veas como hacer consultas a tu BD y así obtener los campos que requieras de las tablas que requieras bajo los critérios que definas:

www.php.net/mysql

Pero esto por sí sólo no sirve de nada si no conoces un "mínimo" de SQL (Lenguaje estructurado de consultas) para saber como "consultar" tu BD para así obtener los campos que requieras de las tablas implicadas. Para esto puedes ver los tutoriales de:

www.mysql-hispano.com

El tutorial que vistes .. debes comprender que sólo explica con ejemplo como trabajar con "archivos binarios" en una BD (Mysql en ese caso) .. que es una de las Dos técnicas principales que hay para trabajar ese tema concreto .. El resto .. de como "relacionarlo" con más datos .. como lo has hecho tu simplemente "añadiendo campos" cuando lo más optimo sería crear otro tipo de relaciones (normalización) .. son temas que no puede tratar un tutorial de esas características. Por eso te "aconsejo" otro tipo de tutoriales sobre Base de datos principalmente para que "diseñes" tu "modelo" de datos más optimo para tu caso y puedas oprovechar esas técnicas si las deseas usar.

Un saludo,
  #5 (permalink)  
Antiguo 14/04/2005, 16:34
 
Fecha de Ingreso: agosto-2003
Ubicación: Venezuela
Mensajes: 82
Antigüedad: 20 años, 7 meses
Puntos: 0
Ok gracias Cluster, eres muy amable brother. Me gustaria saber otra cosa mas a ver si me puedes iluminar un poco.

Supongamos que necesito actualizar los datos del registro que acabo de insertar en la base de datos incluyendo la imagen, esa informacion tambien la puedo conseguir en mysql-hispano?.

Yo he estado intentando hacer mi propio script para actualizar los datos, pero me resulta complicado, especificamente la parte en la cual debo actualizar los datos relacionados con la imagen, ya que por ejemplo la información de tamaño, tipo y nombre la obtienes de alguna manera de la misma imagen, como te habia explicado anteriormente he aprendido a trabajar este lenguaje con dreamweaver, que me lo pone todo fácil, pero lamentablemente los codigos que haz utilizado para separar estos datos de la misma imagen me parecen imcomprensibles (logicamente no los he aprendido).
Bueno Cluster gracias por la ayuda y los consejos brother, seguiré intentando.
__________________
Stand Tall and Shake the Heavens!!
http://www.sprache-language-venezuela.c-f-h.net
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 20:09.