Foros del Web » Programando para Internet » PHP »

uploader multiple

Estas en el tema de uploader multiple en el foro de PHP en Foros del Web. Hola buenos dias, tengo un problema busque la forma de que se desplieguen varios campos de archivos los que sean necesarios para subir las imagenes ...
  #1 (permalink)  
Antiguo 05/11/2008, 09:51
rpm
 
Fecha de Ingreso: septiembre-2008
Ubicación: Estado de México
Mensajes: 84
Antigüedad: 15 años, 7 meses
Puntos: 1
uploader multiple

Hola buenos dias, tengo un problema busque la forma de que se desplieguen varios campos de archivos los que sean necesarios para subir las imagenes de cada producto, ya lo tengo pero al momento que quiero hacer la insercion a la base de datos, no me hace nada, estoy mandadno llamar al areglo pero no lo consigo, me podrian ayudar dejo el codigo para que me entiendan mejor. Gracias.


<script type="text/javascript">
var numero = 0; //Esta es una variable de control para mantener nombres

evento = function (evt) {
return (!evt) ? event : evt;
}

addCampo = function () {

nDiv = document.createElement('div');

nDiv.className = 'archivo';

nDiv.id = 'file' + (++numero);

nCampo = document.createElement('input');

nCampo.name = 'archivos[]';

nCampo.type = 'file';

a = document.createElement('a');

a.name = nDiv.id;

a.href = '#';

a.onclick = elimCamp;

a.innerHTML = 'Eliminar';

nDiv.appendChild(nCampo);

nDiv.appendChild(a);

container = document.getElementById('adjuntos');
container.appendChild(nDiv);
}

elimCamp = function (evt){
evt = evento(evt);
nCampo = rObj(evt);
div = document.getElementById(nCampo.name);
div.parentNode.removeChild(div);
}

rObj = function (evt) {
return evt.srcElement ? evt.srcElement : evt.target;
}
</script>

<form action="actualizacion_prueba.php" method="post" enctype="multipart/form-data" name="frmempleado" id="frmempleado">

<input name="clientesID3" type="hidden" value="<?php echo $idemp; ?>" />
ADD PRODUCT</p>


</p>
<dl>
<dt>
<label>Add to picture</label>
</dt>

<dd>
<div id="adjuntos">

<input type="file" name="archivos[]" />
<br />
</div>
</dd>
<dt><a href="#" onclick="addCampo()">Add more picture</a></dt>

</tr>

</table>
<input type="submit" name="enviar" value="Save" id="enviar" />


</tr>
</form>





-------------------------------insercion.php------------------------------------------------------

<?php
$bd_host = "x";
$bd_usuario = "x";
$bd_password = "x";
$bd_base = "x";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);



if (isset($_POST['enviar'])) {
$idemp=$_POST['clientesID3'];
$upload_dir = 'archivos/';
$upload_file = $upload_dir . $_FILES['archivos']['name'] ;
if (isset ($_FILES["archivos"])) {
$tot = count($_FILES["archivos"]["name"]);
for ($i = 0; $i < $tot; $i++){
$name = $_FILES["archivos"]["name"][$i];


if (move_uploaded_file($_FILES['archivos']['tmp_name'], $upload_file)) {

// La imagen se subio correctamente, entonces ingresamos los datos en la db

$query = "insert into imagenes(nombre) values('archivos/$name')";
mysql_query($query,$con);



} else {
Algun error al subir la imagen
}
$nom=$_POST['nombre'];
$clas=$_POST['clasificacion'];
$vendedor=$_POST['vendedor'];
$sup=$_POST['supervisa'];
$com=$_POST['comentarios'];
$est=$_POST['estatus'];



//actualiza los datos del empleados
$sql="insert into productos(clientesId,nombre,clasificacion,vendedor ,supervisa,comentarios,estatus)values('$idemp','$n ombre', '$clas','$vendedor','$supervisa','$comentarios','$ est')";
mysql_query($sql,$con);

?>

Edite el dogigo dejando todo lo necesario creo, mucha gracias
  #2 (permalink)  
Antiguo 05/11/2008, 09:54
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: uploader multiple

haber:
1. no especificas cual es el error.
2. no pongas tanto codigo, solo lo necesario (los foreros no tenemos tiempo de estar leyendo todo, solucionamos problemas no solucionamos todo el trabajo).
3. y ultimo, casi todo es tema de javascript (anda al foro correspondiente y te ayudaran mejor).


Dios te Bendiga.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #3 (permalink)  
Antiguo 05/11/2008, 09:59
rpm
 
Fecha de Ingreso: septiembre-2008
Ubicación: Estado de México
Mensajes: 84
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: uploader multiple

Muchas gracias por responder, te agradezco tomarte el timepo de contestar pero no quiero que realices el trabajo, si te das cuenta el trabajo ya esta hecho, puse el codigopara referenciar y creo que si correspode a php por que lo que no hace es lo de la codificacion de php, java no tiene problema, de antemano muchas gracias
  #4 (permalink)  
Antiguo 05/11/2008, 10:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: uploader multiple

Hola rpm,

Si ya nombras tus campos como un arreglo, porque no lo usas así en tu PHP?, Revisa las FAQs esta explicado como hacer envios multiples, los indices se hacen en arreglos, por ejemplo $_FILES['archivos']['name'][0], $_FILES['archivos']['name'][1], $_FILES['archivos']['name'][2], etc..

y así por cada indice, es decir por cada ['tmp_name'], ['type'], ['size'].

Saludos.
  #5 (permalink)  
Antiguo 05/11/2008, 10:21
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: uploader multiple

asi como haces esto:
$name = $_FILES["archivos"]["name"][$i];

has igual no??
if (move_uploaded_file($_FILES['archivos']['tmp_name'][$i], $upload_file)) {

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #6 (permalink)  
Antiguo 05/11/2008, 17:03
rpm
 
Fecha de Ingreso: septiembre-2008
Ubicación: Estado de México
Mensajes: 84
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: uploader multiple

Muchas gracias por sus respuestas, este es el codigo final ya esta funcionando,por si a alguien le sirve. Saludos

if (isset ($_FILES["archivos"])) {
$idemp=$_POST['clientesID3'];
$tot = count($_FILES["archivos"]["name"]);
;
print_r($_FILES);

for ($i = 0; $i < $tot; $i++){
if(is_uploaded_file($_FILES["archivos"]["tmp_name"][$i])){
$ruta= 'archivos/'.$_FILES["archivos"]["name"][$i];
if(move_uploaded_file($_FILES["archivos"]["tmp_name"][$i],$ruta)){
$query = "insert into imagenes(productoId,clientesId,nombre) values('$prod','$idemp','$ruta')";
mysql_query($query,$con);


}else{
echo "error";
}
  #7 (permalink)  
Antiguo 06/11/2008, 10:16
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Respuesta: uploader multiple

Aqui esta la solucion espero que les sirva..
---------------------------------SQL-----------------------------------------

CREATE TABLE `encuestas` (
`id_enc` int(11) NOT NULL auto_increment,
`pregunta` char(50) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id_enc`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

CREATE TABLE `encuestas_opt` (
`id_opt` int(11) NOT NULL auto_increment,
`opciones` char(50) collate latin1_general_ci NOT NULL,
`num_votos` int(3) NOT NULL,
`id_enc` int(11) NOT NULL,
PRIMARY KEY (`id_opt`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

---------------------------------SQL----------------------------------------------

Código PHP:


<?php
    mysql_connect
('localhost','root','');
    
mysql_select_db('pruebas');
 
?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
 <head>
 <title>Encuestas</title>
 <meta name="distribution" content="global" />
 <meta name="robots" content="all" />
 <style type="text/css">
 body {
     font-family: 'Trebuchet MS', Verdana, Arial, Helvetica, sans-serif; /* Tahoma,Verdana, sans-serif*/
     Font-size: 10pt;
     background: #fff;
     padding: 0;
     margin: 0;
 }
 a.link {
     color: #0066cc;
     text-decoration: none;
 }
 a.link:hover {
     text-decoration: underline;
 }
 .file {
     display: block;
 }
 label {
     display: block;
 }
 span a {
     margin-left: 1em;
 }
 </style>
 <script type="text/javascript">
 var numero = 0;
 
 // Funciones comunes
 c = function (tag) { // Crea un elemento
    return document.createElement(tag);
 }
 d = function (id) { // Retorna un elemento en base al id
    return document.getElementById(id);
 }
 e = function (evt) { // Retorna el evento
    return (!evt) ? event : evt;
 }
 f = function (evt) { // Retorna el objeto que genera el evento
    return evt.srcElement ?  evt.srcElement : evt.target;
 }
 
 addField = function () {
    container = d('files');
    
    span = c('SPAN');
    span.className = 'file';
    span.id = 'file' + (++numero);
 
    field = c('INPUT');   
    field.name = 'opciones[]';
    field.type = 'text';
    
    a = c('A');
    a.name = span.id;
    a.href = '#';
    a.onclick = removeField;
    a.innerHTML = 'Quitar';
 
    span.appendChild(field);
    span.appendChild(a);
    container.appendChild(span);
 }
 removeField = function (evt) {
    lnk = f(e(evt));
    span = d(lnk.name);
    span.parentNode.removeChild(span);
 }
 </script>
 </head>
 <body>
    <?php
         
//Preguntamos si nuetro arreglo 'archivos' fue definido
         
if(isset($_POST['enviar']))
  {
             if(
$_POST['pregunta'] == ''
  {
    echo 
"No has ingresado la pregunta de la encuesta. <a class='link' href='javascript:history.back()'>Regresar</a>";
             }

  else {
                 
$pregunta strip_tags($_POST['pregunta']);

                 
mysql_query("INSERT INTO encuestas (pregunta) VALUES('".$pregunta."')");

                 
$id_enc mysql_insert_id();
                 
$cont '0';
                 
$cant count($_POST['opciones']);

while(
$cont $cant)
{
                      
// $opciones = $opciones["$cont"];
 
$sql mysql_query("INSERT INTO encuestas_opt (opciones, id_enc) VALUES ('".$_POST['opciones'][$cont]."', '".$id_enc."')");
                       
$cont++;
                 }
                 echo 
"exito";
             }
         }else {
     
?>
     <form name="frm" id="frm" method="post">
         <label>T&iacute;tulo de la encuesta:</label>
         <input type="text" name="pregunta" size="30" /><br />
         <label>Opciones:</label>
         <a class="link" href="#" onclick="addField()" accesskey="5">Añadir opciones</a>
         <div id="files"></div>
         <input type="submit" value="Guardar datos" id="envia" name="enviar" />
     </form>
     <?php
         
}
     
?>
 </body>
 </html>
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
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 00:29.